]> code.ossystems Code Review - openembedded-core.git/blob
c92b58609c86802c22d17ebe17749905995ad7b3
[openembedded-core.git] /
1 From ea8c7b3efce4c1762411e073893e948de5d552d6 Mon Sep 17 00:00:00 2001
2 From: Ross Burton <ross.burton@intel.com>
3 Date: Tue, 17 Jul 2012 16:04:12 +0100
4 Subject: [PATCH] storage: check that the string isn't empty before splitting
5
6 If the string was non-NULL but empty (str="\0"), the following \0 assignment
7 would write to str[-1] and thus cause memory corruption.
8
9 On PPC and MIPS, this was causing crashes in glibc.
10
11 Signed-off-by: Ross Burton <ross.burton@intel.com>
12 Upstream-Status: Submitted
13  
14 ---
15  src/storage.c |    6 +++++-
16  1 file changed, 5 insertions(+), 1 deletion(-)
17
18 diff --git a/src/storage.c b/src/storage.c
19 index 47bd0cb..20766a3 100644
20 --- a/src/storage.c
21 +++ b/src/storage.c
22 @@ -212,7 +212,11 @@ gchar **connman_storage_get_services()
23         closedir(dir);
24  
25         str = g_string_free(result, FALSE);
26 -       if (str) {
27 +       if (str && str[0] != '\0') {
28 +               /*
29 +                * Remove the trailing separator so that services doesn't end up
30 +                * with an empty element.
31 +                */
32                 str[strlen(str) - 1] = '\0';
33                 services = g_strsplit(str, "/", -1);
34         }
35 -- 
36 1.7.10.4
37