Module Name: src
Committed By: dholland
Date: Tue May 24 07:00:07 UTC 2011
Modified Files:
src/usr.sbin/ypbind: ypbind.c
Log Message:
Fix initialization of struct domain; initialize all fields in all
cases, merge duplicate code, make sure every domain gets an xid
assigned.
Partly from Wolfgang Stukenbrock's patch in PR 43900.
To generate a diff of this commit:
cvs rdiff -u -r1.79 -r1.80 src/usr.sbin/ypbind/ypbind.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/ypbind/ypbind.c
diff -u src/usr.sbin/ypbind/ypbind.c:1.79 src/usr.sbin/ypbind/ypbind.c:1.80
--- src/usr.sbin/ypbind/ypbind.c:1.79 Tue May 24 06:59:53 2011
+++ src/usr.sbin/ypbind/ypbind.c Tue May 24 07:00:07 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: ypbind.c,v 1.79 2011/05/24 06:59:53 dholland Exp $ */
+/* $NetBSD: ypbind.c,v 1.80 2011/05/24 07:00:07 dholland Exp $ */
/*
* Copyright (c) 1992, 1993 Theo de Raadt <[email protected]>
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#ifndef LINT
-__RCSID("$NetBSD: ypbind.c,v 1.79 2011/05/24 06:59:53 dholland Exp $");
+__RCSID("$NetBSD: ypbind.c,v 1.80 2011/05/24 07:00:07 dholland Exp $");
#endif
#include <sys/types.h>
@@ -225,8 +225,23 @@
exit(1);
}
- (void)memset(dom, 0, sizeof *dom);
+ dom->dom_next = NULL;
+
(void)strlcpy(dom->dom_name, name, sizeof(dom->dom_name));
+ (void)memset(&dom->dom_server_addr, 0, sizeof(dom->dom_server_addr));
+ dom->dom_socket = -1;
+ dom->dom_client = NULL;
+ dom->dom_vers = YPVERS;
+ dom->dom_checktime = 0;
+ dom->dom_asktime = 0;
+ dom->dom_lockfd = -1;
+ dom->dom_alive = 0;
+ dom->dom_xid = unique_xid(dom);
+
+ /* add to global list */
+ dom->dom_next = domains;
+ domains = dom;
+
return dom;
}
@@ -344,9 +359,6 @@
if (force == 0)
return;
dom = domain_create(dom_name);
- dom->dom_lockfd = -1;
- dom->dom_next = domains;
- domains = dom;
}
/* soft update, alive */
@@ -442,13 +454,7 @@
if (dom == NULL) {
dom = domain_create(arg);
- dom->dom_vers = YPVERS;
- dom->dom_alive = 0;
- dom->dom_lockfd = -1;
removelock(dom);
- dom->dom_xid = unique_xid(dom);
- dom->dom_next = domains;
- domains = dom;
check++;
DPRINTF("unknown domain %s\n", arg);
return NULL;
@@ -1212,9 +1218,6 @@
/* build initial domain binding, make it "unsuccessful" */
domains = domain_create(domainname);
- domains->dom_vers = YPVERS;
- domains->dom_alive = 0;
- domains->dom_lockfd = -1;
removelock(domains);
checkwork();