Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0c7381a

Browse files
authored
Add files via upload
1 parent cd7c47e commit 0c7381a

3 files changed

Lines changed: 112 additions & 0 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
| test.c:10:29:10:35 | call to realloc | possible loss of original pointer on unsuccessful call realloc |
2+
| test.c:39:29:39:35 | call to realloc | possible loss of original pointer on unsuccessful call realloc |
3+
| test.c:83:29:83:35 | call to realloc | possible loss of original pointer on unsuccessful call realloc |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
experimental/Security/CWE/CWE-401/MemoryLeakOnFailedCallToRealloc.ql
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
#define size_t int
2+
#define NULL ((void*)0)
3+
4+
5+
unsigned char * badResize0(unsigned char * buffer,size_t currentSize,size_t newSize)
6+
{
7+
// BAD: on unsuccessful call to realloc, we will lose a pointer to a valid memory block
8+
if (currentSize < newSize)
9+
{
10+
buffer = (unsigned char *)realloc(buffer, newSize);
11+
}
12+
return buffer;
13+
}
14+
15+
unsigned char * goodResize0(unsigned char * buffer,size_t currentSize,size_t newSize)
16+
{
17+
// GOOD: this way we will exclude possible memory leak
18+
unsigned char * tmp;
19+
if (currentSize < newSize)
20+
{
21+
tmp = (unsigned char *)realloc(buffer, newSize);
22+
}
23+
if (tmp == NULL)
24+
{
25+
free(buffer);
26+
return NULL;
27+
}
28+
else
29+
buffer = tmp;
30+
return buffer;
31+
}
32+
unsigned char * badResize1(unsigned char * buffer,size_t currentSize,size_t newSize)
33+
{
34+
if(!buffer)
35+
exit(0);
36+
// BAD: on unsuccessful call to realloc, we will lose a pointer to a valid memory block
37+
if (currentSize < newSize)
38+
{
39+
buffer = (unsigned char *)realloc(buffer, newSize);
40+
}
41+
return buffer;
42+
}
43+
44+
unsigned char * noBadResize1(unsigned char * buffer,size_t currentSize,size_t newSize)
45+
{
46+
// GOOD: program to end
47+
if (currentSize < newSize)
48+
{
49+
buffer = (unsigned char *)realloc(buffer, newSize);
50+
}
51+
if(!buffer)
52+
exit(0);
53+
return buffer;
54+
}
55+
unsigned char * noBadResize1e(unsigned char * buffer,size_t currentSize,size_t newSize)
56+
{
57+
// GOOD: program to end
58+
if (currentSize < newSize)
59+
{
60+
buffer = (unsigned char *)realloc(buffer, newSize);
61+
}
62+
if(buffer)
63+
return buffer;
64+
else
65+
exit(0);
66+
}
67+
unsigned char * noBadResize1o(unsigned char * buffer,size_t currentSize,size_t newSize)
68+
{
69+
// GOOD: program to end
70+
if (currentSize < newSize)
71+
{
72+
if(buffer = (unsigned char *)realloc(buffer, newSize))
73+
exit(0);
74+
}
75+
return buffer;
76+
}
77+
unsigned char * badResize2(unsigned char * buffer,size_t currentSize,size_t newSize)
78+
{
79+
assert(buffer!=0);
80+
// BAD: on unsuccessful call to realloc, we will lose a pointer to a valid memory block
81+
if (currentSize < newSize)
82+
{
83+
buffer = (unsigned char *)realloc(buffer, newSize);
84+
}
85+
return buffer;
86+
}
87+
88+
unsigned char * noBadResize2(unsigned char * buffer,size_t currentSize,size_t newSize)
89+
{
90+
// GOOD: program to end
91+
if (currentSize < newSize)
92+
{
93+
buffer = (unsigned char *)realloc(buffer, newSize);
94+
assert(buffer!=0);
95+
}
96+
return buffer;
97+
}
98+
99+
unsigned char * noBadResize2e(unsigned char * buffer,size_t currentSize,size_t newSize)
100+
{
101+
// GOOD: program to end
102+
if (currentSize < newSize)
103+
{
104+
buffer = (unsigned char *)realloc(buffer, newSize);
105+
}
106+
assert(buffer!=0);
107+
return buffer;
108+
}

0 commit comments

Comments
 (0)