]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
conf: prevent null pointer dereference
authorChristian Brauner <christian.brauner@ubuntu.com>
Mon, 4 Dec 2017 00:34:50 +0000 (01:34 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 15 Dec 2017 11:42:32 +0000 (12:42 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/conf.c
src/lxc/utils.c

index ad9505c57377b7ec96fae89d48f840c34ae320d3..fb7f80dccaab950d3533dcddf8f6d2c8060d2c25 100644 (file)
@@ -1739,11 +1739,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;
        }
 
@@ -1751,13 +1752,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)
@@ -1796,12 +1796,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;
                }
        }
@@ -1809,8 +1811,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;
 }
index ab7141770ab8316cde25e74b825a99b03dbc2f07..bfacbf45f30fccfb7a91eedee91edac87c97374b 100644 (file)
@@ -1705,7 +1705,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;
        }