2015-01-27 17:55:18 +01:00
|
|
|
|
|
|
|
// Test library configuration for std.cfg
|
|
|
|
//
|
|
|
|
// Usage:
|
|
|
|
// $ cppcheck --check-library --enable=information --error-exitcode=1 --inline-suppr cfg/test/std.c
|
|
|
|
// =>
|
|
|
|
// No warnings about bad library configuration, unmatched suppressions, etc. exitcode=0
|
|
|
|
//
|
|
|
|
|
|
|
|
#include <string.h>
|
2015-01-28 16:22:45 +01:00
|
|
|
#include <stdio.h>
|
2015-01-29 06:23:41 +01:00
|
|
|
#include <tgmath.h> // frexp
|
2015-01-27 17:55:18 +01:00
|
|
|
|
|
|
|
void strcpy_ok(char *a, char *b) {
|
|
|
|
strcpy(a,b);
|
|
|
|
}
|
|
|
|
|
|
|
|
void strcpy_bad() {
|
|
|
|
char a[10];
|
|
|
|
// cppcheck-suppress bufferAccessOutOfBounds
|
|
|
|
strcpy(a, "hello world!");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-01-28 16:22:45 +01:00
|
|
|
// null pointer
|
|
|
|
|
|
|
|
void nullpointer(int value){
|
|
|
|
int res = 0;
|
|
|
|
FILE *fp;
|
|
|
|
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
clearerr(0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
feof(0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
fgetc(0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
fclose(0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
ferror(0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
ftell(0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
puts(0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
fp=fopen(0,0);
|
|
|
|
fclose(fp); fp = 0;
|
|
|
|
// No FP
|
|
|
|
fflush(0);
|
|
|
|
// No FP
|
|
|
|
fp = freopen(0,"abc",stdin);
|
|
|
|
fclose(fp); fp = 0;
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
fputc(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
fputs(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
fgetpos(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
2015-01-29 06:07:48 +01:00
|
|
|
frexp(1.0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
2015-01-28 16:22:45 +01:00
|
|
|
fsetpos(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
itoa(123,0,10);
|
2015-01-30 06:51:03 +01:00
|
|
|
putchar(0);
|
2015-01-28 16:22:45 +01:00
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strchr(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strlen(0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strcpy(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strspn(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strcspn(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strcoll(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strcat(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strcmp(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strncpy(0,0,1);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strncat(0,0,1);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strncmp(0,0,1);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strstr(0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strtoul(0,0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strtoull(0,0,0);
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
strtol(0,0,0);
|
|
|
|
|
|
|
|
// #6100 False positive nullPointer - calling mbstowcs(NULL,)
|
|
|
|
res += mbstowcs(0,value,0);
|
|
|
|
res += wcstombs(0,value,0);
|
|
|
|
|
|
|
|
strtok(NULL,"xyz");
|
|
|
|
|
|
|
|
strxfrm(0,"foo",0);
|
|
|
|
// TODO: error message
|
|
|
|
strxfrm(0,"foo",42);
|
|
|
|
}
|
|
|
|
|
|
|
|
void nullpointerMemchr1(char *p, char *s) {
|
|
|
|
p = memchr (s, 'p', strlen(s));
|
|
|
|
}
|
|
|
|
|
|
|
|
void nullpointerMemchr2(char *p, char *s) {
|
|
|
|
p = memchr (s, 0, strlen(s));
|
|
|
|
}
|
|
|
|
|
|
|
|
void nullpointerMemchr3(char *p) {
|
|
|
|
char *s = 0;
|
|
|
|
// cppcheck-suppress nullPointer
|
|
|
|
p = memchr (s, 0, strlen(s));
|
|
|
|
}
|
2015-01-29 06:07:48 +01:00
|
|
|
|
|
|
|
void nullpointerMemcmp(char *p) {
|
2015-01-29 06:23:41 +01:00
|
|
|
// cppcheck-suppress nullPointer
|
2015-01-29 06:07:48 +01:00
|
|
|
memcmp(p, 0, 123);
|
|
|
|
}
|