https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93641

            Bug ID: 93641
           Summary: Wrong strncmp and strncasecmp size arguments
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dominik.b.czarnota+bugzilla at gmail dot com
  Target Milestone: ---

Hello,

There are several bugs where `strcnmp` function is used with a string literal
and size that doesn't match the string literal length without a null byte.

All of this was found on the following commit:
* 8e0efc103 - (grafted, HEAD -> master, origin/master, origin/HEAD) i386: Do
GNU2 TLS address computation in ptr_mode (3 weeks ago) <H.J. Lu>

I haven't triaged all those cases and I also reported two of them separately in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93640.

Below are those cases in the following format:

./gcc/config/i386/i386.c:      || strncmp(name, ".lbss.", 5) == 0
strlen=6, n=5
^-- either one of the strncmp used there is redundant or the 5 should be
changed to 6 here

./gcc/config/i386/i386.c:      || strncmp(name, ".gnu.linkonce.lb.", 16) == 0)
strlen=17, n=16
^-- it is in the same function as previous case: probably the 16 should be
changed to 17

./gcc/config/darwin-c.c:          && !strncmp(identifier_pointer (tn),
"CFStringRef", 8));
strlen=11, n=8
^-- e.g. a CFStringXYZ would be matched here.


./gcc/cp/error.c:  if (!strncmp(str, "_zgr", 3))
strlen=4, n=3
^-- should rather be 4

./gcc/doc/invoke.texi:
strncat(buf, ".txt", 3);    strlen=4, n=3
^-- should rather be 4, though its in .texi files which I don't know what are
they for.

./gcc/c-family/c-format.c:             && !strncasecmp(format_chars - 3,
"can%'t", 5)
strlen=6, n=5
^-- should rather be 6

Reply via email to