Fixed segment fault error on arch64 97/60797/1
authorshingil.kang <shingil.kang@samsung.com>
Wed, 2 Mar 2016 08:49:28 +0000 (17:49 +0900)
committershingil.kang <shingil.kang@samsung.com>
Wed, 2 Mar 2016 08:49:28 +0000 (17:49 +0900)
Change-Id: Idbc8006317e121ebd884642a06c3cd03a9811b63
Signed-off-by: shingil.kang <shingil.kang@samsung.com>
packaging/sdbd.spec
src/services.c

index 4294dc8df19f1ab1b21d55398d4f5392934ea053..dc6d0833a871aef7f1b897617e0fcaa8b2dc2eb7 100644 (file)
@@ -2,7 +2,7 @@
 
 Name:       sdbd
 Summary:    SDB daemon
-Version:    3.0.2
+Version:    3.0.3
 Release:    0
 License:    Apache-2.0
 Summary:    SDB daemon
index e845e4ffb73011e194f9e86519cdf50743c9164a..f5c62f3ca4b0d4480378570e650def35b643f5b3 100644 (file)
@@ -529,6 +529,7 @@ static void get_env(char *key, char **env)
         s = buf;
         e = buf + (strlen(buf) - 1);
 
+        // trim string
         while(*e == ' ' ||  *e == '\n' || *e == '\t') {
             e--;
         }
@@ -538,6 +539,7 @@ static void get_env(char *key, char **env)
             s++;
         }
 
+        // skip comment or null string
         if (*s == '#' || *s == '\0') {
             continue;
         }
@@ -545,7 +547,7 @@ static void get_env(char *key, char **env)
         *value++ = '\0';
 
         if(!strcmp(buf, key)) {
-            *env = value;
+            *env = strdup(value);
             break;
         }
     }
@@ -596,8 +598,10 @@ static int create_subproc_thread(const char *name, int lines, int columns)
             envp[3] = path;
             free(trim_value);
         } else {
-            envp[3] = value;
+            snprintf(path, sizeof(path), "%s", value);
+            envp[3] = path;
         }
+        free(value);
     }
 
     D("path env:%s,%s,%s,%s\n", envp[0], envp[1], envp[2], envp[3]);