1aa6a95b0f
Signed-off-by: Steve Dickson <steved@redhat.com>
160 lines
4.4 KiB
Diff
160 lines
4.4 KiB
Diff
diff --git a/src/bindresvport.c b/src/bindresvport.c
|
|
index 5c0ddcf..efeb1cc 100644
|
|
--- a/src/bindresvport.c
|
|
+++ b/src/bindresvport.c
|
|
@@ -130,6 +130,7 @@ load_blacklist (void)
|
|
if (list == NULL)
|
|
{
|
|
free (buf);
|
|
+ fclose (fp);
|
|
return;
|
|
}
|
|
}
|
|
diff --git a/src/clnt_raw.c b/src/clnt_raw.c
|
|
index 31f9d0c..03f839d 100644
|
|
--- a/src/clnt_raw.c
|
|
+++ b/src/clnt_raw.c
|
|
@@ -142,7 +142,7 @@ clnt_raw_call(h, proc, xargs, argsp, xresults, resultsp, timeout)
|
|
struct timeval timeout;
|
|
{
|
|
struct clntraw_private *clp = clntraw_private;
|
|
- XDR *xdrs = &clp->xdr_stream;
|
|
+ XDR *xdrs;
|
|
struct rpc_msg msg;
|
|
enum clnt_stat status;
|
|
struct rpc_err error;
|
|
@@ -154,6 +154,7 @@ clnt_raw_call(h, proc, xargs, argsp, xresults, resultsp, timeout)
|
|
mutex_unlock(&clntraw_lock);
|
|
return (RPC_FAILED);
|
|
}
|
|
+ xdrs = &clp->xdr_stream;
|
|
mutex_unlock(&clntraw_lock);
|
|
|
|
call_again:
|
|
@@ -245,7 +246,7 @@ clnt_raw_freeres(cl, xdr_res, res_ptr)
|
|
void *res_ptr;
|
|
{
|
|
struct clntraw_private *clp = clntraw_private;
|
|
- XDR *xdrs = &clp->xdr_stream;
|
|
+ XDR *xdrs;
|
|
bool_t rval;
|
|
|
|
mutex_lock(&clntraw_lock);
|
|
@@ -254,6 +255,7 @@ clnt_raw_freeres(cl, xdr_res, res_ptr)
|
|
mutex_unlock(&clntraw_lock);
|
|
return (rval);
|
|
}
|
|
+ xdrs = &clp->xdr_stream;
|
|
mutex_unlock(&clntraw_lock);
|
|
xdrs->x_op = XDR_FREE;
|
|
return ((*xdr_res)(xdrs, res_ptr));
|
|
diff --git a/src/getnetconfig.c b/src/getnetconfig.c
|
|
index cfd33c2..d547dce 100644
|
|
--- a/src/getnetconfig.c
|
|
+++ b/src/getnetconfig.c
|
|
@@ -436,11 +436,6 @@ getnetconfigent(netid)
|
|
fprintf(stderr, "in /etc/netconfig.\n");
|
|
fprintf(stderr, "Please change this to \"local\" manually ");
|
|
fprintf(stderr, "or run mergemaster(8).\n");
|
|
- fprintf(stderr, "See UPDATING entry 20021216 for details.\n");
|
|
- fprintf(stderr, "Continuing in 10 seconds\n\n");
|
|
- fprintf(stderr, "This warning will be removed 20030301\n");
|
|
- sleep(10);
|
|
-
|
|
}
|
|
|
|
/*
|
|
diff --git a/src/rpcb_clnt.c b/src/rpcb_clnt.c
|
|
index 9a9de69..68fe69a 100644
|
|
--- a/src/rpcb_clnt.c
|
|
+++ b/src/rpcb_clnt.c
|
|
@@ -104,17 +104,27 @@ destroy_addr(addr)
|
|
{
|
|
if (addr == NULL)
|
|
return;
|
|
- if(addr->ac_host != NULL)
|
|
+ if (addr->ac_host != NULL) {
|
|
free(addr->ac_host);
|
|
- if(addr->ac_netid != NULL)
|
|
+ addr->ac_host = NULL;
|
|
+ }
|
|
+ if (addr->ac_netid != NULL) {
|
|
free(addr->ac_netid);
|
|
- if(addr->ac_uaddr != NULL)
|
|
+ addr->ac_netid = NULL;
|
|
+ }
|
|
+ if (addr->ac_uaddr != NULL) {
|
|
free(addr->ac_uaddr);
|
|
- if(addr->ac_taddr != NULL) {
|
|
- if(addr->ac_taddr->buf != NULL)
|
|
+ addr->ac_uaddr = NULL;
|
|
+ }
|
|
+ if (addr->ac_taddr != NULL) {
|
|
+ if(addr->ac_taddr->buf != NULL) {
|
|
free(addr->ac_taddr->buf);
|
|
+ addr->ac_taddr->buf = NULL;
|
|
+ }
|
|
+ addr->ac_taddr = NULL;
|
|
}
|
|
free(addr);
|
|
+ addr = NULL;
|
|
}
|
|
|
|
/*
|
|
@@ -252,12 +262,15 @@ delete_cache(addr)
|
|
for (cptr = front; cptr != NULL; cptr = cptr->ac_next) {
|
|
if (!memcmp(cptr->ac_taddr->buf, addr->buf, addr->len)) {
|
|
/* Unlink from cache. We'll destroy it after releasing the mutex. */
|
|
- if (cptr->ac_uaddr)
|
|
+ if (cptr->ac_uaddr) {
|
|
free(cptr->ac_uaddr);
|
|
- if (prevptr)
|
|
+ cptr->ac_uaddr = NULL;
|
|
+ }
|
|
+ if (prevptr) {
|
|
prevptr->ac_next = cptr->ac_next;
|
|
- else
|
|
+ } else {
|
|
front = cptr->ac_next;
|
|
+ }
|
|
cachesize--;
|
|
break;
|
|
}
|
|
@@ -496,11 +509,7 @@ getpmaphandle(nconf, hostname, tgtaddr)
|
|
CLIENT *client = NULL;
|
|
rpcvers_t pmapvers = 2;
|
|
|
|
- /*
|
|
- * Try UDP only - there are some portmappers out
|
|
- * there that use UDP only.
|
|
- */
|
|
- if (nconf == NULL || strcmp(nconf->nc_proto, NC_TCP) == 0) {
|
|
+ if (nconf == NULL) {
|
|
struct netconfig *newnconf;
|
|
|
|
if ((newnconf = getnetconfigent("udp")) == NULL) {
|
|
@@ -509,7 +518,8 @@ getpmaphandle(nconf, hostname, tgtaddr)
|
|
}
|
|
client = getclnthandle(hostname, newnconf, tgtaddr);
|
|
freenetconfigent(newnconf);
|
|
- } else if (strcmp(nconf->nc_proto, NC_UDP) == 0) {
|
|
+ } else if (strcmp(nconf->nc_proto, NC_UDP) == 0 ||
|
|
+ strcmp(nconf->nc_proto, NC_TCP) == 0) {
|
|
if (strcmp(nconf->nc_protofmly, NC_INET) != 0)
|
|
return NULL;
|
|
client = getclnthandle(hostname, nconf, tgtaddr);
|
|
diff --git a/src/svc_auth.c b/src/svc_auth.c
|
|
index ce8bbd8..789d6af 100644
|
|
--- a/src/svc_auth.c
|
|
+++ b/src/svc_auth.c
|
|
@@ -66,6 +66,9 @@ static struct authsvc *Auths = NULL;
|
|
|
|
extern SVCAUTH svc_auth_none;
|
|
|
|
+#ifdef AUTHDES_SUPPORT
|
|
+extern enum auth_stat _svcauth_des(struct svc_req *rqst, struct rpc_msg *msg);
|
|
+#endif
|
|
/*
|
|
* The call rpc message, msg has been obtained from the wire. The msg contains
|
|
* the raw form of credentials and verifiers. authenticate returns AUTH_OK
|