From: JinWang An Date: Tue, 24 Aug 2021 07:35:25 +0000 (+0900) Subject: Add file extension check before adding image file to set home or lock screen X-Git-Tag: submit/tizen/20210825.010839^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7f6428078e2f1ac2868c43a4c4e359a1332827df;p=platform%2Fcore%2Fapi%2Fsystem-settings.git Add file extension check before adding image file to set home or lock screen Change-Id: I51090c770bdcac05ddd0cf48935ac25114cb1c19 Signed-off-by: JinWang An --- diff --git a/src/sst_utils_wrapper.c b/src/sst_utils_wrapper.c index e0539e9..5b0c822 100644 --- a/src/sst_utils_wrapper.c +++ b/src/sst_utils_wrapper.c @@ -16,6 +16,7 @@ #include "sst_utils_wrapper.h" #include +#include #include "sst.h" #include "sst_misc.h" @@ -103,7 +104,23 @@ char* sstu_get_default_font() bool sstu_is_valid_image(const char *path) { - return sst_misc_file_exists(path); + if (!sst_misc_file_exists(path)) + return false; + + char *ext_list[10] = {"jif", "jfif", "jpe", "jpeg", "jpg", + "bmp", "dib", "gif", "png", "webp", + }; + char *filename = strrchr(path, '/'); + if (NULL == filename || NULL == filename + 1) + return false; + char *ext = strrchr(filename + 1, '.'); + if (NULL == ext || NULL == ext + 1) + return false; + for (int i = 0; i < 10; i++) { + if (!strcmp(ext + 1, ext_list[i])) + return true; + } + return false; } void sstu_set_font_size() { diff --git a/tests/mocks/libc.c b/tests/mocks/libc.c index b57d919..f3c5b97 100644 --- a/tests/mocks/libc.c +++ b/tests/mocks/libc.c @@ -70,6 +70,8 @@ API int access(const char *pathname, int mode) return 0; if (0 == strcmp(pathname, SYS_SETTINGS_TEST_DIR"/bg_test.png")) return 0; + if (0 == strcmp(pathname, SYS_SETTINGS_TEST_DIR"/bg_test.mp4")) + return 0; int (*org_fn)(const char *, int); org_fn = dlsym(RTLD_NEXT, "access"); diff --git a/tests/sst_gtest_normal_screen.cpp b/tests/sst_gtest_normal_screen.cpp index 48f9648..c243bb0 100644 --- a/tests/sst_gtest_normal_screen.cpp +++ b/tests/sst_gtest_normal_screen.cpp @@ -30,6 +30,7 @@ extern "C" { } static const char *sstBgPath = SYS_SETTINGS_TEST_DIR"/bg_test.png"; +static const char *sstBgErrPath = SYS_SETTINGS_TEST_DIR"/bg_test.mp4"; TEST(SstScreenTest, getHomeWallPaper) { @@ -72,6 +73,9 @@ TEST(SstScreenTest, setHomeWallPaperERR) ret = sst_screen_set_home_wallpaper(iface, "test.png"); EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret); + + ret = sst_screen_set_home_wallpaper(iface, sstBgErrPath); + EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret); } diff --git a/tests/sst_gtest_normal_time_N_locale.cpp b/tests/sst_gtest_normal_time_N_locale.cpp index 7405165..c989ef9 100644 --- a/tests/sst_gtest_normal_time_N_locale.cpp +++ b/tests/sst_gtest_normal_time_N_locale.cpp @@ -51,10 +51,13 @@ TEST(SstTimeNLocaleTest, getCountryERR) sstm_vconf_get_str_setup(VCONFKEY_REGIONFORMAT, "012345678901234567890", 0); ret = sst_locale_get_country(iface, &val); EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret); + free(val); + val = NULL; sstm_vconf_get_str_setup(VCONFKEY_REGIONFORMAT, "ko", -1); ret = sst_locale_get_country(iface, &val); EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret); + free(val); } TEST(SstTimeNLocaleTest, setCountry)