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;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to