Author: markj
Date: Mon Jun  3 16:51:07 2019
New Revision: 348547
URL: https://svnweb.freebsd.org/changeset/base/348547

Log:
  rpc.yppasswdd: Fix dirname(3) usage after r305952.
  
  PR:           234972
  Submitted by: Edward Fuhr <edward.f...@us.fujitsu.com> (original)
  MFC after:    3 days

Modified:
  head/usr.sbin/rpc.yppasswdd/yppasswdd_server.c

Modified: head/usr.sbin/rpc.yppasswdd/yppasswdd_server.c
==============================================================================
--- head/usr.sbin/rpc.yppasswdd/yppasswdd_server.c      Mon Jun  3 16:47:51 
2019        (r348546)
+++ head/usr.sbin/rpc.yppasswdd/yppasswdd_server.c      Mon Jun  3 16:51:07 
2019        (r348547)
@@ -468,7 +468,9 @@ yppasswdproc_update_1_svc(yppasswd *argp, struct svc_r
        char *cryptpw;
        char *oldshell = NULL;
        char *oldgecos = NULL;
+       char *passdir;
        char *passfile_hold;
+       char passdir_buf[MAXPATHLEN + 2];
        char passfile_buf[MAXPATHLEN + 2];
        char passfile_hold_buf[MAXPATHLEN + 2];
        char *domain = yppasswd_domain;
@@ -602,11 +604,14 @@ yppasswdproc_update_1_svc(yppasswd *argp, struct svc_r
        snprintf(passfile_hold_buf, sizeof(passfile_hold_buf),
            "%s.hold", passfile);
        passfile_hold = (char *)&passfile_hold_buf;
-       
 
+
        /* Step 5: make a new password file with the updated info. */
 
-       if (pw_init(dirname(passfile), passfile)) {
+       snprintf(passdir_buf, sizeof(passdir_buf), "%s", passfile);
+       passdir = dirname(passdir_buf);
+
+       if (pw_init(passdir, passfile)) {
                yp_error("pw_init() failed");
                return &result;
        }
@@ -726,7 +731,9 @@ yppasswdproc_update_master_1_svc(master_yppasswd *argp
        uid_t uid;
        int rval = 0;
        DBT key, data;
+       char *passdir;
        char *passfile_hold;
+       char passdir_buf[MAXPATHLEN + 2];
        char passfile_buf[MAXPATHLEN + 2];
        char passfile_hold_buf[MAXPATHLEN + 2];
        struct sockaddr_in *rqhost;
@@ -829,7 +836,10 @@ allow additions to be made to the password database");
            "%s.hold", passfile);
        passfile_hold = (char *)&passfile_hold_buf;
 
-       if (pw_init(dirname(passfile), passfile)) {
+       snprintf(passdir_buf, sizeof(passdir_buf), "%s", passfile);
+       passdir = dirname(passdir_buf);
+
+       if (pw_init(passdir, passfile)) {
                yp_error("pw_init() failed");
                return &result;
        }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to