svn commit: r200017 - in stable/7/lib/libc: gen rpc stdio yp
Garrett Wollman
wollman at FreeBSD.org
Wed Dec 2 03:08:29 UTC 2009
Author: wollman
Date: Wed Dec 2 03:08:29 2009
New Revision: 200017
URL: http://svn.freebsd.org/changeset/base/200017
Log:
MFC revs 199781,199782,199784,199786:
Eliminate dead stores.
In __mbsconv(), if prec was zero, nconv could have been used
uninitialized. Initialize it to a safe value so that there's no
chance of returning an error if stack garbage happens to be equal to
(size_t)-1 or (size_t)-2.
In clnt_raw_create(), avoid minor race condition initializing the
file-scope variable clntraw_private.
Mark head rev 199785 as merged; 7-STABLE's version of svc_raw_reply()
doesn't have the same bug (or even look all that similar).
Found by: Clang static analyzer
Modified:
stable/7/lib/libc/gen/getcap.c
stable/7/lib/libc/gen/getusershell.c
stable/7/lib/libc/gen/wordexp.c
stable/7/lib/libc/rpc/clnt_raw.c
stable/7/lib/libc/rpc/getnetconfig.c
stable/7/lib/libc/rpc/key_call.c
stable/7/lib/libc/stdio/fgetws.c
stable/7/lib/libc/stdio/fvwrite.c
stable/7/lib/libc/stdio/vfwprintf.c
stable/7/lib/libc/yp/yplib.c
Directory Properties:
stable/7/lib/libc/ (props changed)
Modified: stable/7/lib/libc/gen/getcap.c
==============================================================================
--- stable/7/lib/libc/gen/getcap.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/gen/getcap.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -647,7 +647,7 @@ int
cgetnext(char **bp, char **db_array)
{
size_t len;
- int done, hadreaderr, i, savederrno, status;
+ int done, hadreaderr, savederrno, status;
char *cp, *line, *rp, *np, buf[BSIZE], nbuf[BSIZE];
u_int dummy;
@@ -658,7 +658,7 @@ cgetnext(char **bp, char **db_array)
(void)cgetclose();
return (-1);
}
- for(;;) {
+ for (;;) {
if (toprec && !gottoprec) {
gottoprec = 1;
line = toprec;
@@ -709,7 +709,6 @@ cgetnext(char **bp, char **db_array)
/*
* Line points to a name line.
*/
- i = 0;
done = 0;
np = nbuf;
for (;;) {
Modified: stable/7/lib/libc/gen/getusershell.c
==============================================================================
--- stable/7/lib/libc/gen/getusershell.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/gen/getusershell.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -124,7 +124,7 @@ _local_initshells(rv, cb_data, ap)
if ((fp = fopen(_PATH_SHELLS, "r")) == NULL)
return NS_UNAVAIL;
- sp = cp = line;
+ cp = line;
while (fgets(cp, MAXPATHLEN + 1, fp) != NULL) {
while (*cp != '#' && *cp != '/' && *cp != '\0')
cp++;
Modified: stable/7/lib/libc/gen/wordexp.c
==============================================================================
--- stable/7/lib/libc/gen/wordexp.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/gen/wordexp.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -282,7 +282,7 @@ we_check(const char *words, int flags)
if (c == '\0' || level != 0)
return (WRDE_SYNTAX);
} else
- c = *--words;
+ --words;
break;
default:
break;
Modified: stable/7/lib/libc/rpc/clnt_raw.c
==============================================================================
--- stable/7/lib/libc/rpc/clnt_raw.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/rpc/clnt_raw.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -92,13 +92,13 @@ clnt_raw_create(prog, vers)
rpcprog_t prog;
rpcvers_t vers;
{
- struct clntraw_private *clp = clntraw_private;
+ struct clntraw_private *clp;
struct rpc_msg call_msg;
- XDR *xdrs = &clp->xdr_stream;
- CLIENT *client = &clp->client_object;
+ XDR *xdrs;
+ CLIENT *client;
mutex_lock(&clntraw_lock);
- if (clp == NULL) {
+ if ((clp = clntraw_private) == NULL) {
clp = (struct clntraw_private *)calloc(1, sizeof (*clp));
if (clp == NULL) {
mutex_unlock(&clntraw_lock);
@@ -110,6 +110,9 @@ clnt_raw_create(prog, vers)
clp->_raw_buf = __rpc_rawcombuf;
clntraw_private = clp;
}
+ xdrs = &clp->xdr_stream;
+ client = &clp->client_object;
+
/*
* pre-serialize the static part of the call msg and stash it away
*/
Modified: stable/7/lib/libc/rpc/getnetconfig.c
==============================================================================
--- stable/7/lib/libc/rpc/getnetconfig.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/rpc/getnetconfig.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -412,13 +412,13 @@ void *handlep;
* Noone needs these entries anymore, then frees them.
* Make sure all info in netconfig_info structure has been reinitialized.
*/
- q = p = ni.head;
+ q = ni.head;
ni.eof = ni.ref = 0;
ni.head = NULL;
ni.tail = NULL;
mutex_unlock(&ni_lock);
- while (q) {
+ while (q != NULL) {
p = q->next;
if (q->ncp->nc_lookups != NULL) free(q->ncp->nc_lookups);
free(q->ncp);
Modified: stable/7/lib/libc/rpc/key_call.c
==============================================================================
--- stable/7/lib/libc/rpc/key_call.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/rpc/key_call.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -302,7 +302,7 @@ int vers;
void *localhandle;
struct netconfig *nconf;
struct netconfig *tpconf;
- struct key_call_private *kcp = key_call_private_main;
+ struct key_call_private *kcp;
struct timeval wait_time;
struct utsname u;
int main_thread;
Modified: stable/7/lib/libc/stdio/fgetws.c
==============================================================================
--- stable/7/lib/libc/stdio/fgetws.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/stdio/fgetws.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -89,7 +89,7 @@ fgetws(wchar_t * __restrict ws, int n, F
if (!__mbsinit(&fp->_extra->mbstate))
/* Incomplete character */
goto error;
- *wsp++ = L'\0';
+ *wsp = L'\0';
FUNLOCKFILE(fp);
return (ws);
Modified: stable/7/lib/libc/stdio/fvwrite.c
==============================================================================
--- stable/7/lib/libc/stdio/fvwrite.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/stdio/fvwrite.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -60,7 +60,7 @@ __sfvwrite(fp, uio)
char *nl;
int nlknown, nldist;
- if ((len = uio->uio_resid) == 0)
+ if (uio->uio_resid == 0)
return (0);
/* make sure we can write */
if (prepwrite(fp) != 0)
Modified: stable/7/lib/libc/stdio/vfwprintf.c
==============================================================================
--- stable/7/lib/libc/stdio/vfwprintf.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/stdio/vfwprintf.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -367,7 +367,7 @@ __mbsconv(char *mbsarg, int prec)
* number of characters to print.
*/
p = mbsarg;
- insize = nchars = 0;
+ insize = nchars = nconv = 0;
mbs = initial;
while (nchars != (size_t)prec) {
nconv = mbrlen(p, MB_CUR_MAX, &mbs);
Modified: stable/7/lib/libc/yp/yplib.c
==============================================================================
--- stable/7/lib/libc/yp/yplib.c Wed Dec 2 02:47:29 2009 (r200016)
+++ stable/7/lib/libc/yp/yplib.c Wed Dec 2 03:08:29 2009 (r200017)
@@ -241,7 +241,7 @@ static bool_t
ypmatch_cache_lookup(struct dom_binding *ypdb, char *map, keydat *key,
valdat *val)
{
- struct ypmatch_ent *c = ypdb->cache;
+ struct ypmatch_ent *c;
ypmatch_cache_expire(ypdb);
More information about the svn-src-stable-7
mailing list