Skip to main content
assistive.skiplink.to.breadcrumbs
assistive.skiplink.to.header.menu
assistive.skiplink.to.action.menu
assistive.skiplink.to.quick.search
Log in
Confluence
Spaces
Hit enter to search
Help
Online Help
Keyboard Shortcuts
Feed Builder
What’s new
Available Gadgets
About Confluence
Log in
SEI CERT C Coding Standard
Pages
Boards
Space shortcuts
Dashboard
Secure Coding Home
Android
C
C++
Java
Perl
Page tree
Browse pages
Configure
Space tools
View Page
A
t
tachments (0)
Page History
Page Information
View in Hierarchy
View Source
Export to PDF
Export to Word
Pages
…
SEI CERT C Coding Standard
4 Back Matter
EE. Analyzers
Klocwork
Page Information
Title:
Klocwork
Author:
Robert Seacord
Feb 10, 2012
Last Changed by:
David Svoboda
Mar 06, 2025
Tiny Link:
(useful for email)
https://wiki.sei.cmu.edu/confluence/x/jdUxBQ
Export As:
Word
·
PDF
Incoming Links
SEI CERT C++ Coding Standard (6)
Page:
MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
Page:
MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime
Page:
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
Page:
ERR59-CPP. Do not throw an exception across execution boundaries
Page:
MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer
Page:
CTR52-CPP. Guarantee that library functions do not overflow
SEI CERT C Coding Standard (142)
Page:
MEM34-C. Only free memory allocated dynamically
Page:
INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors
Page:
EXP12-C. Do not ignore values returned by functions
Page:
MSC37-C. Ensure that control never reaches the end of a non-void function
Page:
FLP34-C. Ensure that floating-point conversions are within range of the new type
Page:
DCL07-C. Include the appropriate type information in function declarators
Page:
INT07-C. Use only explicitly signed or unsigned char type for numeric values
Page:
MSC13-C. Detect and remove unused values
Page:
DCL40-C. Do not create incompatible declarations of the same function or object
Page:
SIG34-C. Do not call signal() from within interruptible signal handlers
Page:
POS02-C. Follow the principle of least privilege
Page:
DCL20-C. Explicitly specify void when a function accepts no arguments
Page:
DCL37-C. Do not declare or define a reserved identifier
Page:
EXP45-C. Do not perform assignments in selection statements
Page:
DCL41-C. Do not declare variables inside a switch statement before the first case label
Page:
POS44-C. Do not use signals to terminate threads
Page:
POS36-C. Observe correct revocation order while relinquishing privileges
Page:
FIO38-C. Do not copy a FILE object
Page:
INT09-C. Ensure enumeration constants map to unique values
Page:
ARR01-C. Do not apply the sizeof operator to a pointer when taking the size of an array
Page:
DCL31-C. Declare identifiers before using them
Page:
CON05-C. Do not perform operations that can block while holding a lock
Page:
POS34-C. Do not call putenv() with a pointer to an automatic variable as the argument
Page:
PRE02-C. Macro replacement lists should be parenthesized
Page:
STR32-C. Do not pass a non-null-terminated character sequence to a library function that expects a string
Page:
MSC39-C. Do not call va_arg() on a va_list that has an indeterminate value
Page:
EXP00-C. Use parentheses for precedence of operation
Page:
PRE00-C. Prefer inline or static functions to function-like macros
Page:
PRE30-C. Do not create a universal character name through concatenation
Page:
ENV33-C. Do not call system()
Page:
FIO34-C. Distinguish between characters read from a file and EOF or WEOF
Page:
ERR33-C. Detect and handle standard library errors
Page:
ARR36-C. Do not subtract or compare two pointers that do not refer to the same array
Page:
DCL10-C. Maintain the contract between the writer and caller of variadic functions
Page:
EXP39-C. Do not access a variable through a pointer of an incompatible type
Page:
MEM00-C. Allocate and free memory in the same module, at the same level of abstraction
Page:
EXP19-C. Use braces for the body of an if, for, or while statement
Page:
SIG35-C. Do not return from a computational exception signal handler
Page:
MSC07-C. Detect and remove dead code
Page:
FLP30-C. Do not use floating-point variables as loop counters
Page:
FIO01-C. Be careful using functions that use file names for identification
Page:
CON35-C. Avoid deadlock by locking in a predefined order
Page:
MSC32-C. Properly seed pseudorandom number generators
Page:
EXP43-C. Avoid undefined behavior when using restrict-qualified pointers
Page:
POS35-C. Avoid race conditions while checking for the existence of a symbolic link
Page:
CON36-C. Wrap functions that can spuriously wake up in a loop
Page:
EXP15-C. Do not place a semicolon on the same line as an if, for, or while statement
Page:
ARR37-C. Do not add or subtract an integer to a pointer to a non-array object
Page:
INT02-C. Understand integer conversion rules
Page:
PRE32-C. Do not use preprocessor directives in invocations of function-like macros
Page:
FLP07-C. Cast the return value of a function that returns a floating-point type
Page:
MEM35-C. Allocate sufficient memory for an object
Page:
STR05-C. Use pointers to const when referring to string literals
Page:
DCL01-C. Do not reuse variable names in subscopes
Page:
DCL13-C. Declare function parameters that are pointers to values not changed by the function as const
Page:
FLP36-C. Preserve precision when converting integral values to floating-point type
Page:
ENV34-C. Do not store pointers returned by certain functions
Page:
EXP44-C. Do not rely on side effects in operands to sizeof, _Alignof, or _Generic
Page:
FIO22-C. Close files before spawning processes
Page:
POS39-C. Use the correct byte ordering when transferring data between systems
Page:
DCL39-C. Avoid information leakage when passing a structure across a trust boundary
Page:
INT13-C. Use bitwise operators only on unsigned operands
Page:
MSC33-C. Do not pass invalid data to the asctime() function
Page:
STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
Page:
INT36-C. Converting a pointer to integer or integer to pointer
Page:
PRE10-C. Wrap multistatement macros in a do-while loop
Page:
ARR32-C. Ensure size arguments for variable length arrays are in a valid range
Page:
DCL18-C. Do not begin integer constants with 0 when specifying a decimal value
Page:
EXP10-C. Do not depend on the order of evaluation of subexpressions or the order in which side effects take place
Page:
EXP32-C. Do not access a volatile object through a nonvolatile reference
Page:
STR02-C. Sanitize data passed to complex subsystems
Page:
EXP33-C. Do not read uninitialized memory
Page:
EXP34-C. Do not dereference null pointers
Page:
DCL30-C. Declare objects with appropriate storage durations
Page:
STR34-C. Cast characters to unsigned char before converting to larger integer sizes
Page:
WIN30-C. Properly pair allocation and deallocation functions
Page:
POS47-C. Do not use threads that can be canceled asynchronously
Page:
FIO42-C. Close files when they are no longer needed
Page:
EXP02-C. Be aware of the short-circuit behavior of the logical AND and OR operators
Page:
DCL23-C. Guarantee that mutually visible identifiers are unique
Page:
DCL11-C. Understand the type issues associated with variadic functions
Page:
INT32-C. Ensure that operations on signed integers do not result in overflow
Page:
INT30-C. Ensure that unsigned integer operations do not wrap
Page:
MEM30-C. Do not access freed memory
Page:
PRE31-C. Avoid side effects in arguments to unsafe macros
Page:
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
Page:
ARR39-C. Do not add or subtract a scaled integer to a pointer
Page:
CON40-C. Do not refer to an atomic variable twice in an expression
Page:
FIO45-C. Avoid TOCTOU race conditions while accessing files
Page:
MEM36-C. Do not modify the alignment of objects by calling realloc()
Page:
EXP16-C. Do not compare function pointers to constant values
Page:
FIO46-C. Do not access a closed file
Page:
STR38-C. Do not confuse narrow and wide character strings and functions
Page:
ARR00-C. Understand how arrays work
Page:
FIO47-C. Use valid format strings
Page:
CON37-C. Do not call signal() in a multithreaded program
Page:
ERR32-C. Do not rely on indeterminate values of errno
Page:
STR03-C. Do not inadvertently truncate a string
Page:
MSC41-C. Never hard code sensitive information
Page:
PRE06-C. Enclose header files in an include guard
Page:
EXP08-C. Ensure pointer arithmetic is used correctly
Page:
POS37-C. Ensure that privilege relinquishment is successful
Page:
FLP37-C. Do not use object representations to compare floating-point values
Page:
PRE01-C. Use parentheses within macros around parameter names
Page:
POS05-C. Limit access to files by creating a jail
Page:
FIO30-C. Exclude user input from format strings
Page:
EXP46-C. Do not use a bitwise operator with a Boolean-like operand
Page:
MEM12-C. Consider using a goto chain when leaving a function on error when using and releasing resources
Page:
MEM33-C. Allocate and copy structures containing a flexible array member dynamically
Page:
POS51-C. Avoid deadlock with POSIX threads by locking in predefined order
Page:
FIO02-C. Canonicalize path names originating from tainted sources
Page:
DCL36-C. Do not declare an identifier with conflicting linkage classifications
Page:
MSC12-C. Detect and remove code that has no effect or is never executed
Page:
MSC40-C. Do not violate constraints
Page:
EXP30-C. Do not depend on the order of evaluation for side effects
Page:
INT12-C. Do not make assumptions about the type of a plain int bit-field when used in an expression
Page:
ERR30-C. Take care when reading errno
Page:
INT04-C. Enforce limits on integer values originating from tainted sources
Page:
ENV01-C. Do not make assumptions about the size of an environment variable
Page:
MSC30-C. Do not use the rand() function for generating pseudorandom numbers
Page:
MSC17-C. Finish every set of statements associated with a case label with a break statement
Page:
POS52-C. Do not perform operations that can block while holding a POSIX lock
Page:
DCL06-C. Use meaningful symbolic constants to represent literal values
Page:
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
Page:
POS54-C. Detect and handle POSIX library errors
Page:
PRE05-C. Understand macro replacement when concatenating tokens or performing stringification
Page:
SIG30-C. Call only asynchronous-safe functions within signal handlers
Page:
MEM05-C. Avoid large stack allocations
Page:
CON38-C. Preserve thread safety and liveness when using condition variables
Page:
MSC14-C. Do not introduce unnecessary platform dependencies
Page:
ENV30-C. Do not modify the object referenced by the return value of certain functions
Page:
MSC01-C. Strive for logical completeness
Page:
ERR34-C. Detect errors when converting a string to a number
Page:
EXP37-C. Call functions with the correct number and type of arguments
Page:
CON41-C. Wrap functions that can fail spuriously in a loop
Page:
STR37-C. Arguments to character-handling functions must be representable as an unsigned char
Page:
WIN00-C. Be specific when dynamically loading libraries
Page:
INT34-C. Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand
Page:
DCL38-C. Use the correct syntax when declaring a flexible array member
Page:
EXP42-C. Do not compare padding data
Page:
MEM31-C. Free dynamically allocated memory when no longer needed
Page:
CON33-C. Avoid race conditions when using library functions
Hierarchy
Parent Page
Page:
EE. Analyzers
Labels
Global Labels (1)
analyzer
Recent Changes
Time
Editor
Mar 06, 2025 09:03
David Svoboda
View Changes
Feb 24, 2025 02:39
David Svoboda
View Changes
Feb 24, 2025 02:38
David Svoboda
View Changes
Dec 06, 2024 13:00
David Svoboda
View Changes
Dec 06, 2024 08:00
David Svoboda
View Page History
Outgoing Links
External Links (152)
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
SEI CERT C Coding Standard (1)
Page:
Klocwork_V
Overview
Content Tools
{"serverDuration": 630, "requestCorrelationId": "89276ff8986b4080"}