diff options
author | Jiyong Min <jiyong.min@samsung.com> | 2017-04-25 13:19:00 +0900 |
---|---|---|
committer | Jiyong Min <jiyong.min@samsung.com> | 2017-04-25 14:06:00 +0900 |
commit | 06a75284fb5bf7f8ddcd428a507b3efc81af7db4 (patch) | |
tree | 9ab5c52bdbed68f0aed710d0c08a80390211a28a /src/util/media-thumb-db.c | |
parent | 7f0656b53cddb9d9ae44a97041a81b4cd1415130 (diff) | |
download | libmedia-thumbnail-06a75284fb5bf7f8ddcd428a507b3efc81af7db4.tar.gz libmedia-thumbnail-06a75284fb5bf7f8ddcd428a507b3efc81af7db4.tar.bz2 libmedia-thumbnail-06a75284fb5bf7f8ddcd428a507b3efc81af7db4.zip |
Modify null pointer dereferenced in _media_thumb_get_thumb_path_from_dbsubmit/tizen/20170425.054247accepted/tizen/unified/20170426.061631
Change-Id: Iacb19869df0023972bc4e04872864186be3bc4b4
Signed-off-by: Jiyong Min <jiyong.min@samsung.com>
Diffstat (limited to 'src/util/media-thumb-db.c')
-rwxr-xr-x | src/util/media-thumb-db.c | 132 |
1 files changed, 109 insertions, 23 deletions
diff --git a/src/util/media-thumb-db.c b/src/util/media-thumb-db.c index 62ff2cb..7ce5d31 100755 --- a/src/util/media-thumb-db.c +++ b/src/util/media-thumb-db.c @@ -49,9 +49,22 @@ int _media_thumb_get_type_from_db(sqlite3 *handle, thumb_err("DB handle is NULL"); return MS_MEDIA_ERR_INVALID_PARAMETER; } + if (!STRING_VALID(origin_path)) { + thumb_err("Invalid origin_path"); + return MS_MEDIA_ERR_INVALID_PARAMETER; + } path_string = sqlite3_mprintf("%s", origin_path); + if (!STRING_VALID(path_string)) { + thumb_err("Memory allocation is failed"); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } query_string = sqlite3_mprintf(SELECT_TYPE_BY_PATH, path_string); + if (!STRING_VALID(query_string)) { + thumb_err("Memory allocation is failed"); + sqlite3_free(path_string); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } thumb_dbg("Query: %s", query_string); @@ -88,16 +101,30 @@ int _media_thumb_get_wh_from_db(sqlite3 *handle, if (handle == NULL) { thumb_err("DB handle is NULL"); - return -1; + return MS_MEDIA_ERR_INVALID_PARAMETER; + } + if (!STRING_VALID(origin_path)) { + thumb_err("Invalid origin_path"); + return MS_MEDIA_ERR_INVALID_PARAMETER; } - int err = -1; + int err = MS_MEDIA_ERR_NONE; char *path_string = NULL; char *query_string = NULL; sqlite3_stmt *stmt = NULL; path_string = sqlite3_mprintf("%s", origin_path); + if (!STRING_VALID(path_string)) { + thumb_err("Memory allocation is failed"); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } + query_string = sqlite3_mprintf(SELECT_WH_BY_PATH, path_string); + if (!STRING_VALID(query_string)) { + thumb_err("Memory allocation is failed"); + sqlite3_free(path_string); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } thumb_dbg_slog("Query: %s", query_string); @@ -108,14 +135,14 @@ int _media_thumb_get_wh_from_db(sqlite3 *handle, if (SQLITE_OK != err) { thumb_err("prepare error [%s]", sqlite3_errmsg(handle)); - return -1; + return MS_MEDIA_ERR_DB_INTERNAL; } err = sqlite3_step(stmt); if (err != SQLITE_ROW) { thumb_err("end of row [%s]", sqlite3_errmsg(handle)); sqlite3_finalize(stmt); - return -1; + return MS_MEDIA_ERR_DB_INTERNAL; } *width = sqlite3_column_int(stmt, 0); @@ -134,16 +161,30 @@ int _media_thumb_get_thumb_path_from_db(sqlite3 *handle, if (handle == NULL) { thumb_err("DB handle is NULL"); - return -1; + return MS_MEDIA_ERR_INVALID_PARAMETER; + } + if (!STRING_VALID(origin_path)) { + thumb_err("Invalid origin_path"); + return MS_MEDIA_ERR_INVALID_PARAMETER; } - int err = -1; + int err = MS_MEDIA_ERR_NONE; char *path_string = NULL; char *query_string = NULL; sqlite3_stmt *stmt = NULL; path_string = sqlite3_mprintf("%s", origin_path); + if (!STRING_VALID(path_string)) { + thumb_err("Memory allocation is failed"); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } + query_string = sqlite3_mprintf(SELECT_MEDIA_BY_PATH, path_string); + if (!STRING_VALID(query_string)) { + thumb_err("Memory allocation is failed"); + sqlite3_free(path_string); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } thumb_dbg_slog("Query: %s", query_string); @@ -154,14 +195,14 @@ int _media_thumb_get_thumb_path_from_db(sqlite3 *handle, if (SQLITE_OK != err) { thumb_err("prepare error [%s]", sqlite3_errmsg(handle)); - return -1; + return MS_MEDIA_ERR_DB_INTERNAL; } err = sqlite3_step(stmt); if (err != SQLITE_ROW) { thumb_err("end of row [%s]", sqlite3_errmsg(handle)); sqlite3_finalize(stmt); - return -1; + return MS_MEDIA_ERR_DB_INTERNAL; } if (sqlite3_column_text(stmt, 0)) @@ -188,10 +229,29 @@ int _media_thumb_update_thumb_path_to_db(sqlite3 *handle, thumb_err("DB handle is NULL"); return MS_MEDIA_ERR_INVALID_PARAMETER; } + if (!STRING_VALID(origin_path)) { + thumb_err("Invalid origin_path"); + return MS_MEDIA_ERR_INVALID_PARAMETER; + } path_string = sqlite3_mprintf("%s", origin_path); + if (!STRING_VALID(path_string)) { + thumb_err("Memory allocation is failed"); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } thumbpath_string = sqlite3_mprintf("%s", thumb_path); + if (!STRING_VALID(thumbpath_string)) { + thumb_err("Memory allocation is failed"); + sqlite3_free(path_string); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } query_string = sqlite3_mprintf(UPDATE_THUMB_BY_PATH, thumbpath_string, path_string); + if (!STRING_VALID(query_string)) { + thumb_err("Memory allocation is failed"); + sqlite3_free(path_string); + sqlite3_free(thumbpath_string); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } err = media_db_request_update_db(query_string, uid); if (err != MS_MEDIA_ERR_NONE) { @@ -221,9 +281,22 @@ int _media_thumb_update_wh_to_db(sqlite3 *handle, thumb_err("DB handle is NULL"); return MS_MEDIA_ERR_INVALID_PARAMETER; } + if (!STRING_VALID(origin_path)) { + thumb_err("Invalid origin_path"); + return MS_MEDIA_ERR_INVALID_PARAMETER; + } path_string = sqlite3_mprintf("%s", origin_path); + if (!STRING_VALID(path_string)) { + thumb_err("Memory allocation is failed"); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } query_string = sqlite3_mprintf(UPDATE_WH_BY_PATH, width, height, path_string); + if (!STRING_VALID(query_string)) { + thumb_err("Memory allocation is failed"); + sqlite3_free(path_string); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } err = media_db_request_update_db(query_string, uid); if (err != MS_MEDIA_ERR_NONE) { @@ -251,11 +324,24 @@ int _media_thumb_update_thumb_path_wh_to_db(sqlite3 *handle, if (handle == NULL) { thumb_err("DB handle is NULL"); - return -1; + return MS_MEDIA_ERR_INVALID_PARAMETER; + } + if (!STRING_VALID(origin_path)) { + thumb_err("Invalid origin_path"); + return MS_MEDIA_ERR_INVALID_PARAMETER; } path_string = sqlite3_mprintf("%s", origin_path); + if (!STRING_VALID(path_string)) { + thumb_err("Memory allocation is failed"); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } query_string = sqlite3_mprintf(UPDATE_THUMB_WH_BY_PATH, thumb_path, width, height, path_string); + if (!STRING_VALID(query_string)) { + thumb_err("Memory allocation is failed"); + sqlite3_free(path_string); + return MS_MEDIA_ERR_OUT_OF_MEMORY; + } err = media_db_request_update_db(query_string, uid); if (err != MS_MEDIA_ERR_NONE) { @@ -304,19 +390,19 @@ int _media_thumb_get_thumb_from_db(const char *origin_path, int max_length, int *need_update_db) { - int err = -1; + int err = MS_MEDIA_ERR_NONE; //err = minfo_get_thumb_path(mb_svc_handle, origin_path, thumb_path, max_length); err = _media_thumb_get_thumb_path_from_db(db_handle, origin_path, thumb_path, max_length); - if (err < 0) { + if (err != MS_MEDIA_ERR_NONE) { thumb_warn("Original path doesn't exist in DB"); - return -1; + return err; } if (strlen(thumb_path) == 0) { thumb_warn("thumb path doesn't exist in DB"); *need_update_db = 1; - return -1; + return MS_MEDIA_ERR_INTERNAL; } thumb_dbg_slog("Thumb path in DB is %s", thumb_path); @@ -324,7 +410,7 @@ int _media_thumb_get_thumb_from_db(const char *origin_path, if (!g_file_test(thumb_path, G_FILE_TEST_EXISTS)) { thumb_warn("thumb path doesn't exist in file system"); *need_update_db = 1; - return -1; + return MS_MEDIA_ERR_INTERNAL; } else { thumb_dbg("This thumb path already exist"); } @@ -339,19 +425,19 @@ int _media_thumb_get_thumb_from_db_with_size(const char *origin_path, int *width, int *height) { - int err = -1; + int err = MS_MEDIA_ERR_NONE; //err = minfo_get_thumb_path(mb_svc_handle, origin_path, thumb_path, max_length); err = _media_thumb_get_thumb_path_from_db(db_handle, origin_path, thumb_path, max_length); - if (err < 0) { + if (err != MS_MEDIA_ERR_NONE) { thumb_warn("Original path doesn't exist in DB"); - return -1; + return err; } if (strlen(thumb_path) == 0) { thumb_warn("thumb path doesn't exist in DB"); *need_update_db = 1; - return -1; + return MS_MEDIA_ERR_INTERNAL; } thumb_dbg_slog("Thumb path in DB is %s", thumb_path); @@ -359,14 +445,14 @@ int _media_thumb_get_thumb_from_db_with_size(const char *origin_path, if (!g_file_test(thumb_path, G_FILE_TEST_EXISTS)) { thumb_warn("thumb path doesn't exist in file system"); *need_update_db = 1; - return -1; + return MS_MEDIA_ERR_INTERNAL; } else { thumb_dbg("This thumb path already exist"); int orig_w = 0; int orig_h = 0; err = _media_thumb_get_wh_from_db(db_handle, origin_path, &orig_w, &orig_h); - if (err < 0) { + if (err != MS_MEDIA_ERR_NONE) { thumb_err("_media_thumb_get_wh_from_db failed : %d", err); } else { thumb_err("_media_thumb_get_wh_from_db Success ( w:%d, h:%d )", orig_w, orig_h); @@ -388,7 +474,7 @@ int _media_thumb_update_db(const char *origin_path, int media_type = THUMB_NONE_TYPE; err = _media_thumb_get_type_from_db(db_handle, origin_path, &media_type); - if (err < 0) { + if (err != MS_MEDIA_ERR_NONE) { thumb_err("_media_thumb_get_type_from_db (%s) failed: %d", origin_path, err); return err; } @@ -410,13 +496,13 @@ int _media_thumb_update_db(const char *origin_path, #else if (media_type == THUMB_IMAGE_TYPE && width > 0 && height > 0) { err = _media_thumb_update_thumb_path_wh_to_db(db_handle, origin_path, thumb_path, width, height, uid); - if (err < 0) { + if (err != MS_MEDIA_ERR_NONE) { thumb_err("_media_thumb_update_wh_to_db (%s) failed: %d", origin_path, err); return err; } } else { err = _media_thumb_update_thumb_path_to_db(db_handle, origin_path, thumb_path, uid); - if (err < 0) { + if (err != MS_MEDIA_ERR_NONE) { thumb_err("_media_thumb_update_thumb_path_to_db (%s) failed: %d", origin_path, err); return err; } |