本文整理汇总了C++中ALLOCA函数的典型用法代码示例。如果您正苦于以下问题:C++ ALLOCA函数的具体用法?C++ ALLOCA怎么用?C++ ALLOCA使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ALLOCA函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: goodG2B
/* goodG2B() uses the GoodSource with the BadSink */
static void goodG2B()
{
wchar_t * data;
wchar_t * &dataRef = data;
wchar_t * dataBuffer = (wchar_t *)ALLOCA(100*sizeof(wchar_t));
wmemset(dataBuffer, L'A', 100-1);
dataBuffer[100-1] = L'\0';
/* FIX: Set data pointer to the allocated memory buffer */
data = dataBuffer;
{
wchar_t * data = dataRef;
{
wchar_t dest[100];
wmemset(dest, L'C', 100-1); /* fill with 'C's */
dest[100-1] = L'\0'; /* null terminate */
/* POTENTIAL FLAW: Possibly copy from a memory location located before the source buffer */
memmove(dest, data, 100*sizeof(wchar_t));
/* Ensure null termination */
dest[100-1] = L'\0';
printWLine(dest);
}
}
}
示例2: bad
void bad()
{
long * data;
data = NULL; /* Initialize data */
if(globalReturnsTrue())
{
{
/* FLAW: data is allocated on the stack and deallocated in the BadSink */
long * dataBuffer = (long *)ALLOCA(100*sizeof(long));
{
size_t i;
for (i = 0; i < 100; i++)
{
dataBuffer[i] = 5L;
}
}
data = dataBuffer;
}
}
printLongLine(data[0]);
/* POTENTIAL FLAW: Possibly deallocating memory allocated on the stack */
delete [] data;
}
开发者ID:maurer,项目名称:tiamat,代码行数:23,代码来源:CWE590_Free_Memory_Not_on_Heap__delete_array_long_alloca_11.cpp
示例3: goodG2B1
/* goodG2B1() - use goodsource and badsink by changing the first STATIC_CONST_FIVE==5 to STATIC_CONST_FIVE!=5 */
static void goodG2B1()
{
wchar_t * data;
data = NULL;
if(STATIC_CONST_FIVE!=5)
{
/* INCIDENTAL: CWE 561 Dead Code, the code below will never run */
printLine("Benign, fixed string");
}
else
{
/* FIX: Use memory allocated on the stack with ALLOCA */
data = (wchar_t *)ALLOCA(100*sizeof(wchar_t));
/* Initialize and make use of data */
wcscpy(data, L"A String");
printWLine(data);
}
if(STATIC_CONST_FIVE==5)
{
/* POTENTIAL FLAW: No deallocation */
; /* empty statement needed for some flow variants */
}
}
示例4: goodG2B1
/* goodG2B1() - use goodsource and badsink by changing the first STATIC_CONST_TRUE to STATIC_CONST_FALSE */
static void goodG2B1()
{
int64_t * data;
data = NULL;
if(STATIC_CONST_FALSE)
{
/* INCIDENTAL: CWE 561 Dead Code, the code below will never run */
printLine("Benign, fixed string");
}
else
{
/* FIX: Use memory allocated on the stack with ALLOCA */
data = (int64_t *)ALLOCA(100*sizeof(int64_t));
/* Initialize and make use of data */
data[0] = 5LL;
printLongLongLine(data[0]);
}
if(STATIC_CONST_TRUE)
{
/* POTENTIAL FLAW: No deallocation */
; /* empty statement needed for some flow variants */
}
}
示例5: goodG2B
/* goodG2B() - use goodsource and badsink by changing the conditions on the while statements */
static void goodG2B()
{
char * data;
char * dataBuffer = (char *)ALLOCA(100*sizeof(char));
memset(dataBuffer, 'A', 100-1);
dataBuffer[100-1] = '\0';
while(1)
{
/* FIX: Set data pointer to the allocated memory buffer */
data = dataBuffer;
break;
}
{
char dest[100];
memset(dest, 'C', 100-1); /* fill with 'C's */
dest[100-1] = '\0'; /* null terminate */
/* POTENTIAL FLAW: Possibly copy from a memory location located before the source buffer */
memmove(dest, data, 100*sizeof(char));
/* Ensure null termination */
dest[100-1] = '\0';
printLine(dest);
}
}
示例6: CWE590_Free_Memory_Not_on_Heap__free_long_alloca_11_bad
void CWE590_Free_Memory_Not_on_Heap__free_long_alloca_11_bad()
{
long * data;
data = NULL; /* Initialize data */
if(globalReturnsTrue())
{
{
/* FLAW: data is allocated on the stack and deallocated in the BadSink */
long * dataBuffer = (long *)ALLOCA(100*sizeof(long));
{
size_t i;
for (i = 0; i < 100; i++)
{
dataBuffer[i] = 5L;
}
}
data = dataBuffer;
}
}
printLongLine(data[0]);
/* POTENTIAL FLAW: Possibly deallocating memory allocated on the stack */
free(data);
}
示例7: bad
void bad()
{
int * data;
data = NULL; /* Initialize data */
if(staticTrue)
{
{
/* FLAW: data is allocated on the stack and deallocated in the BadSink */
int * dataBuffer = (int *)ALLOCA(100*sizeof(int));
{
size_t i;
for (i = 0; i < 100; i++)
{
dataBuffer[i] = 5;
}
}
data = dataBuffer;
}
}
printIntLine(data[0]);
/* POTENTIAL FLAW: Possibly deallocating memory allocated on the stack */
delete [] data;
}
开发者ID:maurer,项目名称:tiamat,代码行数:23,代码来源:CWE590_Free_Memory_Not_on_Heap__delete_array_int_alloca_05.cpp
示例8: good1
/* good1() uses if(globalReturnsFalse()) instead of if(globalReturnsTrue()) */
static void good1()
{
if(globalReturnsFalse())
{
/* INCIDENTAL: CWE 561 Dead Code, the code below will never run */
printLine("Benign, fixed string");
}
else
{
{
twoIntsStruct data;
twoIntsStruct * pointer = (twoIntsStruct *)ALLOCA(sizeof(twoIntsStruct));
data.intOne = 1;
data.intTwo = 2;
*pointer = data; /* FIX: Assign a value to the thing pointed to by pointer */
{
twoIntsStruct data = *pointer;
printIntLine(data.intOne);
printIntLine(data.intTwo);
}
}
}
}
示例9: goodG2B
/* goodG2B() uses the GoodSource with the BadSink */
static void goodG2B()
{
wchar_t * data;
wchar_t * dataBuffer = (wchar_t *)ALLOCA(100*sizeof(wchar_t));
wmemset(dataBuffer, L'A', 100-1);
dataBuffer[100-1] = L'\0';
/* FIX: Set data pointer to the allocated memory buffer */
data = dataBuffer;
{
wchar_t * dataCopy = data;
wchar_t * data = dataCopy;
{
wchar_t source[100];
wmemset(source, L'C', 100-1); /* fill with 'C's */
source[100-1] = L'\0'; /* null terminate */
/* POTENTIAL FLAW: Possibly copying data to memory before the destination buffer */
wcsncpy(data, source, 100-1);
/* Ensure the destination buffer is null terminated */
data[100-1] = L'\0';
printWLine(data);
}
}
}
示例10: goodG2B1
/* goodG2B1() - use goodsource and badsink by changing the staticReturnsTrue() to staticReturnsFalse() */
static void goodG2B1()
{
char * data;
char * dataBuffer = (char *)ALLOCA(100*sizeof(char));
data = dataBuffer;
if(staticReturnsFalse())
{
/* INCIDENTAL: CWE 561 Dead Code, the code below will never run */
printLine("Benign, fixed string");
}
else
{
/* FIX: Initialize data as a small buffer that as small or smaller than the small buffer used in the sink */
memset(data, 'A', 50-1); /* fill with 'A's */
data[50-1] = '\0'; /* null terminate */
}
{
char dest[50] = "";
/* POTENTIAL FLAW: Possible buffer overflow if data is larger than sizeof(dest)-strlen(dest)*/
strcat(dest, data);
printLine(data);
}
}
示例11: goodG2B2
/* goodG2B2() - use goodsource and badsink by reversing the blocks in the first if */
static void goodG2B2()
{
TwoIntsClass * data;
data = reinterpret_cast<TwoIntsClass *>(ALLOCA(10*sizeof(TwoIntsClass)));
if(1)
{
/* FIX: Completely initialize data */
for(int i=0; i<10; i++)
{
data[i].intOne = i;
data[i].intTwo = i;
}
}
if(1)
{
/* POTENTIAL FLAW: Use data without initializing it */
for(int i=0; i<10; i++)
{
printIntLine(data[i].intOne);
printIntLine(data[i].intTwo);
}
}
}
开发者ID:maurer,项目名称:tiamat,代码行数:24,代码来源:CWE457_Use_of_Uninitialized_Variable__twointsclass_array_alloca_no_init_02.cpp
示例12: goodG2B
/* goodG2B() - use goodsource and badsink by reversing the blocks on the goto statement */
static void goodG2B()
{
wchar_t * data;
wchar_t * dataBuffer = (wchar_t *)ALLOCA(100*sizeof(wchar_t));
data = dataBuffer;
goto source;
source:
/* FIX: Initialize data as a small buffer that as small or smaller than the small buffer used in the sink */
wmemset(data, L'A', 50-1); /* fill with L'A's */
data[50-1] = L'\0'; /* null terminate */
{
wchar_t dest[50] = L"";
size_t i, dataLen;
dataLen = wcslen(data);
/* POTENTIAL FLAW: Possible buffer overflow if data is larger than dest */
for (i = 0; i < dataLen; i++)
{
dest[i] = data[i];
}
dest[50-1] = L'\0'; /* Ensure the destination buffer is null terminated */
printWLine(data);
}
}
开发者ID:maurer,项目名称:tiamat,代码行数:24,代码来源:CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_alloca_loop_18.c
示例13: CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_alloca_loop_18_bad
void CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_alloca_loop_18_bad()
{
wchar_t * data;
wchar_t * dataBuffer = (wchar_t *)ALLOCA(100*sizeof(wchar_t));
data = dataBuffer;
goto source;
source:
/* FLAW: Initialize data as a large buffer that is larger than the small buffer used in the sink */
wmemset(data, L'A', 100-1); /* fill with L'A's */
data[100-1] = L'\0'; /* null terminate */
{
wchar_t dest[50] = L"";
size_t i, dataLen;
dataLen = wcslen(data);
/* POTENTIAL FLAW: Possible buffer overflow if data is larger than dest */
for (i = 0; i < dataLen; i++)
{
dest[i] = data[i];
}
dest[50-1] = L'\0'; /* Ensure the destination buffer is null terminated */
printWLine(data);
}
}
开发者ID:maurer,项目名称:tiamat,代码行数:23,代码来源:CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_alloca_loop_18.c
示例14: CWE127_Buffer_Underread__char_alloca_ncpy_17_bad
void CWE127_Buffer_Underread__char_alloca_ncpy_17_bad()
{
int i;
char * data;
char * dataBuffer = (char *)ALLOCA(100*sizeof(char));
memset(dataBuffer, 'A', 100-1);
dataBuffer[100-1] = '\0';
for(i = 0; i < 1; i++)
{
/* FLAW: Set data pointer to before the allocated memory buffer */
data = dataBuffer - 8;
}
{
char dest[100];
memset(dest, 'C', 100-1); /* fill with 'C's */
dest[100-1] = '\0'; /* null terminate */
/* POTENTIAL FLAW: Possibly copy from a memory location located before the source buffer */
strncpy(dest, data, strlen(dest));
/* Ensure null termination */
dest[100-1] = '\0';
printLine(dest);
}
}
示例15: bad
void bad()
{
int64_t * data;
list<int64_t *> dataList;
data = NULL; /* Initialize data */
{
/* FLAW: data is allocated on the stack and deallocated in the BadSink */
int64_t * dataBuffer = (int64_t *)ALLOCA(100*sizeof(int64_t));
{
size_t i;
for (i = 0; i < 100; i++)
{
dataBuffer[i] = 5LL;
}
}
data = dataBuffer;
}
/* Put data in a list */
dataList.push_back(data);
dataList.push_back(data);
dataList.push_back(data);
badSink(dataList);
}
开发者ID:maurer,项目名称:tiamat,代码行数:23,代码来源:CWE590_Free_Memory_Not_on_Heap__delete_array_int64_t_alloca_73a.cpp