User Tools

Site Tools


sei_cert_c_coding_standard

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
sei_cert_c_coding_standard [2019/08/06 21:04]
rpjday [2.2 PRE31-C. Avoid side effects in arguments to unsafe macros]
sei_cert_c_coding_standard [2019/08/06 21:17]
rpjday [3.5 DCL38-C. Use the correct syntax when declaring a flexible array member]
Line 23: Line 23:
 </​code>​ </​code>​
 ==== 2.3 PRE32-C. Do not use preprocessor directives in invocations of function-like macros ==== ==== 2.3 PRE32-C. Do not use preprocessor directives in invocations of function-like macros ====
 +
 +The arguments to a macro must not include preprocessor directives, such as #define, #ifdef, and #include.
 +
 +<​code>​
 +void func(const char *src) {
 +  /* Validate the source string; calculate size */
 +  char *dest;
 +  /* malloc() destination string */
 +  memcpy(dest,​ src,
 +    #ifdef PLATFORM1
 +      12
 +    #else
 +      24
 +    #endif
 +  );
 +  /* ... */
 +}
 +</​code>​
  
 ===== 3 Declarations and Initialization (DCL) ===== ===== 3 Declarations and Initialization (DCL) =====
Line 36: Line 54:
 ==== 3.5 DCL38-C. Use the correct syntax when declaring a flexible array member ==== ==== 3.5 DCL38-C. Use the correct syntax when declaring a flexible array member ====
  
 +  * The incomplete array type must be the last element within the structure.
 +  * There cannot be an array of structures that contain a flexible array member.
 +  * Structures that contain a flexible array member cannot be used as a member of another structure.
 +  * The structure must contain at least one named member in addition to the flexible array member.
 +
 +<​code>​
 +struct flexArrayStruct{
 +  int num;
 +  int data[];
 +};
 +</​code>​
 ==== 3.6 DCL39-C. Avoid information leakage when passing a structure across a trust boundary ==== ==== 3.6 DCL39-C. Avoid information leakage when passing a structure across a trust boundary ====
  
sei_cert_c_coding_standard.txt ยท Last modified: 2019/08/06 21:17 by rpjday