diff options
author | phk <phk@FreeBSD.org> | 2005-03-16 11:06:49 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2005-03-16 11:06:49 +0000 |
commit | 08503770f69a71fd817ba5ca08a51d13f02b9a96 (patch) | |
tree | 6fddc1d9dfddaa7f5f623507314b2ee11d6e2e10 /sys | |
parent | 3ff5706695ff3e610e9bc83df6b237006702cd96 (diff) | |
download | FreeBSD-src-08503770f69a71fd817ba5ca08a51d13f02b9a96.zip FreeBSD-src-08503770f69a71fd817ba5ca08a51d13f02b9a96.tar.gz |
Fix a memoryleak in case of failed root filesystem mount.
Spotted by: Coverity via sam
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/vfs_mount.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index 7508c7e..a2fc340 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -1244,8 +1244,11 @@ vfs_mountroot_try(const char *mountfrom) path = malloc(MNAMELEN, M_MOUNT, M_WAITOK); vfsname[0] = path[0] = 0; sprintf(patt, "%%%d[a-z0-9]:%%%ds", MFSNAMELEN, MNAMELEN); - if (sscanf(mountfrom, patt, vfsname, path) < 1) + if (sscanf(mountfrom, patt, vfsname, path) < 1) { + free(path, M_MOUNT); + free(vfsname, M_MOUNT); return (error); + } if (path[0] == '\0') strcpy(path, ROOTNAME); |