// Test library configuration for bsd.cfg // // Usage: // $ cppcheck --check-library --library=bsd --enable=style,information --inconclusive --error-exitcode=1 --disable=missingInclude --inline-suppr test/cfg/bsd.c // => // No warnings about bad library configuration, unmatched suppressions, etc. exitcode=0 // #include #include #include #include #include void nullPointer_setbuffer(FILE *stream, char *buf, size_t size) { // cppcheck-suppress nullPointer (void) setbuffer(NULL, buf, size); (void) setbuffer(stream, NULL, size); (void) setbuffer(stream, buf, size); } void nullPointer_setlinebuf(FILE *stream) { // cppcheck-suppress nullPointer (void)setlinebuf(NULL); (void)setlinebuf(stream); } // #9323, #9331 void verify_timercmp(struct timeval t) { (void)timercmp(&t, &t, <); (void)timercmp(&t, &t, <=); (void)timercmp(&t, &t, ==); (void)timercmp(&t, &t, !=); (void)timercmp(&t, &t, >=); (void)timercmp(&t, &t, >); } ssize_t nullPointer_readv(int fd, const struct iovec *iov, int iovcnt) { // cppcheck-suppress nullPointer (void)readv(fd,NULL,iovcnt); return readv(fd,iov,iovcnt); } ssize_t nullPointer_writev(int fd, const struct iovec *iov, int iovcnt) { // cppcheck-suppress nullPointer (void)writev(fd,NULL,iovcnt); return writev(fd,iov,iovcnt); } ssize_t nullPointer_preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset) { // cppcheck-suppress nullPointer (void)preadv(fd,NULL,iovcnt,offset); return preadv(fd,iov,iovcnt,offset); } ssize_t nullPointer_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset) { // cppcheck-suppress nullPointer (void)pwritev(fd,NULL,iovcnt,offset); return pwritev(fd,iov,iovcnt,offset); } // False negative: #9346 void uninitvar_timercmp(struct timeval t) { struct timeval uninit; (void)timercmp(&t, &uninit, <); (void)timercmp(&uninit, &t, <=); (void)timercmp(&uninit, &uninit, ==); } void nullPointer_timercmp(struct timeval t) { // cppcheck-suppress constVariablePointer struct timeval *p=0; // cppcheck-suppress nullPointer (void)timercmp(&t, p, <); // cppcheck-suppress nullPointer (void)timercmp(p, &t, <=); // cppcheck-suppress nullPointer (void)timercmp(p, p, ==); } // size_t strlcat(char *dst, const char *src, size_t size); void uninitvar_strlcat(char *Ct, const char *S, size_t N) { char *ct1, *ct2; char *s1, *s2; size_t n1, n2; // cppcheck-suppress uninitvar (void)strlcat(ct1,s1,n1); // cppcheck-suppress uninitvar (void)strlcat(ct2,S,N); // cppcheck-suppress uninitvar (void)strlcat(Ct,s2,N); // cppcheck-suppress uninitvar (void)strlcat(Ct,S,n2); // no warning is expected for (void)strlcat(Ct,S,N); } void bufferAccessOutOfBounds(void) { uint16_t uint16Buf[4]; // cppcheck-suppress bufferAccessOutOfBounds arc4random_buf(uint16Buf, 9); // valid arc4random_buf(uint16Buf, 8); } void ignoredReturnValue(void) { // cppcheck-suppress ignoredReturnValue arc4random(); // cppcheck-suppress ignoredReturnValue arc4random_uniform(10); } void invalidFunctionArg() { // cppcheck-suppress invalidFunctionArg (void) arc4random_uniform(1); // valid (void) arc4random_uniform(2); } void nullPointer(void) { // cppcheck-suppress nullPointer arc4random_buf(NULL, 5); } void uninitvar(void) { uint32_t uint32Uninit; // cppcheck-suppress uninitvar (void) arc4random_uniform(uint32Uninit); }