You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 134 Next »

Recommendations

DCL00-A. Const-qualify immutable objects

DCL01-A. Do not reuse variable names in subscopes

DCL02-A. Use visually distinct identifiers

DCL03-A. Use a static assertion to test the value of a constant expression

DCL04-A. Do not declare more than one variable per declaration

DCL05-A. Use typedefs to improve code readability

DCL06-A. Use meaningful symbolic constants to represent literal values in program logic

DCL07-A. Include the appropriate type information in function declarators

DCL08-A. Properly encode relationships in constant definitions

DCL09-A. Declare functions that return an errno error code with a return type of errno_t

DCL10-A. Maintain the contract between the writer and caller of variadic functions

DCL11-A. Ensure type consistency when using variadic functions

DCL12-A. Implement abstract data types using opaque types

DCL13-A. Declare function parameters that are pointers to values not changed by the function as const

DCL14-A. Do not make assumptions about the order of global variable initialization across translation units

DCL15-A. Declare objects that do not need external linkage with the storage-class specifier static

Rules

DCL30-C. Declare objects with appropriate storage durations

DCL31-C. Declare identifiers before using them

DCL32-C. Guarantee that mutually visible identifiers are unique

DCL33-C. Ensure that restrict-qualified source and destination pointers in function arguments do not reference overlapping objects

DCL34-C. Use volatile for data that cannot be cached

DCL35-C. Do not invoke a function using a type that does not match the function definition

DCL36-C. Do not declare an identifier with conflicting linkage classifications

Risk Assessment Summary

Recommendation

Severity

Likelihood

Remediation Cost

Priority

Level

DCL00-A

low

unlikely

high

P1

L3

DCL01-A

low

unlikely

medium

P2

L3

DCL02-A

low

unlikely

medium

P2

L3

DCL03-A

low

unlikely

high

P1

L3

DCL04-A

low

unlikely

low

P3

L3

DCL05-A

low

unlikely

medium

P2

L3

DCL06-A

low

unlikely

medium

P2

L3

DCL07-A

low

unlikely

low

P3

L3

DCL08-A

low

unlikely

high

P1

L3

DCL09-A

low

unlikely

low

P3

L3

DCL10-A

high

probable

high

P6

L2

DCL11-A

high

probable

high

P6

L2

DCL12-A

low

unlikely

high

P1

L3

DCL13-A

low

unlikely

low

P3

L3

DCL14-A

medium

probable

medium

P8

L2

DCL15-A

low

unlikely

low

P3

L3

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

DCL30-C

high

probable

high

P6

L2

DCL31-C

low

unlikely

low

P3

L3

DCL32-C

medium

unlikely

low

P6

L2

DCL33-C

medium

probable

high

P4

L3

DCL34-C

low

probable

high

P2

L3

DCL35-C

low

probable

medium

P4

L3

DCL36-C

medium

probable

medium

P8

L2


PRE31-C. Never invoke an unsafe macro with arguments containing assignment, increment, decrement, volatile access, or function call - CERT Secure Coding Standards      01. Preprocessor (PRE)       DCL00-A. Const-qualify immutable objects

  • No labels