svn commit: r324234 - stable/11/usr.sbin/mountd
Emmanuel Vadot
manu at FreeBSD.org
Tue Oct 3 08:29:47 UTC 2017
Author: manu
Date: Tue Oct 3 08:29:46 2017
New Revision: 324234
URL: https://svnweb.freebsd.org/changeset/base/324234
Log:
MFC r324007, r324012, r324014
r324007:
mountd: Replace malloc+strcpy to strdup
Reviewed by: bapt
Sponsored by: Gandi.net
Differential Revision: https://reviews.freebsd.org/D12503
r324012:
mountd: Remove unneeded cast
Reported by: kib
X MFC With: r324007
r324014:
mountd: Avoid memory leak by freeing dp_dirp
Introduced in r324007, the data alloced by strdup was never free'ed.
While here, remove cast to caddr_t when freeing dp.
Reported by: bde
X MFC With: r324007
Modified:
stable/11/usr.sbin/mountd/mountd.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/usr.sbin/mountd/mountd.c
==============================================================================
--- stable/11/usr.sbin/mountd/mountd.c Tue Oct 3 08:14:25 2017 (r324233)
+++ stable/11/usr.sbin/mountd/mountd.c Tue Oct 3 08:29:46 2017 (r324234)
@@ -101,7 +101,7 @@ struct dirlist {
struct dirlist *dp_right;
int dp_flag;
struct hostlist *dp_hosts; /* List of hosts this dir exported to */
- char dp_dirp[1]; /* Actually malloc'd to size of dir */
+ char *dp_dirp;
};
/* dp_flag bits */
#define DP_DEFSET 0x1
@@ -1525,12 +1525,8 @@ get_exportlist_one(void)
if (ep == (struct exportlist *)NULL) {
ep = get_exp();
ep->ex_fs = fsb.f_fsid;
- ep->ex_fsdir = (char *)malloc
- (strlen(fsb.f_mntonname) + 1);
- if (ep->ex_fsdir)
- strcpy(ep->ex_fsdir,
- fsb.f_mntonname);
- else
+ ep->ex_fsdir = strdup(fsb.f_mntonname);
+ if (ep->ex_fsdir == NULL)
out_of_mem();
if (debug)
warnx(
@@ -1940,14 +1936,16 @@ add_expdir(struct dirlist **dpp, char *cp, int len)
{
struct dirlist *dp;
- dp = (struct dirlist *)malloc(sizeof (struct dirlist) + len);
+ dp = malloc(sizeof (struct dirlist));
if (dp == (struct dirlist *)NULL)
out_of_mem();
dp->dp_left = *dpp;
dp->dp_right = (struct dirlist *)NULL;
dp->dp_flag = 0;
dp->dp_hosts = (struct hostlist *)NULL;
- strcpy(dp->dp_dirp, cp);
+ dp->dp_dirp = strndup(cp, len);
+ if (dp->dp_dirp == NULL)
+ out_of_mem();
*dpp = dp;
return (dp->dp_dirp);
}
@@ -2161,7 +2159,8 @@ free_dir(struct dirlist *dp)
free_dir(dp->dp_left);
free_dir(dp->dp_right);
free_host(dp->dp_hosts);
- free((caddr_t)dp);
+ free(dp->dp_dirp);
+ free(dp);
}
}
More information about the svn-src-all
mailing list