brintos

brintos / llvm-project-archived public Read only

0
0
Text · 906 B · c787a76 Raw
27 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=unix.MallocSizeof -verify %s2 3#include <stddef.h>4 5void *malloc(size_t size);6void *calloc(size_t nmemb, size_t size);7void *realloc(void *ptr, size_t size);8void free(void *ptr);9 10struct A {};11struct B {};12 13void foo(unsigned int unsignedInt, unsigned int readSize) {14  // Verify the checker is working as expected.15  A* a = static_cast<A*>(malloc(sizeof(int))); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'A', which is incompatible with sizeof operand type 'int'}}16  free(a);17}18 19void bar() {20  A *x = static_cast<A*>(calloc(10, sizeof(void*))); // expected-warning {{Result of 'calloc' is converted to a pointer of type 'A', which is incompatible with sizeof operand type 'void *'}}21  // sizeof(void*) is compatible with any pointer.22  A **y = static_cast<A**>(calloc(10, sizeof(void*))); // no-warning23  free(x);24  free(y);25}26 27