Change g_strdup() to strndup() (fix for free issue) 07/66207/1
authorMinje Ahn <minje.ahn@samsung.com>
Mon, 18 Apr 2016 00:47:28 +0000 (09:47 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Mon, 18 Apr 2016 00:47:28 +0000 (09:47 +0900)
Change-Id: I9ee449cb87cc7889bb1c65e0ee75ae49b08bcc83
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
src/common/media-svc-db-utils.c
src/common/media-svc-media.c
src/common/media-svc-util.c

index 05710d9..b48b32a 100755 (executable)
@@ -43,6 +43,7 @@ static GSList *column_list[MEDIA_SVC_DB_LIST_MAX];
 
 char *_media_svc_get_path(uid_t uid)
 {
+       int len = 0;
        char *result_passwd = NULL;
        struct group *grpinfo = NULL;
        if (uid == getuid()) {
@@ -51,7 +52,9 @@ char *_media_svc_get_path(uid_t uid)
                        media_svc_error("getgrnam(users) returns NULL !");
                        return NULL;
                }
-               result_passwd = g_strdup(MEDIA_ROOT_PATH_INTERNAL);
+               len = strlen(MEDIA_ROOT_PATH_INTERNAL);
+               if (len > 0)
+                       result_passwd = strndup(MEDIA_ROOT_PATH_INTERNAL, len);
        } else {
                char passwd_str[MEDIA_SVC_PATHNAME_SIZE] = {0, };
                struct passwd *userinfo = getpwuid(uid);
@@ -69,8 +72,9 @@ char *_media_svc_get_path(uid_t uid)
                        media_svc_error("UID [%d] does not belong to 'users' group!", uid);
                        return NULL;
                }
-               snprintf(passwd_str, sizeof(passwd_str), "%s/%s", userinfo->pw_dir, MEDIA_CONTENT_PATH);
-               result_passwd = g_strdup(passwd_str);
+               len = snprintf(passwd_str, sizeof(passwd_str), "%s/%s", userinfo->pw_dir, MEDIA_CONTENT_PATH);
+               if (len > 0)
+                       result_passwd = strndup(passwd_str, len);
        }
 
        return result_passwd;
index 52e3a5e..9f033c1 100755 (executable)
@@ -178,6 +178,7 @@ int _media_svc_count_record_with_path(sqlite3 *handle, const char *storage_id, c
 
 char *_media_svc_get_thumb_default_path(uid_t uid)
 {
+       int len = 0;
        char *result_passwd = NULL;
        struct group *grpinfo = NULL;
        if (uid == getuid()) {
@@ -186,7 +187,9 @@ char *_media_svc_get_thumb_default_path(uid_t uid)
                        media_svc_error("getgrnam(users) returns NULL !");
                        return NULL;
                }
-               result_passwd = g_strdup(MEDIA_SVC_THUMB_DEFAULT_PATH);
+               len = strlen(MEDIA_SVC_THUMB_DEFAULT_PATH);
+               if (len > 0)
+                       result_passwd = strndup(MEDIA_SVC_THUMB_DEFAULT_PATH, len);
        } else {
                char passwd_str[MEDIA_SVC_PATHNAME_SIZE] = {0, };
                struct passwd *userinfo = getpwuid(uid);
@@ -204,8 +207,9 @@ char *_media_svc_get_thumb_default_path(uid_t uid)
                        media_svc_error("UID [%d] does not belong to 'users' group!", uid);
                        return NULL;
                }
-               snprintf(passwd_str, sizeof(passwd_str), "%s/share/media/.thumb/thumb_default.png", userinfo->pw_dir);
-               result_passwd = g_strdup(passwd_str);
+               len = snprintf(passwd_str, sizeof(passwd_str), "%s/share/media/.thumb/thumb_default.png", userinfo->pw_dir);
+               if (len > 0)
+                       result_passwd = strndup(passwd_str, len);
        }
 
        return result_passwd;
