pepper_keyrouter: fix a toctou race condition to open a file 50/225750/5
authorjeon <jhyuni.kang@samsung.com>
Mon, 24 Feb 2020 08:33:20 +0000 (17:33 +0900)
committerjeon <jhyuni.kang@samsung.com>
Mon, 24 Feb 2020 12:16:58 +0000 (21:16 +0900)
Change-Id: I04309a066310337881563574b891b98cd1078f9a

src/lib/keyrouter/pepper-keyrouter.c

index d378e690c6d648853fca9afde134bc8c5d50ee76..851073aa5e2b70b26225492bc3b8b4b60b52753b 100644 (file)
@@ -27,6 +27,7 @@
 #include <pepper-utils.h>
 #include <unistd.h>
 #include <stdio.h>
+#include <errno.h>
 
 #define MIN(a,b) ((a)<(b)?(a):(b))
 
@@ -673,13 +674,8 @@ _pepper_keyrouter_options_set(pepper_keyrouter_t *pepper_keyrouter)
        pepper_keyrouter->opts = (key_options_t *)calloc(KEYROUTER_MAX_KEYS, sizeof(key_options_t));
        PEPPER_CHECK(pepper_keyrouter->opts, return, "Failed to alloc memory for options\n") ;
 
-       if (access(KEYLAYOUT_DIR, R_OK) != 0) {
-               PEPPER_ERROR("Failed to access key layout file(%s)\n", KEYLAYOUT_DIR);
-               goto finish;
-       }
-
        file = fopen(KEYLAYOUT_DIR, "r");
-       PEPPER_CHECK(file, goto finish, "Failed to open key layout file(%s)\n", KEYLAYOUT_DIR);
+       PEPPER_CHECK(file, goto finish, "Failed to open key layout file(%s): (errno: %s)\n", KEYLAYOUT_DIR, strerror(errno));
 
        while (!feof(file)) {
                ret = fgets(buf, 1024, file);