gnu.cfg: Added support for asprintf() and vasprintf(). There is a FN with memory leak detection regarding pointer args, which is already mentioned in #8980. A comment has been added.
This commit is contained in:
parent
084c7c284e
commit
17c1733b0e
40
cfg/gnu.cfg
40
cfg/gnu.cfg
|
@ -4,6 +4,43 @@
|
|||
<dealloc>free</dealloc>
|
||||
<alloc init="true">get_current_dir_name</alloc>
|
||||
</memory>
|
||||
<memory>
|
||||
<alloc init="true" arg="1">asprintf</alloc>
|
||||
<dealloc>free</dealloc>
|
||||
</memory>
|
||||
<!-- http://man7.org/linux/man-pages/man3/asprintf.3.html -->
|
||||
<!-- int asprintf(char **strp, const char *fmt, ...); -->
|
||||
<function name="asprintf">
|
||||
<returnValue type="int"/>
|
||||
<use-retval/>
|
||||
<noreturn>false</noreturn>
|
||||
<arg nr="1">
|
||||
<not-null/>
|
||||
</arg>
|
||||
<formatstr/>
|
||||
<arg nr="2">
|
||||
<formatstr/>
|
||||
<not-uninit/>
|
||||
</arg>
|
||||
</function>
|
||||
<!-- http://man7.org/linux/man-pages/man3/asprintf.3.html -->
|
||||
<!-- int vasprintf(char **strp, const char *fmt, va_list ap); -->
|
||||
<function name="vasprintf">
|
||||
<returnValue type="int"/>
|
||||
<use-retval/>
|
||||
<noreturn>false</noreturn>
|
||||
<arg nr="1">
|
||||
<not-null/>
|
||||
</arg>
|
||||
<formatstr/>
|
||||
<arg nr="2">
|
||||
<formatstr/>
|
||||
<not-uninit/>
|
||||
</arg>
|
||||
<arg nr="3">
|
||||
<not-uninit/>
|
||||
</arg>
|
||||
</function>
|
||||
<!-- http://man7.org/linux/man-pages/man2/accept.2.html -->
|
||||
<!-- int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags); -->
|
||||
<function name="accept4">
|
||||
|
@ -26,8 +63,7 @@
|
|||
</function>
|
||||
<!-- int getopt_long(int argc, char * const argv[],
|
||||
const char *optstring,
|
||||
const struct option *longopts, int *longindex);
|
||||
-->
|
||||
const struct option *longopts, int *longindex); -->
|
||||
<function name="getopt_long,getopt_long_only">
|
||||
<leak-ignore/>
|
||||
<noreturn>false</noreturn>
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#ifndef __CYGWIN__
|
||||
#include <sys/epoll.h>
|
||||
#endif
|
||||
|
@ -21,6 +22,17 @@ void ignoreleak(void)
|
|||
// cppcheck-suppress memleak
|
||||
}
|
||||
|
||||
void memleak_asprintf(char **ptr, const char *fmt, const int arg)
|
||||
{
|
||||
// No warning is expected for
|
||||
if (-1 != asprintf(ptr,fmt,arg)) {
|
||||
free(ptr);
|
||||
}
|
||||
if (-1 != asprintf(ptr,fmt,arg)) {
|
||||
// TODO: Related to #8980 cppcheck-suppress memleak
|
||||
}
|
||||
}
|
||||
|
||||
void uninitvar__builtin_memset(void)
|
||||
{
|
||||
void *s;
|
||||
|
|
Loading…
Reference in New Issue