diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | nis/ypclnt.c | 36 |
2 files changed, 14 insertions, 26 deletions
@@ -1,5 +1,9 @@ 2003-04-23 Ulrich Drepper <drepper@redhat.com> + * nis/ypclnt.c (__yp_bind): Expect ypdb parameter to always we != + NULL. Remove code made redundant by this assumption. + (__yp_unbind): Add call to free. Adjust all callers. + * nis/ypclnt.c (yp_all): Free the dom_binding object after unwinding it. diff --git a/nis/ypclnt.c b/nis/ypclnt.c index 0278dcf15d..b440106b34 100644 --- a/nis/ypclnt.c +++ b/nis/ypclnt.c @@ -66,15 +66,12 @@ __yp_bind (const char *domain, dom_binding **ypdb) if (domain == NULL || domain[0] == '\0') return YPERR_BADARGS; - if (ypdb != NULL) + ysd = *ypdb; + while (ysd != NULL) { - ysd = *ypdb; - while (ysd != NULL) - { - if (strcmp (domain, ysd->dom_domain) == 0) - break; - ysd = ysd->dom_pnext; - } + if (strcmp (domain, ysd->dom_domain) == 0) + break; + ysd = ysd->dom_pnext; } if (ysd == NULL) @@ -207,13 +204,8 @@ __yp_bind (const char *domain, dom_binding **ypdb) if (is_new) { - if (ypdb != NULL) - { - ysd->dom_pnext = *ypdb; - *ypdb = ysd; - } - else - free (ysd); + ysd->dom_pnext = *ypdb; + *ypdb = ysd; } return YPERR_SUCCESS; @@ -224,6 +216,7 @@ __yp_unbind (dom_binding *ydb) { clnt_destroy (ydb->dom_client); ydb->dom_client = NULL; + free (ydb); } int @@ -260,7 +253,6 @@ yp_unbind_locked (const char *indomain) else ydbptr2 = ydbptr->dom_pnext; __yp_unbind (work); - free (work); break; } ydbptr2 = ydbptr; @@ -340,10 +332,7 @@ do_ypcall (const char *domain, u_long prog, xdrproc_t xargs, use_ypbindlist = FALSE; } else - { - __yp_unbind (ydb); - free (ydb); - } + __yp_unbind (ydb); ydb = NULL; status = YPERR_RPC; @@ -360,11 +349,7 @@ do_ypcall (const char *domain, u_long prog, xdrproc_t xargs, } else if (ydb != NULL) - { - __yp_unbind (ydb); - free (ydb); - ydb = NULL; - } + __yp_unbind (ydb); __set_errno (saved_errno); @@ -715,7 +700,6 @@ yp_all (const char *indomain, const char *inmap, /* We don't need the UDP connection anymore. */ __yp_unbind (ydb); - free (ydb); ydb = NULL; clnt = clnttcp_create (&clnt_sin, YPPROG, YPVERS, &clnt_sock, 0, 0); |