Added list of bugs that cppcheck find (incomplete)
This commit is contained in:
parent
0b5e6a55d4
commit
a51e012a5a
|
@ -0,0 +1,57 @@
|
||||||
|
|
||||||
|
List of bugs that c++check finds
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Buffer overrun:
|
||||||
|
|
||||||
|
// using numeric array index
|
||||||
|
char str[100];
|
||||||
|
str[100] = 0;
|
||||||
|
|
||||||
|
// using constant array index
|
||||||
|
char str2[SIZE];
|
||||||
|
str[SIZE] = 0;
|
||||||
|
|
||||||
|
// Calculating array index with constants and numbers
|
||||||
|
int i[100];
|
||||||
|
i[sizeof(i)-1] = 0;
|
||||||
|
|
||||||
|
// In some cases, it's detected when a variable causes buffer overrun:
|
||||||
|
char str[100];
|
||||||
|
for (int i = 0; i <= 100; i++)
|
||||||
|
str[i] = 0;
|
||||||
|
|
||||||
|
// Using 'strcpy' and 'strcat' can result in buffer overrun..
|
||||||
|
char str[3];
|
||||||
|
strcpy(str, "abc");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Memory leaks:
|
||||||
|
|
||||||
|
// No deallocation at all
|
||||||
|
{
|
||||||
|
Fred *fred = new Fred;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mismatching allocation / deallocation
|
||||||
|
char *str = new char[10];
|
||||||
|
delete str; // Should be 'delete [] str'
|
||||||
|
|
||||||
|
// An execution path may prevent a variable from being deallocated:
|
||||||
|
char *str = new char[10];
|
||||||
|
if (ab == cd)
|
||||||
|
return; // or 'continue' or 'break'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Class constructors:
|
||||||
|
|
||||||
|
Check that all member variables are initialized.
|
||||||
|
|
||||||
|
Check that all private member functions are used.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue