MFC r300387,r300388,r300389:
r300387: getnetid(..): consistently fclose fd at the end of the function This mutes a false positive with cppcheck, but also helps eliminate future potential issues with this variable r300388: Call endnetconfig on nc_handle sooner to avoid leaking nc_handle if tmpnconf was NULL This would theoretically happen if the netconfig protocol family and protocol semantics were never matched. CID: 978179 r300389: nis_rpcent: don't leak resultbuf from yp_first(..)/yp_next(..) If the buffer couldn't be adequately resized to accomodate an additional "\n", it would leak resultbuf by breaking from the loop early CID: 1016702
This commit is contained in:
parent
d1adc82bec
commit
47cb06bc0c
@ -512,6 +512,7 @@ nis_rpcent(void *retval, void *mdata, va_list ap)
|
||||
sizeof(char *)) {
|
||||
*errnop = ERANGE;
|
||||
rv = NS_RETURN;
|
||||
free(resultbuf);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -521,6 +522,7 @@ nis_rpcent(void *retval, void *mdata, va_list ap)
|
||||
if (aliases_size < 1) {
|
||||
*errnop = ERANGE;
|
||||
rv = NS_RETURN;
|
||||
free(resultbuf);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -253,6 +253,9 @@ getnetid(key, ret)
|
||||
char *lookup;
|
||||
int len;
|
||||
#endif
|
||||
int rv;
|
||||
|
||||
rv = 0;
|
||||
|
||||
fd = fopen(NETIDFILE, "r");
|
||||
if (fd == NULL) {
|
||||
@ -263,13 +266,11 @@ getnetid(key, ret)
|
||||
return (0);
|
||||
#endif
|
||||
}
|
||||
for (;;) {
|
||||
if (fd == NULL)
|
||||
return (0); /* getnetidyp brings us here */
|
||||
while (fd != NULL) {
|
||||
res = fgets(buf, sizeof(buf), fd);
|
||||
if (res == NULL) {
|
||||
fclose(fd);
|
||||
return (0);
|
||||
rv = 0;
|
||||
goto done;
|
||||
}
|
||||
if (res[0] == '#')
|
||||
continue;
|
||||
@ -292,9 +293,8 @@ getnetid(key, ret)
|
||||
lookup[len] = 0;
|
||||
strcpy(ret, lookup);
|
||||
free(lookup);
|
||||
if (fd != NULL)
|
||||
fclose(fd);
|
||||
return (2);
|
||||
rv = 2;
|
||||
goto done;
|
||||
#else /* YP */
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr,
|
||||
@ -320,10 +320,14 @@ getnetid(key, ret)
|
||||
}
|
||||
if (strcmp(mkey, key) == 0) {
|
||||
strcpy(ret, mval);
|
||||
fclose(fd);
|
||||
return (1);
|
||||
|
||||
rv = 1;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
if (fd != NULL)
|
||||
fclose(fd);
|
||||
return (rv);
|
||||
}
|
||||
|
@ -508,6 +508,7 @@ try_nconf:
|
||||
hostname = IN6_LOCALHOST_STRING;
|
||||
}
|
||||
}
|
||||
endnetconfig(nc_handle);
|
||||
if (tmpnconf == NULL) {
|
||||
rpc_createerr.cf_stat = RPC_UNKNOWNPROTO;
|
||||
mutex_unlock(&loopnconf_lock);
|
||||
@ -515,7 +516,6 @@ try_nconf:
|
||||
}
|
||||
loopnconf = getnetconfigent(tmpnconf->nc_netid);
|
||||
/* loopnconf is never freed */
|
||||
endnetconfig(nc_handle);
|
||||
}
|
||||
mutex_unlock(&loopnconf_lock);
|
||||
client = getclnthandle(hostname, loopnconf, NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user