From 4765bde378150dc85350fbe63381ce57791af014 Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Thu, 7 Jul 2016 10:06:20 +0900 Subject: [PATCH] Fix sdcard issue Change-Id: Ib9464072afd091dd540961effe9fb11fc9c9e1e0 Signed-off-by: Minje Ahn --- packaging/libmedia-service.spec | 2 +- src/common/media-svc-media-folder.c | 29 ++++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/packaging/libmedia-service.spec b/packaging/libmedia-service.spec index ee4e3b2..05dff25 100644 --- a/packaging/libmedia-service.spec +++ b/packaging/libmedia-service.spec @@ -1,6 +1,6 @@ Name: libmedia-service Summary: Media information service library for multimedia applications -Version: 0.2.73 +Version: 0.2.74 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 and public domain diff --git a/src/common/media-svc-media-folder.c b/src/common/media-svc-media-folder.c index 119a88b..a1a89b1 100755 --- a/src/common/media-svc-media-folder.c +++ b/src/common/media-svc-media-folder.c @@ -37,17 +37,36 @@ static int __media_svc_is_root_path(const char *folder_path, bool *is_root, uid_ media_svc_retvm_if(!STRING_VALID(folder_path), MS_MEDIA_ERR_INVALID_PARAMETER, "folder_path is NULL"); *is_root = FALSE; - + int i = 0; + int start_len = 0; + int path_len = 0; char *internal_path = _media_svc_get_path(uid); - if ((STRING_VALID(internal_path) && (strcmp(folder_path, internal_path) == 0)) || - (STRING_VALID(MEDIA_ROOT_PATH_SDCARD) && strcmp(folder_path, MEDIA_ROOT_PATH_SDCARD) == 0) || - (STRING_VALID(MEDIA_ROOT_PATH_CLOUD) && strcmp(folder_path, MEDIA_ROOT_PATH_CLOUD) == 0)) { + if (STRING_VALID(internal_path) && (strcmp(folder_path, internal_path) == 0)) { media_svc_debug("ROOT PATH [%s]", folder_path); *is_root = TRUE; - } + SAFE_FREE(internal_path); + + return MS_MEDIA_ERR_NONE; + } SAFE_FREE(internal_path); + + if ((STRING_VALID(MEDIA_ROOT_PATH_SDCARD) && strncmp(folder_path, MEDIA_ROOT_PATH_SDCARD, strlen(MEDIA_ROOT_PATH_SDCARD)) == 0) || + (STRING_VALID(MEDIA_ROOT_PATH_CLOUD) && strncmp(folder_path, MEDIA_ROOT_PATH_CLOUD, strlen(MEDIA_ROOT_PATH_CLOUD)) == 0)) { + + start_len = strlen(MEDIA_ROOT_PATH_SDCARD); + path_len = strlen(folder_path); + + for (i = start_len; i < path_len; i++) { + if (folder_path[i] == '/') + return MS_MEDIA_ERR_NONE; + } + + media_svc_debug("ROOT PATH [%s]", folder_path); + *is_root = TRUE; + } + return MS_MEDIA_ERR_NONE; } -- 2.7.4