In this section:
This error is generated whenever a block of memory indicated by a pointer will be written outside its valid range.
|
This code attempts to copy a string into the array a, which is not large enough.
/*
* File: writover.c
*/
main()
{
int junk;
char a[10];
strcpy(a, "A simple test");
return (0);
} |
Another problem includes writovr2.c. A diagnosis similar to the one that follows applies.
[writover.c:9] **WRITE_OVERFLOW** >> strcpy(a, "A simple test"); Writing overflows memory: <argument 1> ---- Associated Common Weakness Enumerations ---- CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer CWE-120: Buffer copy without checking size of input CWE-788: Access of memory location after end of buffer CWE-787: Out-of-bounds write CWE-170: Improper NULL termination bbbbbbbbbb | 10 | 4 | wwwwwwwwwwwwwwww Writing (w): 0xf7fffafc thru 0xf7fffb09 (14 bytes) To block (b): 0xf7fffafc thru 0xf7fffb05 (10 bytes) a, declared at writover.c, 7 Stack trace where the error occurred: strcpy () (interface) main() writover.c, 9 |
This error often occurs when working with strings. In most cases, a simple fix is to increase the size of the destination object.
The table below shows Common Weakness Enumerations associated with this error.
| CWE | Description |
|---|---|
| CWE-119 | Improper Restriction of Operations within the Bounds of a Memory Buffer |
| CWE-120 | Buffer copy without checking size of input |
| CWE-788 | Access of memory location after end of buffer |
| CWE-787 | Out-of-bounds write |
| CWE-170 | Improper NULL termination |