Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Aug 2016 02:07:08 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r304653 - head/usr.bin/indent
Message-ID:  <201608230207.u7N278NI028810@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608230207.u7N278NI028810>