index 25d39ec..b315b33 100755 (executable)
@@ -565,6 +565,7 @@ static int __media_svc_get_location_value(MMHandleType tag, double *longitude, d
 
 static char *__media_svc_get_thumb_path(uid_t uid)
 {
+       int len = 0;
        char *result_passwd = NULL;
        struct group *grpinfo = NULL;
        if (uid == getuid()) {
@@ -573,7 +574,9 @@ static char *__media_svc_get_thumb_path(uid_t uid)
                        media_svc_error("getgrnam(users) returns NULL !");
                        return NULL;
                }
-               result_passwd = g_strdup(MEDIA_SVC_THUMB_PATH_PREFIX);
+               len = strlen(MEDIA_SVC_THUMB_PATH_PREFIX);
+               if (len > 0)
+                       result_passwd = strndup(MEDIA_SVC_THUMB_PATH_PREFIX, len);
        } else {
                char passwd_str[MEDIA_SVC_PATHNAME_SIZE] = {0, };
                struct passwd *userinfo = getpwuid(uid);
@@ -591,8 +594,9 @@ static char *__media_svc_get_thumb_path(uid_t uid)
                        media_svc_error("UID [%d] does not belong to 'users' group!", uid);
                        return NULL;
                }
-               snprintf(passwd_str, sizeof(passwd_str), "%s/share/media/.thumb", userinfo->pw_dir);
-               result_passwd = g_strdup(passwd_str);
+               len = snprintf(passwd_str, sizeof(passwd_str), "%s/share/media/.thumb", userinfo->pw_dir);
+               if (len > 0)
+                       result_passwd = strndup(passwd_str, len);
        }
 
        return result_passwd;
@@ -855,6 +859,7 @@ int _media_svc_remove_all_files_in_dir(const char *dir_path)
 
 char *_media_svc_get_thumb_internal_path(uid_t uid)
 {
+       int len = 0;
        char *result_passwd = NULL;
        struct group *grpinfo = NULL;
        if (uid == getuid()) {
@@ -863,7 +868,9 @@ char *_media_svc_get_thumb_internal_path(uid_t uid)
                        media_svc_error("getgrnam(users) returns NULL !");
                        return NULL;
                }
-               result_passwd = g_strdup(MEDIA_SVC_THUMB_INTERNAL_PATH);
+               len = strlen(MEDIA_SVC_THUMB_INTERNAL_PATH);
+               if (len > 0)
+                       result_passwd = strndup(MEDIA_SVC_THUMB_INTERNAL_PATH, len);
        } else {
                char passwd_str[MEDIA_SVC_PATHNAME_SIZE] = {0, };
                struct passwd *userinfo = getpwuid(uid);
@@ -881,8 +888,9 @@ char *_media_svc_get_thumb_internal_path(uid_t uid)
                        media_svc_error("UID [%d] does not belong to 'users' group!", uid);
                        return NULL;
                }
-               snprintf(passwd_str, sizeof(passwd_str), "%s/share/media/.thumb/phone", userinfo->pw_dir);
-               result_passwd = g_strdup(passwd_str);
+               len = snprintf(passwd_str, sizeof(passwd_str), "%s/share/media/.thumb/phone", userinfo->pw_dir);
+               if (len > 0)
+                       result_passwd = strndup(passwd_str, len);
        }
 
        return result_passwd;
@@ -890,6 +898,7 @@ char *_media_svc_get_thumb_internal_path(uid_t uid)
 
 char *_media_svc_get_thumb_external_path(uid_t uid)
 {
+       int len = 0;
        char *result_passwd = NULL;
        struct group *grpinfo = NULL;
        if (uid == getuid()) {
@@ -898,7 +907,9 @@ char *_media_svc_get_thumb_external_path(uid_t uid)
                        media_svc_error("getgrnam(users) returns NULL !");
                        return NULL;
                }
-               result_passwd = g_strdup(MEDIA_SVC_THUMB_EXTERNAL_PATH);
+               len = strlen(MEDIA_SVC_THUMB_EXTERNAL_PATH);
+               if (len > 0)
+                       result_passwd = strndup(MEDIA_SVC_THUMB_EXTERNAL_PATH, len);
        } else {
                char passwd_str[MEDIA_SVC_PATHNAME_SIZE] = {0, };
                struct passwd *userinfo = getpwuid(uid);
@@ -916,8 +927,9 @@ char *_media_svc_get_thumb_external_path(uid_t uid)
                        media_svc_error("UID [%d] does not belong to 'users' group!", uid);
                        return NULL;
                }
-               snprintf(passwd_str, sizeof(passwd_str), "%s/share/media/.thumb/mmc", userinfo->pw_dir);
-               result_passwd = g_strdup(passwd_str);
+               len = snprintf(passwd_str, sizeof(passwd_str), "%s/share/media/.thumb/mmc", userinfo->pw_dir);
+               if (len > 0)
+                       result_passwd = strndup(passwd_str, len);
        }
 
        return result_passwd;