CWE
Home > CWE List > CWE-463 Individual Dictionary Definition (Draft 9)   View the CWE List

CWE-463 Individual Dictionary Definition (Draft 9)

Deletion of Data Structure Sentinel
Weakness ID
Status: Incomplete

463 (Weakness Base)

Description

Summary

The accidental deletion of a data-structure sentinel can cause serious programming logic problems.

Common Consequences

Availability: Generally this error will cause the data structure to not work properly.

Authorization: If a control character, such as NULL is removed, one may cause resource access control problems.

Potential Mitigations

Pre-design: Use a language or compiler that performs automatic bounds checking.

Design: Use an abstraction library to abstract away risky APIs. Not a complete solution.

Pre-design through Build: Compiler-based canary mechanisms such as StackGuard, ProPolice and the Microsoft Visual Studio /GS flag. Unless this provides automatic bounds checking, it is not a complete solution.

Operational: Use OS-level preventative functionality. Not a complete solution.

Demonstrative
Examples

C/C++ Example:

char *foo;
int counter;
foo=malloc(sizeof(char)*10);
for (counter=0;counter!=14;counter++) {
  foo[counter]='a';
  printf("%s\n",foo);
}

Context Notes

Often times data-structure sentinels are used to mark structure of the data structure. A common example of this is the null character at the end of strings. Another common example is linked lists which may contain a sentinel to mark the end of the list. It is, of course dangerous to allow this type of control data to be easily accessible. Therefore, it is important to protect from the deletion or modification outside of some wrapper interface which provides safety.

Relationships
NatureTypeIDName
ChildOfCategoryCategory461Data Structure Issues
Source Taxonomies

CLASP - Deletion of data-structure sentinel

Applicable Platforms

C

C++

Page Last Updated: April 22, 2008