From 7f6428078e2f1ac2868c43a4c4e359a1332827df Mon Sep 17 00:00:00 2001 From: JinWang An Date: Tue, 24 Aug 2021 16:35:25 +0900 Subject: [PATCH] Add file extension check before adding image file to set home or lock screen Change-Id: I51090c770bdcac05ddd0cf48935ac25114cb1c19 Signed-off-by: JinWang An --- src/sst_utils_wrapper.c | 19 ++++++++++++++++++- tests/mocks/libc.c | 2 ++ tests/sst_gtest_normal_screen.cpp | 4 ++++ tests/sst_gtest_normal_time_N_locale.cpp | 3 +++ 4 files changed, 27 insertions(+), 1 deletion(-) 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) -- 2.7.4