Message ID | 1378348738-14451-5-git-send-email-guihc.fnst@cn.fujitsu.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
diff --git a/utils.c b/utils.c index d022d58..134bf80 100644 --- a/utils.c +++ b/utils.c @@ -1066,8 +1066,8 @@ again: dirp = opendir(dirname); if (!dirp) { fprintf(stderr, "Unable to open %s for scanning\n", dirname); - free(fullpath); - return -ENOENT; + ret = -ENOENT; + goto fail; } while(1) { dirent = readdir(dirp); @@ -1133,6 +1133,12 @@ again: fail: free(pending); free(fullpath); + while (!list_empty(&pending_list)) { + pending = list_entry(pending_list.next, struct pending_dir, + list); + list_del(&pending->list); + free(pending); + } if (dirp) closedir(dirp); return ret;
Originally the local pending_list is not guaranteed to be freed upon fails, it should be emptyed and the elements should be freed. Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> --- utils.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)