GCC static analyzer warnings
Milan Crha
mcrha at redhat.com
Mon Apr 19 08:07:01 BST 2021
Hello,
I just received a list of static analyzer warnings reported by GCC. I
won't say it's anything urgent, thus no problem it "missed" the 3.0.10
release. The warnings are at the end of this message. My comments on
them:
Those from src/libicalvcal/vobject.c can eventually happen, when the
machine is out of memory. I do not see a way to pass the out-of-memory
situation to the caller here (I know libical does it on some other
places).
The src/libicalss/icalsslexer.c is a generated file by flex.
The memory leak at src/libicalss/icalcalendar.c:105 is valid. See the
attached patch.
The double frees at src/libical/icalmime.c:248 and
src/libical/icallangbind.c:263 are false positives, from my point of
view.
Bye,
Milan
1. Defect type: GCC_ANALYZER_WARNING
1. libical-3.0.9/src/libicalvcal/vobject.c:1471:8: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 't'
# 1469| u++; t++;
# 1470| }
# 1471|-> *t = 0;
# 1472| return s;
# 1473| }
2. Defect type: GCC_ANALYZER_WARNING
1. libical-3.0.9/src/libicalvcal/vobject.c:1468:16: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 't'
# 1466| *t = '\r';
# 1467| else
# 1468|-> *t = (char)*u;
# 1469| u++; t++;
# 1470| }
3. Defect type: GCC_ANALYZER_WARNING
1. libical-3.0.9/src/libicalvcal/vobject.c:1466:16: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 't'
# 1464| *t = '\n';
# 1465| else if (*u == (wchar_t)0x2029)
# 1466|-> *t = '\r';
# 1467| else
# 1468| *t = (char)*u;
4. Defect type: GCC_ANALYZER_WARNING
1. libical-3.0.9/src/libicalss/icalsslexer.c:0: scope_hint: In function 'ss_scan_buffer'
2. libical-3.0.9/src/libicalss/icalsslexer.c:1742:32: warning[-Wanalyzer-malloc-leak]: leak of '<unknown>'
# 1740| buf[i] = yybytes[i];
# 1741|
# 1742|-> buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
# 1743|
# 1744| b = ss_scan_buffer(buf,n );
5. Defect type: GCC_ANALYZER_WARNING
1. libical-3.0.9/src/libicalss/icalsslexer.c:0: scope_hint: In function 'sspush_buffer_state'
2. libical-3.0.9/src/libicalss/icalsslexer.c:1597:34: warning[-Wanalyzer-malloc-leak]: leak of '<unknown>'
17. libical-3.0.9/src/libicalss/icalsslexer.c:1585:14: note: in expansion of macro 'YY_CURRENT_BUFFER'
20. libical-3.0.9/src/libicalss/icalsslexer.c:1594:13: note: in expansion of macro 'YY_CURRENT_BUFFER'
# 1595| (yy_buffer_stack_top)++;
# 1596| /* coverity[var_deref_op] */
# 1597|-> YY_CURRENT_BUFFER_LVALUE = new_buffer;
# 1598|
# 1599| /* copied from ss_switch_to_buffer. */
6. Defect type: GCC_ANALYZER_WARNING
1. libical-3.0.9/src/libicalss/icalcalendar.c:105:9: warning[-Wanalyzer-malloc-leak]: leak of '<unknown>'
3. libical-3.0.9/src/libicalss/icalset.h:40: included_from: Included from here.
4. libical-3.0.9/src/libicalss/icalcalendar.h:26: included_from: Included from here.
5. libical-3.0.9/src/libicalss/icalcalendar.c:23: included_from: Included from here.
7. libical-3.0.9/src/libicalss/icalcalendar.c:90:5: note: in expansion of macro 'icalerror_check_arg_rz'
19. libical-3.0.9/src/libicalss/icalset.h:40: included_from: Included from here.
20. libical-3.0.9/src/libicalss/icalcalendar.h:26: included_from: Included from here.
21. libical-3.0.9/src/libicalss/icalcalendar.c:23: included_from: Included from here.
23. libical-3.0.9/src/libicalss/icalcalendar.c:64:5: note: in expansion of macro 'icalerror_check_arg_re'
# 103|
# 104| if (icalcalendar_create(impl) != ICAL_NO_ERROR) {
# 105|-> free(impl);
# 106| return 0;
# 107| }
7. Defect type: GCC_ANALYZER_WARNING
1. libical-3.0.9/src/libical/icalmime.c:0: scope_hint: In function 'icalmime_parse'
2. libical-3.0.9/src/libical/icalmime.c:248:13: warning[-Wanalyzer-double-free]: double-'free' of 'mimeTypeCopy'
24. libical-3.0.9/src/libical/icalerror.h:25: included_from: Included from here.
25. libical-3.0.9/src/libical/icalmime.c:26: included_from: Included from here.
# 246| comp,
# 247| icalproperty_new_xlicmimecontenttype(mimeTypeCopy));
# 248|-> free(mimeTypeCopy);
# 249| }
# 250|
8. Defect type: GCC_ANALYZER_WARNING
1. libical-3.0.9/src/libical/icallangbind.c:263:9: warning[-Wanalyzer-double-free]: double-'free' of 'copy'
# 261| APPENDS(v);
# 262| APPENDC('\'');
# 263|-> free(copy);
# 264| }
# 265|
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ical.patch
Type: text/x-patch
Size: 398 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/libical-devel/attachments/20210419/ebcb0dba/attachment.bin>
More information about the libical-devel
mailing list