func: void bad() void * data ; data = NULL; CWE122_Heap_Based_Buffer_Overflow__CWE135_84_bad * badObject = new CWE122_Heap_Based_Buffer_Overflow__CWE135_84_bad ( data ) ; CWE122_Heap_Based_Buffer_Overflow__CWE135_84_bad::CWE122_Heap_Based_Buffer_Overflow__CWE135_84_bad(void * dataCopy) data = dataCopy; wchar_t * dataBadBuffer = ( wchar_t * ) malloc ( 50 * sizeof ( wchar_t ) ) ; wmemset ( dataBadBuffer , L 'A' , 50 - 1 dataBadBuffer [ 50 - 1 ] = L '\0' data = ( void * ) dataBadBuffer; delete badObject CWE122_Heap_Based_Buffer_Overflow__CWE135_84_bad::~CWE122_Heap_Based_Buffer_Overflow__CWE135_84_bad() size_t dataLen = strlen ( ( char * ) data ) ; void * dest = ( void * ) calloc ( dataLen + 1 , 1 ) ; memcpy ( dest , data , ( dataLen + 1 ) ); free ( dest ); 