https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94639
Bug ID: 94639
Summary: false-positive uninitialized value on fixed sized
array
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: analyzer
Assignee: dmalcolm at gcc dot gnu.org
Reporter: cgzones at googlemail dot com
Target Milestone: ---
Minimized code snippet:
```
#include <string.h>
void validatedatetime(const char *str)
{
const char *templates[] = {"dddd-dd-dd dd:dd", "dddd-dd-dd"};
size_t len = strlen(str);
for (unsigned t = 0; t < 2; t++) {
if (len != strlen(templates[t])) {
continue;
}
}
}
```
Original code:
https://github.com/vergoh/vnstat/blob/f98c27eaba27ebda703737f8a5539a77b891561e/src/misc.c#L357
GCC analyzer output:
```
$ gcc-10 -c -Wall -Wextra -fanalyzer fixed-array.c
fixed-array.c: In function ‘validatedatetime’:
fixed-array.c:10:28: warning: use of uninitialized value ‘<unknown>’ [CWE-457]
[-Wanalyzer-use-of-uninitialized-value]
10 | if (len != strlen(templates[t])) {
| ^~~~~~~~~~~~~~~~~~~~
‘validatedatetime’: events 1-7
|
| 9 | for (unsigned t = 0; t < 2; t++) {
| | ^~~ ~~~
| | | |
| | | (4) ...to here
| | (1) following ‘true’ branch (when ‘t <= 1’)...
| | (5) following ‘true’ branch (when ‘t <= 1’)...
| 10 | if (len != strlen(templates[t])) {
| | ~ ~~~~~~~~~~~~~~~~~~~~
| | | |
| | | (2) ...to here
| | | (6) ...to here
| | | (7) use of uninitialized value
‘<unknown>’ here
| | (3) following ‘false’ branch...
|
```
GCC version:
```
gcc-10 (Debian 10-20200411-1) 10.0.1 20200411 (experimental) [master revision
bb87d5cc77d:75961caccb7:f883c46b4877f637e0fa5025b4d6b5c9040ec566]
```