svn commit: r300952 - head/usr.sbin/services_mkdb

Alan Somers asomers at freebsd.org
Sun May 29 16:48:20 UTC 2016


On Sun, May 29, 2016 at 4:41 AM, Ed Schouten <ed at 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


More information about the svn-src-head mailing list