OSDN Git Service

Avoid segfaults if properties are not initialized
authorPavel Chupin <pavel.v.chupin@intel.com>
Fri, 9 Aug 2013 15:17:55 +0000 (19:17 +0400)
committerPavel Chupin <pavel.v.chupin@intel.com>
Tue, 3 Sep 2013 09:27:09 +0000 (13:27 +0400)
Null or constant dereferencing occurs if properties are not initialized.
On Android devices it shouldn't happen but can be faced if testing bionic
libc.so on Linux host.

Change-Id: I8f047cbe17d0e7bcde40ace000a8aa53789c16cb
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
libc/bionic/system_properties.c

index 4c2e5a2..fd56431 100644 (file)
@@ -325,6 +325,8 @@ static void *to_prop_obj(prop_off_t off)
 {
     if (off > pa_data_size)
         return NULL;
+    if (!__system_property_area__)
+        return NULL;
 
     return __system_property_area__->data + off;
 }
@@ -384,6 +386,8 @@ static const prop_info *find_property(prop_bt *trie, const char *name,
 {
     const char *remaining_name = name;
 
+    if (!trie) return NULL;
+
     while (true) {
         char *sep = strchr(remaining_name, '.');
         bool want_subtree = (sep != NULL);