svn commit: r304653 - head/usr.bin/indent

Pedro F. Giffuni pfg at FreeBSD.org
Tue Aug 23 02:07:09 UTC 2016


Author: pfg
Date: Tue Aug 23 02:07:08 2016
New Revision: 304653
URL: https://svnweb.freebsd.org/changeset/base/304653

Log:
  indent(1): Fix off-by-one in control flow leading dead code.
  
  Coverity correctly reported that it's impossible for /comparison/ to be 0
  here, because the only way for the for loop to end is by /comparison/
  being < 0.
  
  Fortunately the consequences of this bug weren't severe; for duplicated
  entries in the typedef names file it would unnecessarily duplicate strings
  with strdup(), but pointers to those would replace existing ones. So this
  was a memory leak at worst.
  
  CID:	 1361477
  Obtained from:	 Piotr Stephaniak

Modified:
  head/usr.bin/indent/lexi.c

Modified: head/usr.bin/indent/lexi.c
==============================================================================
--- head/usr.bin/indent/lexi.c	Tue Aug 23 02:06:20 2016	(r304652)
+++ head/usr.bin/indent/lexi.c	Tue Aug 23 02:07:08 2016	(r304653)
@@ -613,7 +613,7 @@ add_typename(const char *key)
     else {
 	int p;
 
-	for (p = 0; (comparison = strcmp(key, typenames[p])) >= 0; p++)
+	for (p = 0; (comparison = strcmp(key, typenames[p])) > 0; p++)
 	    /* find place for the new key */;
 	if (comparison == 0)	/* remove duplicates */
 	    return;


More information about the svn-src-head mailing list