memif: socket filename add/del bugfix 79/15179/2
authorJakub Grajciar <jgrajcia@cisco.com>
Mon, 8 Oct 2018 11:35:32 +0000 (13:35 +0200)
committerDamjan Marion <dmarion@me.com>
Mon, 8 Oct 2018 17:44:58 +0000 (17:44 +0000)
Check access rights using effective user/group IDs

Change-Id: I3683258c24bcd7817024bffbd56b54b2f596fdd7
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
src/plugins/memif/memif.c

index e35a8dc..63f72a3 100644 (file)
@@ -618,7 +618,6 @@ memif_delete_socket_file (u32 sock_id)
 int
 memif_socket_filename_add_del (u8 is_add, u32 sock_id, u8 * sock_filename)
 {
-  struct stat file_stat;
   char *dir = 0, *tmp;
   u32 idx = 0;
 
@@ -680,8 +679,9 @@ memif_socket_filename_add_del (u8 is_add, u32 sock_id, u8 * sock_filename)
          vec_add1 (dir, '\0');
        }
 
-      if (((dir == 0) || (stat (dir, &file_stat) == -1)
-          || (!S_ISDIR (file_stat.st_mode))) && (idx != 0))
+      /* check dir existance and access rights for effective user/group IDs */
+      if (faccessat ( /* ignored */ -1, dir, F_OK | R_OK | W_OK, AT_EACCESS) <
+         0)
        {
          vec_free (dir);
          return VNET_API_ERROR_INVALID_ARGUMENT;