1*7c3d14c8STreehugger Robot // RUN: %clang_scudo %s -o %t 2*7c3d14c8STreehugger Robot // RUN: %run %t 2>&1 3*7c3d14c8STreehugger Robot 4*7c3d14c8STreehugger Robot // Tests that a regular workflow of allocation, memory fill and free works as 5*7c3d14c8STreehugger Robot // intended. Also tests that a zero-sized allocation succeeds. 6*7c3d14c8STreehugger Robot 7*7c3d14c8STreehugger Robot #include <malloc.h> 8*7c3d14c8STreehugger Robot #include <stdlib.h> 9*7c3d14c8STreehugger Robot #include <string.h> 10*7c3d14c8STreehugger Robot main(int argc,char ** argv)11*7c3d14c8STreehugger Robotint main(int argc, char **argv) 12*7c3d14c8STreehugger Robot { 13*7c3d14c8STreehugger Robot void *p; 14*7c3d14c8STreehugger Robot size_t size = 1U << 8; 15*7c3d14c8STreehugger Robot 16*7c3d14c8STreehugger Robot p = malloc(size); 17*7c3d14c8STreehugger Robot if (!p) 18*7c3d14c8STreehugger Robot return 1; 19*7c3d14c8STreehugger Robot memset(p, 'A', size); 20*7c3d14c8STreehugger Robot free(p); 21*7c3d14c8STreehugger Robot p = malloc(0); 22*7c3d14c8STreehugger Robot if (!p) 23*7c3d14c8STreehugger Robot return 1; 24*7c3d14c8STreehugger Robot free(p); 25*7c3d14c8STreehugger Robot 26*7c3d14c8STreehugger Robot return 0; 27*7c3d14c8STreehugger Robot } 28