From: Filipe Manana <fdmanana@xxxxxxxx> The strdup() function can fail, in which case it returns NULL and sets errno [1]. Therefore add the missing error check after calling strdup() at find_mount_root(). [1] - http://man7.org/linux/man-pages/man3/strdup.3p.html Signed-off-by: Filipe Manana <fdmanana@xxxxxxxx> --- utils.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils.c b/utils.c index 6616630b..3bc6bc3b 100644 --- a/utils.c +++ b/utils.c @@ -2048,7 +2048,7 @@ int find_mount_root(const char *path, char **mount_root) int fd; struct mntent *ent; int len; - int ret; + int ret = 0; int not_btrfs = 1; int longest_matchlen = 0; char *longest_match = NULL; @@ -2071,12 +2071,18 @@ int find_mount_root(const char *path, char **mount_root) free(longest_match); longest_matchlen = len; longest_match = strdup(ent->mnt_dir); + if (!longest_match) { + ret = -errno; + break; + } not_btrfs = strcmp(ent->mnt_type, "btrfs"); } } } endmntent(mnttab); + if (ret) + return ret; if (!longest_match) return -ENOENT; if (not_btrfs) { -- 2.11.0
