mesh: Allow to finish key refresh when no AppKeys are stored 34/228934/1
authorInga Stotland <inga.stotland@intel.com>
Wed, 5 Feb 2020 22:53:43 +0000 (14:53 -0800)
committerAnupam Roy <anupam.r@samsung.com>
Thu, 26 Mar 2020 10:25:08 +0000 (15:55 +0530)
This handles a case when a Key Refresh procedure is in place with
no application keys stored in the keyring. When KR procedure is
finalized, the check for the presence of AppKeys storage directory
does not return failure if the directory does not exist.

Also, remove duplicate include.

Change-Id: I1ca58e5b4f06acf8ef17e8eb0ac0afa3f7decd70
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
mesh/keyring.c

index 3eccf7e..d7bb405 100644 (file)
@@ -26,9 +26,9 @@
 #endif
 #include <fcntl.h>
 #include <dirent.h>
+#include <errno.h>
 #include <stdio.h>
 #include <unistd.h>
-#include <dirent.h>
 
 #include <sys/stat.h>
 
@@ -167,7 +167,10 @@ bool keyring_finalize_app_keys(struct mesh_node *node, uint16_t net_idx)
        snprintf(key_dir, PATH_MAX, "%s%s", node_path, app_key_dir);
        dir = opendir(key_dir);
        if (!dir) {
-               l_error("Failed to App Key storage directory: %s", key_dir);
+               if (errno == ENOENT)
+                       return true;
+
+               l_error("Failed to open AppKey storage directory: %s", key_dir);
                return false;
        }