Add file extension check before adding image file to set home or lock screen 76/262976/2 accepted/tizen/6.5/unified/20211028.100904 accepted/tizen/unified/20210901.103701 submit/tizen/20210825.010839 submit/tizen/20210826.063635 submit/tizen/20210827.074113 submit/tizen_6.5/20211028.161801 tizen_6.5.m2_release
authorJinWang An <jinwang.an@samsung.com>
Tue, 24 Aug 2021 07:35:25 +0000 (16:35 +0900)
committerJinWang An <jinwang.an@samsung.com>
Tue, 24 Aug 2021 08:15:00 +0000 (17:15 +0900)
Change-Id: I51090c770bdcac05ddd0cf48935ac25114cb1c19
Signed-off-by: JinWang An <jinwang.an@samsung.com>
src/sst_utils_wrapper.c
tests/mocks/libc.c
tests/sst_gtest_normal_screen.cpp
tests/sst_gtest_normal_time_N_locale.cpp

index e0539e9..5b0c822 100644 (file)
@@ -16,6 +16,7 @@
 #include "sst_utils_wrapper.h"
 
 #include <dlfcn.h>
+#include <string.h>
 #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()
 {
index b57d919..f3c5b97 100644 (file)
@@ -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");
index 48f9648..c243bb0 100644 (file)
@@ -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);
 }
 
 
index 7405165..c989ef9 100644 (file)
@@ -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)