Stop using the non-standard basename_r() function.
This change makes the code use the POSIX basename() function. It has the advantage that (if implemented correctly), it also imposes no restrict on the pathname length. Notice that I haven't added any error handling to the strdup() call. It looks like none of the other calls to strdup() and malloc() performed by this utility do it either. Reviewed by: hrs Differential Revision: https://reviews.freebsd.org/D6626
This commit is contained in:
parent
224a4bba59
commit
e47c947e6e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=301024
@ -216,7 +216,7 @@ main(int argc, char **argv)
|
|||||||
static const char *
|
static const char *
|
||||||
swap_on_off(const char *name, int doingall, char *mntops)
|
swap_on_off(const char *name, int doingall, char *mntops)
|
||||||
{
|
{
|
||||||
char base[PATH_MAX];
|
char *base, *basebuf;
|
||||||
|
|
||||||
/* Swap on vnode-backed md(4) device. */
|
/* Swap on vnode-backed md(4) device. */
|
||||||
if (mntops != NULL &&
|
if (mntops != NULL &&
|
||||||
@ -227,17 +227,23 @@ swap_on_off(const char *name, int doingall, char *mntops)
|
|||||||
strncmp(MD_NAME, name, sizeof(MD_NAME)) == 0))
|
strncmp(MD_NAME, name, sizeof(MD_NAME)) == 0))
|
||||||
return (swap_on_off_md(name, mntops, doingall));
|
return (swap_on_off_md(name, mntops, doingall));
|
||||||
|
|
||||||
basename_r(name, base);
|
basebuf = strdup(name);
|
||||||
|
base = basename(basebuf);
|
||||||
|
|
||||||
/* Swap on encrypted device by GEOM_BDE. */
|
/* Swap on encrypted device by GEOM_BDE. */
|
||||||
if (fnmatch("*.bde", base, 0) == 0)
|
if (fnmatch("*.bde", base, 0) == 0) {
|
||||||
|
free(basebuf);
|
||||||
return (swap_on_off_gbde(name, doingall));
|
return (swap_on_off_gbde(name, doingall));
|
||||||
|
}
|
||||||
|
|
||||||
/* Swap on encrypted device by GEOM_ELI. */
|
/* Swap on encrypted device by GEOM_ELI. */
|
||||||
if (fnmatch("*.eli", base, 0) == 0)
|
if (fnmatch("*.eli", base, 0) == 0) {
|
||||||
|
free(basebuf);
|
||||||
return (swap_on_off_geli(name, mntops, doingall));
|
return (swap_on_off_geli(name, mntops, doingall));
|
||||||
|
}
|
||||||
|
|
||||||
/* Swap on special file. */
|
/* Swap on special file. */
|
||||||
|
free(basebuf);
|
||||||
return (swap_on_off_sfile(name, doingall));
|
return (swap_on_off_sfile(name, doingall));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user