Browse Source

handler: fix resource leak on error in netifd_init_script_handlers()

Detected by Coverity in CID 1412486

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Hans Dedecker 6 years ago
parent
commit
36e4700668
1 changed files with 6 additions and 1 deletions
  1. 6 1
      handler.c

+ 6 - 1
handler.c

@@ -34,6 +34,9 @@ netifd_dir_push(int fd)
 static void
 netifd_dir_pop(int prev_fd)
 {
+	if (prev_fd < 0)
+		return;
+
 	if (fchdir(prev_fd)) {}
 	close(prev_fd);
 }
@@ -128,8 +131,10 @@ void netifd_init_script_handlers(int dir_fd, script_dump_cb cb)
 	int i, prev_fd;
 
 	prev_fd = netifd_dir_push(dir_fd);
-	if (glob("./*.sh", 0, NULL, &g))
+	if (glob("./*.sh", 0, NULL, &g)) {
+		netifd_dir_pop(prev_fd);
 		return;
+	}
 
 	for (i = 0; i < g.gl_pathc; i++)
 		netifd_parse_script_handler(g.gl_pathv[i], cb);