careful with name lengths and the xid
authorderaadt <deraadt@openbsd.org>
Tue, 25 Mar 1997 23:08:57 +0000 (23:08 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 25 Mar 1997 23:08:57 +0000 (23:08 +0000)
usr.sbin/ypbind/ypbind.c

index 3394804..ee7c9b9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ypbind.c,v 1.20 1997/02/01 00:26:04 deraadt Exp $ */
+/*     $OpenBSD: ypbind.c,v 1.21 1997/03/25 23:08:57 deraadt Exp $ */
 
 /*
  * Copyright (c) 1996 Theo de Raadt <deraadt@theos.com>
@@ -34,7 +34,7 @@
  */
 
 #ifndef LINT
-static char rcsid[] = "$OpenBSD: ypbind.c,v 1.20 1997/02/01 00:26:04 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: ypbind.c,v 1.21 1997/03/25 23:08:57 deraadt Exp $";
 #endif
 
 #include <sys/param.h>
@@ -169,7 +169,8 @@ ypbindproc_domain_2x(transp, argp, clnt)
        if (ypdb == NULL) {
                ypdb = (struct _dom_binding *)malloc(sizeof *ypdb);
                memset(ypdb, 0, sizeof *ypdb);
-               strncpy(ypdb->dom_domain, *argp, sizeof ypdb->dom_domain);
+               strncpy(ypdb->dom_domain, *argp, sizeof ypdb->dom_domain-1);
+               ypdb->dom_domain[sizeof ypdb->dom_domain-1] = '\0';
                ypdb->dom_vers = YPVERS;
                ypdb->dom_alive = 0;
                ypdb->dom_lockfd = -1;
@@ -501,10 +502,12 @@ main(argc, argv)
        /* build initial domain binding, make it "unsuccessful" */
        ypbindlist = (struct _dom_binding *)malloc(sizeof *ypbindlist);
        memset(ypbindlist, 0, sizeof *ypbindlist);
-       strncpy(ypbindlist->dom_domain, domain, sizeof ypbindlist->dom_domain);
+       strncpy(ypbindlist->dom_domain, domain, sizeof ypbindlist->dom_domain-1);
+       ypbindlist->dom_domain[sizeof ypbindlist->dom_domain)-1] = '\0';
        ypbindlist->dom_vers = YPVERS;
        ypbindlist->dom_alive = 0;
        ypbindlist->dom_lockfd = -1;
+       ypbindlist->dom_xid = unique_xid(ypbindlist);
        sprintf(path, "%s/%s.%d", BINDINGDIR,
            ypbindlist->dom_domain, (int)ypbindlist->dom_vers);
        (void)unlink(path);
@@ -1003,7 +1006,8 @@ int force;
                        return;
                ypdb = (struct _dom_binding *)malloc(sizeof *ypdb);
                memset(ypdb, 0, sizeof *ypdb);
-               strncpy(ypdb->dom_domain, dom, sizeof ypdb->dom_domain);
+               strncpy(ypdb->dom_domain, dom, sizeof ypdb->dom_domain-1);
+               ypdb->dom_domain[sizeof ypdb->dom_domain)-1] = '\0';
                ypdb->dom_lockfd = -1;
                ypdb->dom_pnext = ypbindlist;
                ypbindlist = ypdb;