From a46188c674b7580c20f42ac79ccbd3fb704b3c3c Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Mon, 4 Dec 2017 01:34:50 +0100 Subject: [PATCH] conf: prevent null pointer dereference Signed-off-by: Christian Brauner --- src/lxc/conf.c | 20 +++++++++++--------- src/lxc/utils.c | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 03fae281c..09aa7b21c 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -1699,11 +1699,12 @@ static int mount_entry(const char *fsname, const char *target, if (ret < 0) { if (optional) { INFO("Failed to mount \"%s\" on \"%s\" (optional): %s", - fsname, target, strerror(errno)); + fsname ? fsname : "(null)", target, strerror(errno)); return 0; } - SYSERROR("Failed to mount \"%s\" on \"%s\"", fsname, target); + SYSERROR("Failed to mount \"%s\" on \"%s\"", + fsname ? fsname : "(null)", target); return -1; } @@ -1711,13 +1712,12 @@ static int mount_entry(const char *fsname, const char *target, unsigned long rqd_flags = 0; DEBUG("Remounting \"%s\" on \"%s\" to respect bind or remount " - "options", - fsname ? fsname : "(none)", target ? target : "(none)"); + "options", fsname ? fsname : "(none)", target ? target : "(none)"); if (mountflags & MS_RDONLY) rqd_flags |= MS_RDONLY; #ifdef HAVE_STATVFS - if (statvfs(fsname, &sb) == 0) { + if (fsname && statvfs(fsname, &sb) == 0) { unsigned long required_flags = rqd_flags; if (sb.f_flag & MS_NOSUID) @@ -1756,12 +1756,14 @@ static int mount_entry(const char *fsname, const char *target, if (ret < 0) { if (optional) { INFO("Failed to mount \"%s\" on \"%s\" " - "(optional): %s", fsname, target, + "(optional): %s", + fsname ? fsname : "(null)", target, strerror(errno)); return 0; } - SYSERROR("Failed to mount \"%s\" on \"%s\"", fsname, target); + SYSERROR("Failed to mount \"%s\" on \"%s\"", + fsname ? fsname : "(null)", target); return -1; } } @@ -1769,8 +1771,8 @@ static int mount_entry(const char *fsname, const char *target, #ifdef HAVE_STATVFS skipremount: #endif - DEBUG("Mounted \"%s\" on \"%s\" with filesystem type \"%s\"", fsname, - target, fstype); + DEBUG("Mounted \"%s\" on \"%s\" with filesystem type \"%s\"", + fsname ? fsname : "(null)", target, fstype); return 0; } diff --git a/src/lxc/utils.c b/src/lxc/utils.c index bb3ac4e9b..936603d82 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -1702,7 +1702,7 @@ int safe_mount(const char *src, const char *dest, const char *fstype, close(destfd); if (ret < 0) { errno = saved_errno; - SYSERROR("Failed to mount %s onto %s", src, dest); + SYSERROR("Failed to mount %s onto %s", src ? src : "(null)", dest); return ret; } -- 2.47.2