On Sun, May 29, 2016 at 4:41 AM, Ed Schouten <e...@freebsd.org> wrote: > Author: ed > Date: Sun May 29 10:41:27 2016 > New Revision: 300952 > URL: https://svnweb.freebsd.org/changeset/base/300952 > > Log: > Invoke the dirname() function in a POSIX compliant way. > > POSIX requires that the argument of dirname() is of type "char *". In > other words, the input buffer can be modified by the function to store > the directory name. > > Pull a copy of the string before calling dirname(). We don't care about > freeing up the memory afterwards, as this is done at the very bottom of > main(), right before the program terminates. > > Reviewed by: bapt > Differential Revision: https://reviews.freebsd.org/D6628 > > Modified: > head/usr.sbin/services_mkdb/services_mkdb.c > > Modified: head/usr.sbin/services_mkdb/services_mkdb.c > ============================================================================== > --- head/usr.sbin/services_mkdb/services_mkdb.c Sun May 29 07:39:56 2016 > (r300951) > +++ head/usr.sbin/services_mkdb/services_mkdb.c Sun May 29 10:41:27 2016 > (r300952) > @@ -92,7 +92,7 @@ main(int argc, char *argv[]) > size_t cnt = 0; > StringList *sl, ***svc; > size_t port, proto; > - char *dbname_dir; > + char *dbname_dir, *dbname_dirbuf; > int dbname_dir_fd = -1; > > setprogname(argv[0]); > @@ -172,7 +172,8 @@ main(int argc, char *argv[]) > * fsync() to the directory where file lies > */ > if (rename(tname, dbname) == -1 || > - (dbname_dir = dirname(dbname)) == NULL || > + (dbname_dirbuf = strdup(dbname)) == NULL || > + (dbname_dir = dirname(dbname_dirbuf)) == NULL || > (dbname_dir_fd = open(dbname_dir, O_RDONLY|O_DIRECTORY)) == -1 || > fsync(dbname_dir_fd) != 0) { > if (dbname_dir_fd != -1) >
Even though the program is about to exit, it's worth freeing the memory just to make Coverity shut up. -Alan _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"