# Coverity Static Analysis Support for SEI CERT C, C++, and Java Coding Standards

##### See support in Coverity version 2026.6.0

[Request a demo](/content/static-analysis-tools-sast/coverity/demo.html) [Get pricing](/content/static-analysis-tools-sast/coverity/get-pricing.html)

## CERT C rule coverage

|     |     |     |     |
| --- | --- | --- | --- |
| Section | Rules<br>SupportedAll | % Coverage |
| All | 118 | 121 | 97.5 |
| PRE | 3 | 3 | 100.0 |
| DCL | 8 | 8 | 100.0 |
| EXP | 15 | 15 | 100.0 |
| INT | 7 | 7 | 100.0 |
| FLP | 5 | 5 | 100.0 |
| ARR | 6 | 6 | 100.0 |
| STR | 6 | 6 | 100.0 |
| MEM | 6 | 6 | 100.0 |
| FIO | 13 | 13 | 100.0 |
| ENV | 5 | 5 | 100.0 |
| SIG | 4 | 4 | 100.0 |
| ERR | 4 | 4 | 100.0 |
| CON | 13 | 13 | 100.0 |
| MSC | 8 | 8 | 100.0 |
| POS | 14 | 17 | 82.4 |
| WIN | 1 | 1 | 100.0 |

## CERT C supported rules

|     |     |
| --- | --- |
| Rule | Description |
| [PRE30-C](https://www.securecoding.cert.org/confluence/display/c/PRE30-C.+Do+not+create+a+universal+character+name+through+concatenation) | Do not create a universal character name through concatenation. |
| [PRE31-C](https://www.securecoding.cert.org/confluence/display/c/PRE31-C.+Avoid+side+effects+in+arguments+to+unsafe+macros) | Avoid side effects in arguments to unsafe macros. |
| [PRE32-C](https://www.securecoding.cert.org/confluence/display/c/PRE32-C.+Do+not+use+preprocessor+directives+in+invocations+of+function-like+macros) | Do not use preprocessor directives in invocations of function-like macros. |
| [DCL30-C](https://www.securecoding.cert.org/confluence/display/c/DCL30-C.+Declare+objects+with+appropriate+storage+durations) | Declare objects with appropriate storage durations. |
| [DCL31-C](https://www.securecoding.cert.org/confluence/display/c/DCL31-C.+Declare+identifiers+before+using+them) | Declare identifiers before using them. |
| [DCL36-C](https://www.securecoding.cert.org/confluence/display/c/DCL36-C.+Do+not+declare+an+identifier+with+conflicting+linkage+classifications) | Do not declare an identifier with conflicting linkage classifications. |
| [DCL37-C](https://www.securecoding.cert.org/confluence/display/c/DCL37-C.+Do+not+declare+or+define+a+reserved+identifier) | Do not declare or define a reserved identifier. |
| [DCL38-C](https://www.securecoding.cert.org/confluence/display/c/DCL38-C.+Use+the+correct+syntax+when+declaring+a+flexible+array+member) | Use the correct syntax when declaring a flexible array member. |
| [DCL39-C](https://www.securecoding.cert.org/confluence/display/c/DCL39-C.+Avoid+information+leakage+when+passing+a+structure+across+a+trust+boundary) | Avoid information leakage when passing a structure across a trust boundary. |
| [DCL40-C](https://www.securecoding.cert.org/confluence/display/c/DCL40-C.+Do+not+create+incompatible+declarations+of+the+same+function+or+object) | Do not create incompatible declarations of the same function or object. |
| [DCL41-C](https://www.securecoding.cert.org/confluence/display/c/DCL41-C.+Do+not+declare+variables+inside+a+switch+statement+before+the+first+case+label) | Do not declare variables inside a switch statement before the first case label. |
| [EXP30-C](https://www.securecoding.cert.org/confluence/display/c/EXP30-C.+Do+not+depend+on+order+of+evaluation+for+side+effects) | Do not depend on order of evaluation for side effects. |
| [EXP32-C](https://www.securecoding.cert.org/confluence/display/c/EXP32-C.+Do+not+access+a+volatile+object+through+a+nonvolatile+reference) | Do not access a volatile object through a nonvolatile reference. |
| [EXP33-C](https://www.securecoding.cert.org/confluence/display/c/EXP33-C.+Do+not+read+uninitialized+memory) | Do not read uninitialized memory. |
| [EXP34-C](https://www.securecoding.cert.org/confluence/display/c/EXP34-C.+Do+not+dereference+null+pointers) | Do not dereference null pointers. |
| [EXP35-C](https://www.securecoding.cert.org/confluence/display/c/EXP35-C.+Do+not+modify+objects+with+temporary+lifetime) | Do not modify objects with temporary lifetime. |
| [EXP36-C](https://www.securecoding.cert.org/confluence/display/c/EXP36-C.+Do+not+cast+pointers+into+more+strictly+aligned+pointer+types) | Do not cast pointers into more strictly aligned pointer types. |
| [EXP37-C](https://www.securecoding.cert.org/confluence/display/c/EXP37-C.+Call+functions+with+the+correct+number+and+type+of+arguments) | Call functions with the correct number and type of arguments. |
| [EXP39-C](https://www.securecoding.cert.org/confluence/display/c/EXP39-C.+Do+not+access+a+variable+through+a+pointer+of+an+incompatible+type) | Do not access a variable through a pointer of an incompatible type. |
| [EXP40-C](https://www.securecoding.cert.org/confluence/display/c/EXP40-C.+Do+not+modify+constant+objects) | Do not modify constant objects. |
| [EXP42-C](https://www.securecoding.cert.org/confluence/display/c/EXP42-C.+Do+not+compare+padding+data) | Do not compare padding data. |
| [EXP43-C](https://www.securecoding.cert.org/confluence/display/c/EXP43-C.+Avoid+undefined+behavior+when+using+restrict-qualified+pointers) | Avoid undefined behavior when using restrict-qualified pointers. |
| [EXP44-C](https://www.securecoding.cert.org/confluence/display/c/EXP44-C.+Do+not+rely+on+side+effects+in+operands+to+sizeof,+_Alignof,+or+_Generic) | Do not rely on side effects in operands to sizeof, \_Alignof, or \_Generic. |
| [EXP45-C](https://www.securecoding.cert.org/confluence/display/c/EXP45-C.+Do+not+perform+assignments+in+selection+statements) | Do not perform assignments in selection statements. |
| [EXP46-C](https://www.securecoding.cert.org/confluence/display/c/EXP46-C.+Do+not+use+a+bitwise+operator+with+a+Boolean-like+operand) | Do not use a bitwise operator with a Boolean-like operand. |
| [EXP47-C](https://www.securecoding.cert.org/confluence/display/c/EXP47-C.+Do+not+call+va_arg+with+an+argument+of+the+incorrect+type) | Do not call va\_arg with an argument of the incorrect type. |
| [INT30-C](https://www.securecoding.cert.org/confluence/display/c/INT30-C.+Ensure+that+unsigned+integer+operations+do+not+wrap) | Ensure that unsigned integer operations do not wrap. |
| [INT31-C](https://www.securecoding.cert.org/confluence/display/c/INT31-C.+Ensure+that+integer+conversions+do+not+result+in+lost+or+misinterpreted+data) | Ensure that integer conversions do not result in lost or misinterpreted data. |
| [INT32-C](https://www.securecoding.cert.org/confluence/display/c/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow) | Ensure that operations on signed integers do not result in overflow. |
| [INT33-C](https://www.securecoding.cert.org/confluence/display/c/INT33-C.+Ensure+that+division+and+modulo+operations+do+not+result+in+divide-by-zero+errors) | Ensure that division and remainder operations do not result in divide-by-zero errors. |
| [INT34-C](https://www.securecoding.cert.org/confluence/display/c/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) | 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. |
| [INT35-C](https://www.securecoding.cert.org/confluence/display/c/INT35-C.+Use+correct+integer+precisions) | Use correct integer precisions. |
| [INT36-C](https://www.securecoding.cert.org/confluence/display/c/INT36-C.+Converting+a+pointer+to+integer+or+integer+to+pointer) | Converting a pointer to integer or integer to pointer. |
| [FLP30-C](https://www.securecoding.cert.org/confluence/display/c/FLP30-C.+Do+not+use+floating-point+variables+as+loop+counters) | Do not use floating-point variables as loop counters. |
| [FLP32-C](https://www.securecoding.cert.org/confluence/display/c/FLP32-C.+Prevent+or+detect+domain+and+range+errors+in+math+functions) | Prevent or detect domain and range errors in math functions. |
| [FLP34-C](https://www.securecoding.cert.org/confluence/display/c/FLP34-C.+Ensure+that+floating-point+conversions+are+within+range+of+the+new+type) | Ensure that floating-point conversions are within range of the new type. |
| [FLP36-C](https://www.securecoding.cert.org/confluence/display/c/FLP36-C.+Preserve+precision+when+converting+integral+values+to+floating-point+type) | Preserve precision when converting integral values to floating-point type. |
| [FLP37-C](https://www.securecoding.cert.org/confluence/display/c/FLP37-C.+Do+not+use+object+representations+to+compare+floating-point+values) | Do not use object representations to compare floating-point values. |
| [ARR30-C](https://www.securecoding.cert.org/confluence/display/c/ARR30-C.+Do+not+form+or+use+out+of+bounds+pointers+or+array+subscripts) | Do not form or use out of bounds pointers or array subscripts. |
| [ARR32-C](https://www.securecoding.cert.org/confluence/display/c/ARR32-C.+Ensure+size+arguments+for+variable+length+arrays+are+in+a+valid+range) | Ensure size arguments for variable length arrays are in a valid range. |
| [ARR36-C](https://www.securecoding.cert.org/confluence/display/c/ARR36-C.+Do+not+subtract+or+compare+two+pointers+that+do+not+refer+to+the+same+array) | Do not subtract or compare two pointers that do not refer to the same array. |
| [ARR37-C](https://www.securecoding.cert.org/confluence/display/c/ARR37-C.+Do+not+add+or+subtract+an+integer+to+a+pointer+to+a+non-array+object) | Do not add or subtract an integer to a pointer to a non-array object. |
| [ARR38-C](https://www.securecoding.cert.org/confluence/display/c/ARR38-C.+Guarantee+that+library+functions+do+not+form+invalid+pointers) | Guarantee that library functions do not form invalid pointers. |
| [ARR39-C](https://www.securecoding.cert.org/confluence/display/c/ARR39-C.+Do+not+add+or+subtract+a+scaled+integer+to+a+pointer) | Do not add or subtract a scaled integer to a pointer. |
| [STR30-C](https://www.securecoding.cert.org/confluence/display/c/STR30-C.+Do+not+attempt+to+modify+string+literals) | Do not attempt to modify string literals. |
| [STR31-C](https://www.securecoding.cert.org/confluence/display/c/STR31-C.+Guarantee+that+storage+for+strings+has+sufficient+space+for+character+data+and+the+null+terminator) | Guarantee that storage for strings has sufficient space for character data and the null terminator. |
| [STR32-C](https://www.securecoding.cert.org/confluence/display/c/STR32-C.+Do+not+pass+a+non-null-terminated+character+sequence+to+a+library+function+that+expects+a+string) | Do not pass a non-null-terminated character sequence to a library function that expects a string. |
| [STR34-C](https://www.securecoding.cert.org/confluence/display/c/STR34-C.+Cast+characters+to+unsigned+char+before+converting+to+larger+integer+sizes) | Cast characters to unsigned char before converting to larger integer sizes. |
| [STR37-C](https://www.securecoding.cert.org/confluence/display/c/STR37-C.+Arguments+to+character-handling+functions+must+be+representable+as+an+unsigned+char) | Arguments to character-handling functions must be representable as an unsigned char. |
| [STR38-C](https://www.securecoding.cert.org/confluence/display/c/STR38-C.+Do+not+confuse+narrow+and+wide+character+strings+and+functions) | Do not confuse narrow and wide character strings and functions. |
| [MEM30-C](https://www.securecoding.cert.org/confluence/display/c/MEM30-C.+Do+not+access+freed+memory) | Do not access freed memory. |
| [MEM31-C](https://www.securecoding.cert.org/confluence/display/c/MEM31-C.+Free+dynamically+allocated+memory+when+no+longer+needed) | Free dynamically allocated memory when no longer needed. |
| [MEM33-C](https://www.securecoding.cert.org/confluence/display/c/MEM33-C.+Allocate+and+copy+structures+containing+a+flexible+array+member+dynamically) | Allocate and copy structures containing a flexible array member dynamically. |
| [MEM34-C](https://www.securecoding.cert.org/confluence/display/c/MEM34-C.+Only+free+memory+allocated+dynamically) | Only free memory allocated dynamically. |
| [MEM35-C](https://www.securecoding.cert.org/confluence/display/c/MEM35-C.+Allocate+sufficient+memory+for+an+object) | Allocate sufficient memory for an object. |
| [MEM36-C](https://www.securecoding.cert.org/confluence/display/c/MEM36-C.+Do+not+modify+the+alignment+of+objects+by+calling+realloc()) | Do not modify the alignment of objects by calling realloc(). |
| [FIO30-C](https://www.securecoding.cert.org/confluence/display/c/FIO30-C.+Exclude+user+input+from+format+strings) | Exclude user input from format strings. |
| [FIO32-C](https://www.securecoding.cert.org/confluence/display/c/FIO32-C.+Do+not+perform+operations+on+devices+that+are+only+appropriate+for+files) | Do not perform operations on devices that are only appropriate for files. |
| [FIO34-C](https://www.securecoding.cert.org/confluence/display/c/FIO34-C.+Distinguish+between+characters+read+from+a+file+and+EOF+or+WEOF) | Distinguish between characters read from a file and EOF or WEOF. |
| [FIO37-C](https://www.securecoding.cert.org/confluence/display/c/FIO37-C.+Do+not+assume+that+fgets()+or+fgetws()+returns+a+nonempty+string+when+successful) | Do not assume that fgets() or fgetws() returns a nonempty string when successful. |
| [FIO38-C](https://www.securecoding.cert.org/confluence/display/c/FIO38-C.+Do+not+copy+a+FILE+object) | Do not copy a FILE object. |
| [FIO39-C](https://www.securecoding.cert.org/confluence/display/c/FIO39-C.+Do+not+alternately+input+and+output+from+a+stream+without+an+intervening+flush+or+positioning+call) | Do not alternately input and output from a stream without an intervening flush or positioning call. |
| [FIO40-C](https://www.securecoding.cert.org/confluence/display/c/FIO40-C.+Reset+strings+on+fgets()+or+fgetws()+failure) | Reset strings on fgets() or fgetws() failure. |
| [FIO41-C](https://wiki.sei.cmu.edu/confluence/display/c/FIO41-C.+Do+not+call+getc(),+putc(),+getwc(),+or+putwc()+with+a+stream+argument+that+has+side+effects) | Do not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effects. |
| [FIO42-C](https://www.securecoding.cert.org/confluence/display/c/FIO42-C.+Close+files+when+they+are+no+longer+needed) | Close files when they are no longer needed. |
| [FIO44-C](https://www.securecoding.cert.org/confluence/display/c/FIO44-C.+Only+use+values+for+fsetpos()+that+are+returned+from+fgetpos()) | Only use values for fsetpos() that are returned from fgetpos(). |
| [FIO45-C](https://www.securecoding.cert.org/confluence/display/c/FIO45-C.+Avoid+TOCTOU+race+conditions+while+accessing+files) | Avoid TOCTOU race conditions while accessing files. |
| [FIO46-C](https://www.securecoding.cert.org/confluence/display/c/FIO46-C.+Do+not+access+a+closed+file) | Do not access a closed file. |
| [FIO47-C](https://www.securecoding.cert.org/confluence/display/c/FIO47-C.+Use+valid+format+strings) | Use valid format strings. |
| [ENV30-C](https://www.securecoding.cert.org/confluence/display/c/ENV30-C.+Do+not+modify+the+object+referenced+by+the+return+value+of+certain+functions) | Do not modify the object referenced by the return value of certain functions. |
| [ENV31-C](https://www.securecoding.cert.org/confluence/display/c/ENV31-C.+Do+not+rely+on+an+environment+pointer+following+an+operation+that+may+invalidate+it) | Do not rely on an environment pointer following an operation that may invalidate it. |
| [ENV32-C](https://www.securecoding.cert.org/confluence/display/c/ENV32-C.+All+exit+handlers+must+return+normally) | All exit handlers must return normally. |
| [ENV33-C](https://wiki.sei.cmu.edu/confluence/display/c/ENV33-C.+Do+not+call+system()) | Do not call system(). |
| [ENV34-C](https://www.securecoding.cert.org/confluence/display/c/ENV34-C.+Do+not+store+pointers+returned+by+certain+functions) | Do not store pointers returned by certain functions. |
| [SIG30-C](https://www.securecoding.cert.org/confluence/display/c/SIG30-C.+Call+only+asynchronous-safe+functions+within+signal+handlers) | Call only asynchronous-safe functions within signal handlers. |
| [SIG31-C](https://www.securecoding.cert.org/confluence/display/c/SIG31-C.+Do+not+access+shared+objects+in+signal+handlers) | Do not access shared objects in signal handlers. |
| [SIG34-C](https://www.securecoding.cert.org/confluence/display/c/SIG34-C.+Do+not+call+signal()+from+within+interruptible+signal+handlers) | Do not call signal() from within interruptible signal handlers. |
| [SIG35-C](https://www.securecoding.cert.org/confluence/display/c/SIG35-C.+Do+not+return+from+a+computational+exception+signal+handler) | Do not return from a computational exception signal handler. |
| [ERR30-C](https://www.securecoding.cert.org/confluence/display/c/ERR30-C.+Set+errno+to+zero+before+calling+a+library+function+known+to+set+errno,+and+check+errno+only+after+the+function+returns+a+value+indicating+failure) | Set errno to zero before calling a library function known to set errno, and check errno only after the function returns a value indicating failure. |
| [ERR32-C](https://www.securecoding.cert.org/confluence/display/c/ERR32-C.+Do+not+rely+on+indeterminate+values+of+errno) | Do not rely on indeterminate values of errno. |
| [ERR33-C](https://www.securecoding.cert.org/confluence/display/c/ERR33-C.+Detect+and+handle+standard+library+errors) | Detect and handle standard library errors. |
| [ERR34-C](https://www.securecoding.cert.org/confluence/display/c/ERR34-C.+Detect+errors+when+converting+a+string+to+a+number) | Detect errors when converting a string to a number. |
| [CON30-C](https://www.securecoding.cert.org/confluence/display/c/CON30-C.+Clean+up+thread-specific+storage) | Clean up thread-specific storage. |
| [CON31-C](https://www.securecoding.cert.org/confluence/display/c/CON31-C.+Do+not+destroy+a+mutex+while+it+is+locked) | Do not destroy a mutex while it is locked. |
| [CON32-C](https://www.securecoding.cert.org/confluence/display/c/CON32-C.+Prevent+data+races+when+accessing+bit-fields+from+multiple+threads) | Prevent data races when accessing bit-fields from multiple threads. |
| [CON33-C](https://www.securecoding.cert.org/confluence/display/c/CON33-C.+Avoid+race+conditions+when+using+library+functions) | Avoid race conditions when using library functions. |
| [CON34-C](https://www.securecoding.cert.org/confluence/display/c/CON34-C.+Declare+objects+shared+between+threads+with+appropriate+storage+durations) | Declare objects shared between threads with appropriate storage durations. |
| [CON35-C](https://www.securecoding.cert.org/confluence/display/c/CON35-C.+Avoid+deadlock+by+locking+in+predefined+order) | Avoid deadlock by locking in predefined order. |
| [CON36-C](https://www.securecoding.cert.org/confluence/display/c/CON36-C.+Wrap+functions+that+can+spuriously+wake+up+in+a+loop) | Wrap functions that can spuriously wake up in a loop. |
| [CON37-C](https://www.securecoding.cert.org/confluence/display/c/CON37-C.+Do+not+call+signal()+in+a+multithreaded+program) | Do not call signal() in a multithreaded program. |
| [CON38-C](https://www.securecoding.cert.org/confluence/display/c/CON38-C.+Preserve+thread+safety+and+liveness+when+using+condition+variables) | Preserve thread safety and liveness when using condition variables. |
| [CON39-C](https://www.securecoding.cert.org/confluence/display/c/CON39-C.+Do+not+join+or+detach+a+thread+that+was+previously+joined+or+detached) | Do not join or detach a thread that was previously joined or detached. |
| [CON40-C](https://www.securecoding.cert.org/confluence/display/c/CON40-C.+Do+not+refer+to+an+atomic+variable+twice+in+an+expression) | Do not refer to an atomic variable twice in an expression. |
| [CON41-C](https://www.securecoding.cert.org/confluence/display/c/CON41-C.+Wrap+functions+that+can+fail+spuriously+in+a+loop) | Wrap functions that can fail spuriously in a loop. |
| [CON43-C](https://wiki.sei.cmu.edu/confluence/display/c/CON43-C.+Do+not+allow+data+races+in+multithreaded+code) | Do not allow data races in multithreaded code. |
| [MSC30-C](https://www.securecoding.cert.org/confluence/display/c/MSC30-C.+Do+not+use+the+rand()+function+for+generating+pseudorandom+numbers) | Do not use the rand() function for generating pseudorandom numbers. |
| [MSC32-C](https://www.securecoding.cert.org/confluence/display/c/MSC32-C.+Properly+seed+pseudorandom+number+generators) | Properly seed pseudorandom number generators. |
| [MSC33-C](https://www.securecoding.cert.org/confluence/display/c/MSC33-C.+Do+not+pass+invalid+data+to+the+asctime()+function) | Do not pass invalid data to the asctime() function. |
| [MSC37-C](https://www.securecoding.cert.org/confluence/display/c/MSC37-C.+Ensure+that+control+never+reaches+the+end+of+a+non-void+function) | Ensure that control never reaches the end of a non-void function. |
| [MSC38-C](https://www.securecoding.cert.org/confluence/display/c/MSC38-C.+Do+not+treat+a+predefined+identifier+as+an+object+if+it+might+only+be+implemented+as+a+macro) | Do not treat a predefined identifier as an object if it might only be implemented as a macro. |
| [MSC39-C](https://www.securecoding.cert.org/confluence/display/c/MSC39-C.+Do+not+call+va_arg()+on+a+va_list+that+has+an+indeterminate+value) | Do not call va\_arg() on a va\_list that has an indeterminate value. |
| [MSC40-C](https://www.securecoding.cert.org/confluence/display/c/MSC40-C.+Do+not+violate+constraints) | Do not violate constraints. |
| [MSC41-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC41-C.+Never+hard+code+sensitive+information) | Never hard code sensitive information. |
| [POS30-C](https://www.securecoding.cert.org/confluence/display/c/POS30-C.+Use+the+readlink()+function+properly) | Use the readlink() function properly. |
| [POS33-C](/content/static-analysis-tools-sast/sei-cert.html) | Do not use vfork(). |
| [POS34-C](https://www.securecoding.cert.org/confluence/display/c/POS34-C.+Do+not+call+putenv()+with+a+pointer+to+an+automatic+variable+as+the+argument) | Do not call putenv() with a pointer to an automatic variable as the argument. |
| [POS35-C](https://www.securecoding.cert.org/confluence/display/c/POS35-C.+Avoid+race+conditions+while+checking+for+the+existence+of+a+symbolic+link) | Avoid race conditions while checking for the existence of a symbolic link. |
| [POS36-C](https://www.securecoding.cert.org/confluence/display/c/POS36-C.+Observe+correct+revocation+order+while+relinquishing+privileges) | Observe correct revocation order while relinquishing privileges. |
| [POS37-C](https://www.securecoding.cert.org/confluence/display/c/POS37-C.+Ensure+that+privilege+relinquishment+is+successful) | Ensure that privilege relinquishment is successful. |
| [POS38-C](https://www.securecoding.cert.org/confluence/display/c/POS38-C.+Beware+of+race+conditions+when+using+fork+and+file+descriptors) | Beware of race conditions when using fork and file descriptors. |
| [POS39-C](https://www.securecoding.cert.org/confluence/display/c/POS39-C.+Use+the+correct+byte+ordering+when+transferring+data+between+systems) | Use the correct byte ordering when transferring data between systems. |
| [POS44-C](https://www.securecoding.cert.org/confluence/display/c/POS44-C.+Do+not+use+signals+to+terminate+threads) | Do not use signals to terminate threads. |
| [POS47-C](https://www.securecoding.cert.org/confluence/display/c/POS47-C.+Do+not+use+threads+that+can+be+canceled+asynchronously) | Do not use threads that can be canceled asynchronously. |
| [POS49-C](https://www.securecoding.cert.org/confluence/display/c/POS49-C.+When+data+must+be+accessed+by+multiple+threads,+provide+a+mutex+and+guarantee+no+adjacent+data+is+also+accessed) | When data must be accessed by multiple threads, provide a mutex and guarantee no adjacent data is also accessed. |
| [POS50-C](https://www.securecoding.cert.org/confluence/display/c/POS50-C.+Declare+objects+shared+between+POSIX+threads+with+appropriate+storage+durations) | Declare objects shared between POSIX threads with appropriate storage durations. |
| [POS52-C](https://www.securecoding.cert.org/confluence/display/c/POS52-C.+Do+not+perform+operations+that+can+block+while+holding+a+POSIX+lock) | Do not perform operations that can block while holding a POSIX lock. |
| [POS54-C](https://www.securecoding.cert.org/confluence/display/c/POS54-C.+Detect+and+handle+POSIX+library+errors) | Detect and handle POSIX library errors. |
| [WIN30-C](https://wiki.sei.cmu.edu/confluence/display/c/WIN30-C.+Properly+pair+allocation+and+deallocation+functions) | Properly pair allocation and deallocation functions. |

## CERT C++ rule coverage

|     |     |     |     |
| --- | --- | --- | --- |
| Section | Rules<br>SupportedAll | % Coverage |
| All | 83 | 83 | 100.0 |
| DCL | 11 | 11 | 100.0 |
| EXP | 14 | 14 | 100.0 |
| INT | 1 | 1 | 100.0 |
| CTR | 9 | 9 | 100.0 |
| STR | 4 | 4 | 100.0 |
| MEM | 8 | 8 | 100.0 |
| FIO | 2 | 2 | 100.0 |
| ERR | 13 | 13 | 100.0 |
| OOP | 9 | 9 | 100.0 |
| CON | 7 | 7 | 100.0 |
| MSC | 5 | 5 | 100.0 |

## CERT C++ supported rules

|     |     |
| --- | --- |
| Rule | Description |
| [DCL50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL50-CPP.+Do+not+define+a+C-style+variadic+function) | Do not define a C-style variadic function. |
| [DCL51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL51-CPP.+Do+not+declare+or+define+a+reserved+identifier) | Do not declare or define a reserved identifier. |
| [DCL52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL52-CPP.+Never+qualify+a+reference+type+with+const+or+volatile) | Never qualify a reference type with const or volatile. |
| [DCL53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL53-CPP.+Do+not+write+syntactically+ambiguous+declarations) | Do not write syntactically ambiguous declarations. |
| [DCL54-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL54-CPP.+Overload+allocation+and+deallocation+functions+as+a+pair+in+the+same+scope) | Overload allocation and deallocation functions as a pair in the same scope. |
| [DCL55-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL55-CPP.+Avoid+information+leakage+when+passing+a+class+object+across+a+trust+boundary) | Avoid information leakage when passing a class object across a trust boundary. |
| [DCL56-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL56-CPP.+Avoid+cycles+during+initialization+of+static+objects) | Avoid cycles during initialization of static objects. |
| [DCL57-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL57-CPP.+Do+not+let+exceptions+escape+from+destructors+or+deallocation+functions) | Do not let exceptions escape from destructors or deallocation functions. |
| [DCL58-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL58-CPP.+Do+not+modify+the+standard+namespaces) | Do not modify the standard namespaces. |
| [DCL59-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL59-CPP.+Do+not+define+an+unnamed+namespace+in+a+header+file) | Do not define an unnamed namespace in a header file. |
| [DCL60-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL60-CPP.+Obey+the+one-definition+rule) | Obey the one-definition rule. |
| [EXP50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP50-CPP.+Do+not+depend+on+the+order+of+evaluation+for+side+effects) | Do not depend on the order of evaluation for side effects. |
| [EXP51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP51-CPP.+Do+not+delete+an+array+through+a+pointer+of+the+incorrect+type) | Do not delete an array through a pointer of the incorrect type. |
| [EXP52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP52-CPP.+Do+not+rely+on+side+effects+in+unevaluated+operands) | Do not rely on side effects in unevaluated operands. |
| [EXP53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP53-CPP.+Do+not+read+uninitialized+memory) | Do not read uninitialized memory. |
| [EXP54-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP54-CPP.+Do+not+access+an+object+outside+of+its+lifetime) | Do not access an object outside of its lifetime. |
| [EXP55-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP55-CPP.+Do+not+access+a+cv-qualified+object+through+a+cv-unqualified+type) | Do not access a cv-qualified object through a cv-unqualified type. |
| [EXP56-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP56-CPP.+Do+not+call+a+function+with+a+mismatched+language+linkage) | Do not call a function with a mismatched language linkage. |
| [EXP57-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP57-CPP.+Do+not+cast+or+delete+pointers+to+incomplete+classes) | Do not cast or delete pointers to incomplete classes. |
| [EXP58-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP58-CPP.+Pass+an+object+of+the+correct+type+to+va_start) | Pass an object of the correct type to va\_start. |
| [EXP59-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP59-CPP.+Use+offsetof()+on+valid+types+and+members) | Use offsetof() on valid types and members. |
| [EXP60-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP60-CPP.+Do+not+pass+a+nonstandard-layout+type+object+across+execution+boundaries) | Do not pass a nonstandard-layout type object across execution boundaries. |
| [EXP61-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP61-CPP.+A+lambda+object+must+not+outlive+any+of+its+reference+captured+objects) | A lambda object must not outlive any of its reference captured objects. |
| [EXP62-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP62-CPP.+Do+not+access+the+bits+of+an+object+representation+that+are+not+part+of+the+object's+value+representation) | Do not access the bits of an object representation that are not part of the object’s value representation. |
| [EXP63-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/EXP63-CPP.+Do+not+rely+on+the+value+of+a+moved-from+object) | Do not rely on the value of a moved-from object. |
| [INT50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/INT50-CPP.+Do+not+cast+to+an+out-of-range+enumeration+value) | Do not cast to an out-of-range enumeration value. |
| [CTR50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR50-CPP.+Guarantee+that+container+indices+and+iterators+are+within+the+valid+range) | Guarantee that container indices and iterators are within the valid range. |
| [CTR51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR51-CPP.+Use+valid+references,+pointers,+and+iterators+to+reference+elements+of+a+container) | Use valid references, pointers, and iterators to reference elements of a container. |
| [CTR52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR52-CPP.+Guarantee+that+library+functions+do+not+overflow) | Guarantee that library functions do not overflow. |
| [CTR53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR53-CPP.+Use+valid+iterator+ranges) | Use valid iterator ranges. |
| [CTR54-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR54-CPP.+Do+not+subtract+iterators+that+do+not+refer+to+the+same+container) | Do not subtract iterators that do not refer to the same container. |
| [CTR55-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR55-CPP.+Do+not+use+an+additive+operator+on+an+iterator+if+the+result+would+overflow) | Do not use an additive operator on an iterator if the result would overflow. |
| [CTR56-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR56-CPP.+Do+not+use+pointer+arithmetic+on+polymorphic+objects) | Do not use pointer arithmetic on polymorphic objects. |
| [CTR57-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR57-CPP.+Provide+a+valid+ordering+predicate) | Provide a valid ordering predicate. |
| [CTR58-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR58-CPP.+Predicate+function+objects+should+not+be+mutable) | Predicate function objects should not be mutable. |
| [STR50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/STR50-CPP.+Guarantee+that+storage+for+strings+has+sufficient+space+for+character+data+and+the+null+terminator) | Guarantee that storage for strings has sufficient space for character data and the null terminator. |
| [STR51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/STR51-CPP.+Do+not+attempt+to+create+a+std::string+from+a+null+pointer) | Do not attempt to create a std::string from a null pointer. |
| [STR52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/STR52-CPP.+Use+valid+references,+pointers,+and+iterators+to+reference+elements+of+a+basic_string) | Use valid references, pointers, and iterators to reference elements of a basic\_string. |
| [STR53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/STR53-CPP.+Range+check+element+access) | Range check element access. |
| [MEM50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MEM50-CPP.+Do+not+access+freed+memory) | Do not access freed memory. |
| [MEM51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MEM51-CPP.+Properly+deallocate+dynamically+allocated+resources) | Properly deallocate dynamically allocated resources. |
| [MEM52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MEM52-CPP.+Detect+and+handle+memory+allocation+errors) | Detect and handle memory allocation errors. |
| [MEM53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MEM53-CPP.+Explicitly+construct+and+destruct+objects+when+manually+managing+object+lifetime) | Explicitly construct and destruct objects when manually managing object lifetime. |
| [MEM54-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MEM54-CPP.+Provide+placement+new+with+properly+aligned+pointers+to+sufficient+storage+capacity) | Provide placement new with properly aligned pointers to sufficient storage capacity. |
| [MEM55-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MEM55-CPP.+Honor+replacement+dynamic+storage+management+requirements) | Honor replacement dynamic storage management requirements. |
| [MEM56-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MEM56-CPP.+Do+not+store+an+already-owned+pointer+value+in+an+unrelated+smart+pointer) | Do not store an already-owned pointer value in an unrelated smart pointer. |
| [MEM57-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MEM57-CPP.+Avoid+using+default+operator+new+for+over-aligned+types) | Avoid using default operator new for over-aligned types. |
| [FIO50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/FIO50-CPP.+Do+not+alternately+input+and+output+from+a+file+stream+without+an+intervening+positioning+call) | Do not alternately input and output from a file stream without an intervening positioning call. |
| [FIO51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/FIO51-CPP.+Close+files+when+they+are+no+longer+needed) | Close files when they are no longer needed. |
| [ERR50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR50-CPP.+Do+not+abruptly+terminate+the+program) | Do not abruptly terminate the program. |
| [ERR51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR51-CPP.+Handle+all+exceptions) | Handle all exceptions. |
| [ERR52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR52-CPP.+Do+not+use+setjmp()+or+longjmp()) | Do not use setjmp() or longjmp(). |
| [ERR53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR53-CPP.+Do+not+reference+base+classes+or+class+data+members+in+a+constructor+or+destructor+function-try-block+handler) | Do not reference base classes or class data members in a constructor or destructor function-try-block handler. |
| [ERR54-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR54-CPP.+Catch+handlers+should+order+their+parameter+types+from+most+derived+to+least+derived) | Catch handlers should order their parameter types from most derived to least derived. |
| [ERR55-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR55-CPP.+Honor+exception+specifications) | Honor exception specifications. |
| [ERR56-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR56-CPP.+Guarantee+exception+safety) | Guarantee exception safety. |
| [ERR57-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR57-CPP.+Do+not+leak+resources+when+handling+exceptions) | Do not leak resources when handling exceptions. |
| [ERR58-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR58-CPP.+Handle+all+exceptions+thrown+before+main()+begins+executing) | Handle all exceptions thrown before main() begins executing. |
| [ERR59-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR59-CPP.+Do+not+throw+an+exception+across+execution+boundaries) | Do not throw an exception across execution boundaries. |
| [ERR60-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR60-CPP.+Exception+objects+must+be+nothrow+copy+constructible) | Exception objects must be nothrow copy constructible. |
| [ERR61-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR61-CPP.+Catch+exceptions+by+lvalue+reference) | Catch exceptions by lvalue reference. |
| [ERR62-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR62-CPP.+Detect+errors+when+converting+a+string+to+a+number) | Detect errors when converting a string to a number. |
| [OOP50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP50-CPP.+Do+not+invoke+virtual+functions+from+constructors+or+destructors) | Do not invoke virtual functions from constructors or destructors. |
| [OOP51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP51-CPP.+Do+not+slice+derived+objects) | Do not slice derived objects. |
| [OOP52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP52-CPP.+Do+not+delete+a+polymorphic+object+without+a+virtual+destructor) | Do not delete a polymorphic object without a virtual destructor. |
| [OOP53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP53-CPP.+Write+constructor+member+initializers+in+the+canonical+order) | Write constructor member initializers in the canonical order. |
| [OOP54-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP54-CPP.+Gracefully+handle+self-copy+assignment) | Gracefully handle self-copy assignment. |
| [OOP55-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP55-CPP.+Do+not+use+pointer-to-member+operators+to+access+nonexistent+members) | Do not use pointer-to-member operators to access nonexistent members. |
| [OOP56-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP56-CPP.+Honor+replacement+handler+requirements) | Honor replacement handler requirements. |
| [OOP57-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP57-CPP.+Prefer+special+member+functions+and+overloaded+operators+to+C+Standard+Library+functions) | Prefer special member functions and overloaded operators to C Standard Library functions. |
| [OOP58-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP58-CPP.+Copy+operations+must+not+mutate+the+source+object) | Copy operations must not mutate the source object. |
| [CON50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CON50-CPP.+Do+not+destroy+a+mutex+while+it+is+locked) | Do not destroy a mutex while it is locked. |
| [CON51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CON51-CPP.+Ensure+actively+held+locks+are+released+on+exceptional+conditions) | Ensure actively held locks are released on exceptional conditions. |
| [CON52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CON52-CPP.+Prevent+data+races+when+accessing+fields+from+multiple+threads) | Prevent data races when accessing fields from multiple threads. |
| [CON53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CON53-CPP.+Avoid+deaqdlocks+by+locking+in+a+predefined+order) | Avoid deadlocks by locking in a predefined order. |
| [CON54-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CON54-CPP.+Wrap+functions+that+can+spuriously+wake+up+in+a+loop) | Wrap functions that can spuriously wake up in a loop. |
| [CON55-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CON55-CPP.+Preserve+thread+safety+and+liveness+when+using+condition+variables) | Preserve thread safety and liveness when using condition variables. |
| [CON56-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CON56-CPP.+Do+no+speculatively+lock+a+non-recursive+mutex+that+is+already+owned+by+the+calling+thread) | Do not speculatively lock a non-recursive mutex that is already owned by the calling thread. |
| [MSC50-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MSC50-CPP.+Do+not+use+std::rand()+for+generating+pseudorandom+numbers) | Do not use std::rand() for generating pseudorandom numbers. |
| [MSC51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MSC51-CPP.+Ensure+your+random+number+generator+is+properly+seeded) | Ensure your random number generator is properly seeded. |
| [MSC52-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MSC52-CPP.+Value-returning+functions+must+return+a+value+from+all+exit+paths) | Value-returning functions must return a value from all exit paths. |
| [MSC53-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MSC53-CPP.+Do+not+return+from+a+function+declared+[[noreturn]]) | Do not return from a function declared \[\[noreturn\]\]. |
| [MSC54-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/MSC54-CPP.+A+signal+handler+must+be+a+plain+old+function) | A signal handler must be a plain old function. |

## CERT C L1 recommendation coverage (online version)

|     |     |     |     |
| --- | --- | --- | --- |
| Section | Recommendations<br>SupportedAll | % Coverage |
| All | 103 | 191 | 53.9 |
| PRE | 7 | 14 | 50.0 |
| DCL | 14 | 23 | 60.9 |
| EXP | 11 | 16 | 68.8 |
| INT | 12 | 16 | 75.0 |
| FLP | 4 | 8 | 50.0 |
| ARR | 3 | 3 | 100.0 |
| STR | 6 | 12 | 50.0 |
| MEM | 10 | 17 | 58.8 |
| FIO | 7 | 20 | 35.0 |
| ENV | 1 | 3 | 33.3 |
| SIG | 2 | 3 | 66.7 |
| ERR | 2 | 8 | 25.0 |
| API | 4 | 9 | 44.4 |
| CON | 2 | 8 | 25.0 |
| MSC | 12 | 22 | 54.5 |
| POS | 3 | 4 | 75.0 |
| WIN | 3 | 5 | 60.0 |

## CERT C supported recommendations (online version)

|     |     |
| --- | --- |
| Rule | Description |
| [PRE00-C](https://wiki.sei.cmu.edu/confluence/display/c/PRE00-C.+Prefer+inline+or+static+functions+to+function-like+macros) | Prefer inline or static functions to function-like macros. |
| [PRE06-C](https://wiki.sei.cmu.edu/confluence/display/c/PRE06-C.+Enclose+header+files+in+an+include+guard) | Enclose header files in an include guard. |
| [PRE07-C](https://wiki.sei.cmu.edu/confluence/display/c/PRE07-C.+Avoid+using+repeated+question+marks) | Avoid using repeated question marks. |
| [PRE09-C](https://wiki.sei.cmu.edu/confluence/display/c/PRE09-C.+Do+not+replace+secure+functions+with+deprecated+or+obsolescent+functions) | Do not replace secure functions with deprecated or obsolescent functions. |
| [PRE10-C](https://wiki.sei.cmu.edu/confluence/display/c/PRE10-C.+Wrap+multistatement+macros+in+a+do-while+loop) | Wrap multistatement macros in a do-while loop. |
| [PRE11-C](https://wiki.sei.cmu.edu/confluence/display/c/PRE11-C.+Do+not+conclude+macro+definitions+with+a+semicolon) | Do not conclude macro definitions with a semicolon. |
| [PRE12-C](https://wiki.sei.cmu.edu/confluence/display/c/PRE12-C.+Do+not+define+unsafe+macros) | Do not define unsafe macros. |
| [DCL01-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL01-C.+Do+not+reuse+variable+names+in+subscopes) | Do not reuse variable names in subscopes. |
| [DCL02-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL02-C.+Use+visually+distinct+identifiers) | Use visually distinct identifiers. |
| [DCL06-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL06-C.+Use+meaningful+symbolic+constants+to+represent+literal+values) | Use meaningful symbolic constants to represent literal values. |
| [DCL07-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL07-C.+Include+the+appropriate+type+information+in+function+declarators) | Include the appropriate type information in function declarators. |
| [DCL10-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL10-C.+Maintain+the+contract+between+the+writer+and+caller+of+variadic+functions) | Maintain the contract between the writer and caller of variadic functions. |
| [DCL11-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL11-C.+Understand+the+type+issues+associated+with+variadic+functions) | Understand the type issues associated with variadic functions. |
| [DCL12-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL12-C.+Implement+abstract+data+types+using+opaque+types) | Implement abstract data types using opaque types. |
| [DCL13-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL13-C.+Declare+function+parameters+that+are+pointers+to+values+not+changed+by+the+function+as+const) | Declare function parameters that are pointers to values not changed by the function as const. |
| [DCL15-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL15-C.+Declare+file-scope+objects+or+functions+that+do+not+need+external+linkage+as+static) | Declare file-scope objects or functions that do not need external linkage as static. |
| [DCL16-C](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152241) | Use “L,” not “l,” to indicate a long value. |
| [DCL18-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL18-C.+Do+not+begin+integer+constants+with+0+when+specifying+a+decimal+value) | Do not begin integer constants with 0 when specifying a decimal value. |
| [DCL19-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL19-C.+Minimize+the+scope+of+variables+and+functions) | Minimize the scope of variables and functions. |
| [DCL22-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL22-C.+Use+volatile+for+data+that+cannot+be+cached) | Use volatile for data that cannot be cached. |
| [DCL23-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL23-C.+Guarantee+that+mutually+visible+identifiers+are+unique) | Guarantee that mutually visible identifiers are unique. |
| [EXP00-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP00-C.+Use+parentheses+for+precedence+of+operation) | Use parentheses for precedence of operation. |
| [EXP05-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP05-C.+Do+not+cast+away+a+const+qualification) | Do not cast away a const qualification. |
| [EXP08-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP08-C.+Ensure+pointer+arithmetic+is+used+correctly) | Ensure pointer arithmetic is used correctly. |
| [EXP09-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP09-C.+Use+sizeof+to+determine+the+size+of+a+type+or+variable) | Use sizeof to determine the size of a type or variable. |
| [EXP10-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP10-C.+Do+not+depend+on+the+order+of+evaluation+of+subexpressions+or+the+order+in+which+side+effects+take+place) | Do not depend on the order of evaluation of subexpressions or the order in which side effects take place. |
| [EXP12-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP12-C.+Do+not+ignore+values+returned+by+functions) | Do not ignore values returned by functions. |
| [EXP13-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP13-C.+Treat+relational+and+equality+operators+as+if+they+were+nonassociative) | Treat relational and equality operators as if they were nonassociative. |
| [EXP15-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP15-C.+Do+not+place+a+semicolon+on+the+same+line+as+an+if%2C+for%2C+or+while+statement) | Do not place a semicolon on the same line as an if, for, or while statement. |
| [EXP16-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP16-C.+Do+not+compare+function+pointers+to+constant+values) | Do not compare function pointers to constant values. |
| [EXP19-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP19-C.+Use+braces+for+the+body+of+an+if%2C+for%2C+or+while+statement) | Use braces for the body of an if, for, or while statement. |
| [EXP20-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP20-C.+Perform+explicit+tests+to+determine+success%2C+true+and+false%2C+and+equality) | Perform explicit tests to determine success, true and false, and equality. |
| [INT00-C](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152417) | Understand the data model used by your implementation(s). |
| [INT02-C](https://wiki.sei.cmu.edu/confluence/display/c/INT02-C.+Understand+integer+conversion+rules) | Understand integer conversion rules. |
| [INT04-C](https://wiki.sei.cmu.edu/confluence/display/c/INT04-C.+Enforce+limits+on+integer+values+originating+from+tainted+sources) | Enforce limits on integer values originating from tainted sources. |
| [INT07-C](https://wiki.sei.cmu.edu/confluence/display/c/INT07-C.+Use+only+explicitly+signed+or+unsigned+char+type+for+numeric+values) | Use only explicitly signed or unsigned char type for numeric values. |
| [INT08-C](https://wiki.sei.cmu.edu/confluence/display/c/INT08-C.+Verify+that+all+integer+values+are+in+range) | Verify that all integer values are in range. |
| [INT09-C](https://wiki.sei.cmu.edu/confluence/display/c/INT09-C.+Ensure+enumeration+constants+map+to+unique+values) | Ensure enumeration constants map to unique values. |
| [INT10-C](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152120) | Do not assume a positive remainder when using the % operator. |
| [INT12-C](https://wiki.sei.cmu.edu/confluence/display/c/INT12-C.+Do+not+make+assumptions+about+the+type+of+a+plain+int+bit-field+when+used+in+an+expression) | Do not make assumptions about the type of a plain int bit-field when used in an expression. |
| [INT13-C](https://wiki.sei.cmu.edu/confluence/display/c/INT13-C.+Use+bitwise+operators+only+on+unsigned+operands) | Use bitwise operators only on unsigned operands. |
| [INT14-C](https://wiki.sei.cmu.edu/confluence/display/c/INT14-C.+Avoid+performing+bitwise+and+arithmetic+operations+on+the+same+data) | Avoid performing bitwise and arithmetic operations on the same data. |
| [INT17-C](https://wiki.sei.cmu.edu/confluence/display/c/INT17-C.+Define+integer+constants+in+an+implementation-independent+manner) | Define integer constants in an implementation-independent manner. |
| [INT18-C](https://wiki.sei.cmu.edu/confluence/display/c/INT18-C.+Evaluate+integer+expressions+in+a+larger+size+before+comparing+or+assigning+to+that+size) | Evaluate integer expressions in a larger size before comparing or assigning to that size. |
| [FLP00-C](https://wiki.sei.cmu.edu/confluence/display/c/FLP00-C.+Understand+the+limitations+of+floating-point+numbers) | Understand the limitations of floating-point numbers. |
| [FLP02-C](https://wiki.sei.cmu.edu/confluence/display/c/FLP02-C.+Avoid+using+floating-point+numbers+when+precise+computation+is+needed) | Avoid using floating-point numbers when precise computation is needed. |
| [FLP03-C](https://wiki.sei.cmu.edu/confluence/display/c/FLP03-C.+Detect+and+handle+floating-point+errors) | Detect and handle floating-point errors. |
| [FLP06-C](https://wiki.sei.cmu.edu/confluence/display/c/FLP06-C.+Convert+integers+to+floating+point+for+floating-point+operations) | Convert integers to floating point for floating-point operations. |
| [ARR00-C](https://wiki.sei.cmu.edu/confluence/display/c/ARR00-C.+Understand+how+arrays+work) | Understand how arrays work. |
| [ARR01-C](https://wiki.sei.cmu.edu/confluence/display/c/ARR01-C.+Do+not+apply+the+sizeof+operator+to+a+pointer+when+taking+the+size+of+an+array) | Do not apply the sizeof operator to a pointer when taking the size of an array. |
| [ARR02-C](https://wiki.sei.cmu.edu/confluence/display/c/ARR02-C.+Explicitly+specify+array+bounds%2C+even+if+implicitly+defined+by+an+initializer) | Explicitly specify array bounds, even if implicitly defined by an initializer. |
| [STR00-C](https://wiki.sei.cmu.edu/confluence/display/c/STR00-C.+Represent+characters+using+an+appropriate+type) | Represent characters using an appropriate type. |
| [STR02-C](https://wiki.sei.cmu.edu/confluence/display/c/STR02-C.+Sanitize+data+passed+to+complex+subsystems) | Sanitize data passed to complex subsystems. |
| [STR03-C](https://wiki.sei.cmu.edu/confluence/display/c/STR03-C.+Do+not+inadvertently+truncate+a+string) | Do not inadvertently truncate a string. |
| [STR06-C](https://wiki.sei.cmu.edu/confluence/display/c/STR06-C.+Do+not+assume+that+strtok%28%29+leaves+the+parse+string+unchanged) | Do not assume that strtok() leaves the parse string unchanged. |
| [STR07-C](https://wiki.sei.cmu.edu/confluence/display/c/STR07-C.+Use+the+bounds-checking+interfaces+for+string+manipulation) | Use the bounds-checking interfaces for string manipulation. |
| [STR11-C](https://wiki.sei.cmu.edu/confluence/display/c/STR11-C.+Do+not+specify+the+bound+of+a+character+array+initialized+with+a+string+literal) | Do not specify the bound of a character array initialized with a string literal. |
| [MEM00-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM00-C.+Allocate+and+free+memory+in+the+same+module%2C+at+the+same+level+of+abstraction) | Allocate and free memory in the same module, at the same level of abstraction. |
| [MEM01-C](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152148) | Store a new value in pointers immediately after free(). |
| [MEM02-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM02-C.+Immediately+cast+the+result+of+a+memory+allocation+function+call+into+a+pointer+to+the+allocated+type) | Immediately cast the result of a memory allocation function call into a pointer to the allocated type. |
| [MEM03-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM03-C.+Clear+sensitive+information+stored+in+reusable+resources) | Clear sensitive information stored in reusable resources. |
| [MEM04-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM04-C.+Beware+of+zero-length+allocations) | Beware of zero-length allocations. |
| [MEM05-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM05-C.+Avoid+large+stack+allocations) | Avoid large stack allocations. |
| [MEM06-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM06-C.+Ensure+that+sensitive+data+is+not+written+out+to+disk) | Ensure that sensitive data is not written out to disk. |
| [MEM07-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM07-C.+Ensure+that+the+arguments+to+calloc%28%29%2C+when+multiplied%2C+do+not+wrap) | Ensure that the arguments to calloc(), when multiplied, do not wrap. |
| [MEM11-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM11-C.+Do+not+assume+infinite+heap+space) | Do not assume infinite heap space. |
| [MEM12-C](https://wiki.sei.cmu.edu/confluence/display/c/MEM12-C.+Consider+using+a+goto+chain+when+leaving+a+function+on+error+when+using+and+releasing+resources) | Consider using a goto chain when leaving a function on error when using and releasing resources. |
| [FIO01-C](https://wiki.sei.cmu.edu/confluence/display/c/FIO01-C.+Be+careful+using+functions+that+use+file+names+for+identification) | Be careful using functions that use file names for identification. |
| [FIO02-C](https://wiki.sei.cmu.edu/confluence/display/c/FIO02-C.+Canonicalize+path+names+originating+from+tainted+sources) | Canonicalize path names originating from tainted sources. |
| [FIO06-C](https://wiki.sei.cmu.edu/confluence/display/c/FIO06-C.+Create+files+with+appropriate+access+permissions) | Create files with appropriate access permissions. |
| [FIO11-C](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152174) | Take care when specifying the mode parameter of fopen(). |
| [FIO20-C](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152445) | Avoid unintentional truncation when using fgets() or fgetws(). |
| [FIO21-C](https://wiki.sei.cmu.edu/confluence/display/c/FIO21-C.+Do+not+create+temporary+files+in+shared+directories) | Do not create temporary files in shared directories. |
| [FIO24-C](https://wiki.sei.cmu.edu/confluence/display/c/FIO24-C.+Do+not+open+a+file+that+is+already+open) | Do not open a file that is already open. |
| [ENV01-C](https://wiki.sei.cmu.edu/confluence/display/c/ENV01-C.+Do+not+make+assumptions+about+the+size+of+an+environment+variable) | Do not make assumptions about the size of an environment variable. |
| [SIG00-C](https://wiki.sei.cmu.edu/confluence/display/c/SIG00-C.+Mask+signals+handled+by+noninterruptible+signal+handlers) | Mask signals handled by noninterruptible signal handlers. |
| [SIG02-C](https://wiki.sei.cmu.edu/confluence/display/c/SIG02-C.+Avoid+using+signals+to+implement+normal+functionality) | Avoid using signals to implement normal functionality. |
| [ERR00-C](https://wiki.sei.cmu.edu/confluence/display/c/ERR00-C.+Adopt+and+implement+a+consistent+and+comprehensive+error-handling+policy) | Adopt and implement a consistent and comprehensive error-handling policy. |
| [ERR07-C](https://wiki.sei.cmu.edu/confluence/display/c/ERR07-C.+Prefer+functions+that+support+error+checking+over+equivalent+functions+that+don%27t) | Prefer functions that support error checking over equivalent functions that don’t. |
| [API02-C](https://wiki.sei.cmu.edu/confluence/display/c/API02-C.+Functions+that+read+or+write+to+or+from+an+array+should+take+an+argument+to+specify+the+source+or+target+size) | Functions that read or write to or from an array should take an argument to specify the source or target size. |
| [API04-C](https://wiki.sei.cmu.edu/confluence/display/c/API04-C.+Provide+a+consistent+and+usable+error-checking+mechanism) | Provide a consistent and usable error-checking mechanism. |
| [API05-C](https://wiki.sei.cmu.edu/confluence/display/c/API05-C.+Use+conformant+array+parameters) | Use conformant array parameters. |
| [API09-C](https://wiki.sei.cmu.edu/confluence/display/c/API09-C.+Compatible+values+should+have+the+same+type) | Compatible values should have the same type. |
| [CON01-C](https://wiki.sei.cmu.edu/confluence/display/c/CON01-C.+Acquire+and+release+synchronization+primitives+in+the+same+module%2C+at+the+same+level+of+abstraction) | Acquire and release synchronization primitives in the same module, at the same level of abstraction. |
| [CON05-C](https://wiki.sei.cmu.edu/confluence/display/c/CON05-C.+Do+not+perform+operations+that+can+block+while+holding+a+lock) | Do not perform operations that can block while holding a lock. |
| [MSC00-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC00-C.+Compile+cleanly+at+high+warning+levels) | Compile cleanly at high warning levels. |
| [MSC01-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC01-C.+Strive+for+logical+completeness) | Strive for logical completeness. |
| [MSC04-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC04-C.+Use+comments+consistently+and+in+a+readable+fashion) | Use comments consistently and in a readable fashion. |
| [MSC12-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC12-C.+Detect+and+remove+code+that+has+no+effect+or+is+never+executed) | Detect and remove code that has no effect or is never executed. |
| [MSC13-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC13-C.+Detect+and+remove+unused+values) | Detect and remove unused values. |
| [MSC15-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC15-C.+Do+not+depend+on+undefined+behavior) | Do not depend on undefined behavior. |
| [MSC17-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC17-C.+Finish+every+set+of+statements+associated+with+a+case+label+with+a+break+statement) | Finish every set of statements associated with a case label with a break statement. |
| [MSC18-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC18-C.+Be+careful+while+handling+sensitive+data%2C+such+as+passwords%2C+in+program+code) | Be careful while handling sensitive data, such as passwords, in program code. |
| [MSC20-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC20-C.+Do+not+use+a+switch+statement+to+transfer+control+into+a+complex+block) | Do not use a switch statement to transfer control into a complex block. |
| [MSC21-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC21-C.+Use+robust+loop+termination+conditions) | Use robust loop termination conditions. |
| [MSC22-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC22-C.+Use+the+setjmp%28%29%2C+longjmp%28%29+facility+securely) | Use the setjmp(), longjmp() facility securely. |
| [MSC24-C](https://wiki.sei.cmu.edu/confluence/display/c/MSC24-C.+Do+not+use+deprecated+or+obsolescent+functions) | Do not use deprecated or obsolescent functions. |
| [POS01-C](https://wiki.sei.cmu.edu/confluence/display/c/POS01-C.+Check+for+the+existence+of+links+when+dealing+with+files) | Check for the existence of links when dealing with files. |
| [POS02-C](https://wiki.sei.cmu.edu/confluence/display/c/POS02-C.+Follow+the+principle+of+least+privilege) | Follow the principle of least privilege. |
| [POS05-C](https://wiki.sei.cmu.edu/confluence/display/c/POS05-C.+Limit+access+to+files+by+creating+a+jail) | Limit access to files by creating a jail. |
| [WIN00-C](https://wiki.sei.cmu.edu/confluence/display/c/WIN00-C.+Be+specific+when+dynamically+loading+libraries) | Be specific when dynamically loading libraries. |
| [WIN01-C](https://wiki.sei.cmu.edu/confluence/display/c/WIN01-C.+Do+not+forcibly+terminate+execution) | Do not forcibly terminate execution. |
| [WIN02-C](https://wiki.sei.cmu.edu/confluence/display/c/WIN02-C.+Restrict+privileges+when+spawning+child+processes) | Restrict privileges when spawning child processes. |

## CERT Java rule coverage (online version)

|     |     |     |     |
| --- | --- | --- | --- |
| Section | Rules<br>SupportedAll | % Coverage |
| All | 153 | 200 | 76.5 |
| IDS | 11 | 11 | 100.0 |
| DCL | 3 | 3 | 100.0 |
| EXP | 6 | 7 | 85.7 |
| NUM | 13 | 13 | 100.0 |
| STR | 5 | 5 | 100.0 |
| OBJ | 10 | 13 | 76.9 |
| MET | 12 | 14 | 85.7 |
| ERR | 10 | 10 | 100.0 |
| VNA | 6 | 6 | 100.0 |
| LCK | 12 | 12 | 100.0 |
| THI | 6 | 6 | 100.0 |
| TPS | 5 | 5 | 100.0 |
| TSM | 4 | 4 | 100.0 |
| FIO | 16 | 16 | 100.0 |
| SER | 12 | 13 | 92.3 |
| SEC | 8 | 8 | 100.0 |
| ENV | 3 | 7 | 42.9 |
| JNI | 2 | 5 | 40.0 |
| MSC | 9 | 12 | 75.0 |
| DRD | 0 | 30 | 0.0 |

## CERT Java supported rules (online version)

|     |     |
| --- | --- |
| Rule | Description |
| [IDS00-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS00-J.+Prevent+SQL+injection) | Prevent SQL injection. |
| [IDS01-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS01-J.+Normalize+strings+before+validating+them) | Normalize strings before validating them. |
| [IDS03-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS03-J.+Do+not+log+unsanitized+user+input) | Do not log unsanitized user input. |
| [IDS04-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS04-J.+Safely+extract+files+from+ZipInputStream) | Safely extract files from ZipInputStream. |
| [IDS06-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS06-J.+Exclude+unsanitized+user+input+from+format+strings) | Exclude unsanitized user input from format strings. |
| [IDS07-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS07-J.+Sanitize+untrusted+data+passed+to+the+Runtime.exec%28%29+method) | Sanitize untrusted data passed to the Runtime.exec() method. |
| [IDS08-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS08-J.+Sanitize+untrusted+data+included+in+a+regular+expression) | Sanitize untrusted data included in a regular expression. |
| [IDS11-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS11-J.+Perform+any+string+modifications+before+validation) | Perform any string modifications before validation. |
| [IDS14-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS14-J.+Do+not+trust+the+contents+of+hidden+form+fields) | Do not trust the contents of hidden form fields. |
| [IDS16-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS16-J.+Prevent+XML+Injection) | Prevent XML Injection. |
| [IDS17-J](https://wiki.sei.cmu.edu/confluence/display/java/IDS17-J.+Prevent+XML+External+Entity+Attacks) | Prevent XML External Entity Attacks. |
| [DCL00-J](https://wiki.sei.cmu.edu/confluence/display/java/DCL00-J.+Prevent+class+initialization+cycles) | Prevent class initialization cycles. |
| [DCL01-J](https://wiki.sei.cmu.edu/confluence/display/java/DCL01-J.+Do+not+reuse+public+identifiers+from+the+Java+Standard+Library) | Do not reuse public identifiers from the Java Standard Library. |
| [DCL02-J](https://wiki.sei.cmu.edu/confluence/display/java/DCL02-J.+Do+not+modify+the+collection%27s+elements+during+an+enhanced+for+statement) | Do not modify the collection’s elements during an enhanced for statement. |
| [EXP00-J](https://wiki.sei.cmu.edu/confluence/display/java/EXP00-J.+Do+not+ignore+values+returned+by+methods) | Do not ignore values returned by methods. |
| [EXP01-J](https://wiki.sei.cmu.edu/confluence/display/java/EXP01-J.+Do+not+use+a+null+in+a+case+where+an+object+is+required) | Do not use a null in a case where an object is required. |
| [EXP02-J](https://wiki.sei.cmu.edu/confluence/display/java/EXP02-J.+Do+not+use+the+Object.equals%28%29+method+to+compare+two+arrays) | Do not use the Object.equals() method to compare two arrays. |
| [EXP03-J](https://wiki.sei.cmu.edu/confluence/display/java/EXP03-J.+Do+not+use+the+equality+operators+when+comparing+values+of+boxed+primitives) | Do not use the equality operators when comparing values of boxed primitives. |
| [EXP05-J](https://wiki.sei.cmu.edu/confluence/display/java/EXP05-J.+Do+not+follow+a+write+by+a+subsequent+write+or+read+of+the+same+object+within+an+expression) | Do not follow a write by a subsequent write or read of the same object within an expression. |
| [EXP06-J](https://wiki.sei.cmu.edu/confluence/display/java/EXP06-J.+Expressions+used+in+assertions+must+not+produce+side+effects) | Expressions used in assertions must not produce side effects. |
| [NUM00-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM00-J.+Detect+or+prevent+integer+overflow) | Detect or prevent integer overflow. |
| [NUM01-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM01-J.+Do+not+perform+bitwise+and+arithmetic+operations+on+the+same+data) | Do not perform bitwise and arithmetic operations on the same data. |
| [NUM02-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM02-J.+Ensure+that+division+and+remainder+operations+do+not+result+in+divide-by-zero+errors) | Ensure that division and remainder operations do not result in divide-by-zero errors. |
| [NUM03-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM03-J.+Use+integer+types+that+can+fully+represent+the+possible+range+of++unsigned+data) | Use integer types that can fully represent the possible range of unsigned data. |
| [NUM04-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM04-J.+Do+not+use+floating-point+numbers+if+precise+computation+is+required) | Do not use floating-point numbers if precise computation is required. |
| [NUM07-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM07-J.+Do+not+attempt+comparisons+with+NaN) | Do not attempt comparisons with NaN. |
| [NUM08-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM08-J.+Check+floating-point+inputs+for+exceptional+values) | Check floating-point inputs for exceptional values. |
| [NUM09-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM09-J.+Do+not+use+floating-point+variables+as+loop+counters) | Do not use floating-point variables as loop counters. |
| [NUM10-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM10-J.+Do+not+construct+BigDecimal+objects+from+floating-point+literals) | Do not construct BigDecimal objects from floating-point literals. |
| [NUM11-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM11-J.+Do+not+compare+or+inspect+the+string+representation+of+floating-point+values) | Do not compare or inspect the string representation of floating-point values. |
| [NUM12-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM12-J.+Ensure+conversions+of+numeric+types+to+narrower+types+do+not+result+in+lost+or+misinterpreted+data) | Ensure conversions of numeric types to narrower types do not result in lost or misinterpreted data. |
| [NUM13-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM13-J.+Avoid+loss+of+precision+when+converting+primitive+integers+to+floating-point) | Avoid loss of precision when converting primitive integers to floating-point. |
| [NUM14-J](https://wiki.sei.cmu.edu/confluence/display/java/NUM14-J.+Use+shift+operators+correctly) | Use shift operators correctly. |
| [STR00-J](https://wiki.sei.cmu.edu/confluence/display/java/STR00-J.+Don%27t+form+strings+containing+partial+characters+from+variable-width+encodings) | Don’t form strings containing partial characters from variable-width encodings. |
| [STR01-J](https://wiki.sei.cmu.edu/confluence/display/java/STR01-J.+Do+not+assume+that+a+Java+char+fully+represents+a+Unicode+code+point) | Do not assume that a Java char fully represents a Unicode code point. |
| [STR02-J](https://wiki.sei.cmu.edu/confluence/display/java/STR02-J.+Specify+an+appropriate+locale+when+comparing+locale-dependent+data) | Specify an appropriate locale when comparing locale-dependent data. |
| [STR03-J](https://wiki.sei.cmu.edu/confluence/display/java/STR03-J.+Do+not+encode+noncharacter+data+as+a+string) | Do not encode noncharacter data as a string. |
| [STR04-J](https://wiki.sei.cmu.edu/confluence/display/java/STR04-J.+Use+compatible+character+encodings+when+communicating+string+data+between+JVMs) | Use compatible character encodings when communicating string data between JVMs. |
| [OBJ01-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ01-J.+Limit+accessibility+of+fields) | Limit accessibility of fields. |
| [OBJ04-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ04-J.+Provide+mutable+classes+with+copy+functionality+to+safely+allow+passing+instances+to+untrusted+code) | Provide mutable classes with copy functionality to safely allow passing instances to untrusted code. |
| [OBJ05-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ05-J.+Do+not+return+references+to+private+mutable+class+members) | Do not return references to private mutable class members. |
| [OBJ06-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ06-J.+Defensively+copy+mutable+inputs+and+mutable+internal+components) | Defensively copy mutable inputs and mutable internal components. |
| [OBJ07-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ07-J.+Sensitive+classes+must+not+let+themselves+be+copied) | Sensitive classes must not let themselves be copied. |
| [OBJ08-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ08-J.+Do+not+expose+private+members+of+an+outer+class+from+within+a+nested+class) | Do not expose private members of an outer class from within a nested class. |
| [OBJ09-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ09-J.+Compare+classes+and+not+class+names) | Compare classes and not class names. |
| [OBJ10-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ10-J.+Do+not+use+public+static+nonfinal+fields) | Do not use public static nonfinal fields. |
| [OBJ11-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ11-J.+Be+wary+of+letting+constructors+throw+exceptions) | Be wary of letting constructors throw exceptions. |
| [OBJ13-J](https://wiki.sei.cmu.edu/confluence/display/java/OBJ13-J.+Ensure+that+references+to+mutable+objects+are+not+exposed) | Ensure that references to mutable objects are not exposed. |
| [MET00-J](https://wiki.sei.cmu.edu/confluence/display/java/MET00-J.+Validate+method+arguments) | Validate method arguments. |
| [MET01-J](https://wiki.sei.cmu.edu/confluence/display/java/MET01-J.+Never+use+assertions+to+validate+method+arguments) | Never use assertions to validate method arguments. |
| [MET02-J](https://wiki.sei.cmu.edu/confluence/display/java/MET02-J.+Do+not+use+deprecated+or+obsolete+classes+or+methods) | Do not use deprecated or obsolete classes or methods. |
| [MET03-J](https://wiki.sei.cmu.edu/confluence/display/java/MET03-J.+Methods+that+perform+a+security+check+must+be+declared+private+or+final) | Methods that perform a security check must be declared private or final. |
| [MET04-J](https://wiki.sei.cmu.edu/confluence/display/java/MET04-J.+Do+not+increase+the+accessibility+of+overridden+or+hidden+methods) | Do not increase the accessibility of overridden or hidden methods. |
| [MET05-J](https://wiki.sei.cmu.edu/confluence/display/java/MET05-J.+Ensure+that+constructors+do+not+call+overridable+methods) | Ensure that constructors do not call overridable methods. |
| [MET06-J](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88487921) | Do not invoke overridable methods in clone(). |
| [MET07-J](https://wiki.sei.cmu.edu/confluence/display/java/MET07-J.+Never+declare+a+class+method+that+hides+a+method+declared+in+a+superclass+or+superinterface) | Never declare a class method that hides a method declared in a superclass or superinterface. |
| [MET08-J](https://wiki.sei.cmu.edu/confluence/display/java/MET08-J.+Preserve+the+equality+contract+when+overriding+the+equals%28%29+method) | Preserve the equality contract when overriding the equals() method. |
| [MET09-J](https://wiki.sei.cmu.edu/confluence/display/java/MET09-J.+Classes+that+define+an+equals%28%29+method+must+also+define+a+hashCode%28%29+method) | Classes that define an equals() method must also define a hashCode() method. |
| [MET11-J](https://wiki.sei.cmu.edu/confluence/display/java/MET11-J.+Ensure+that+keys+used+in+comparison+operations+are+immutable) | Ensure that keys used in comparison operations are immutable. |
| [MET12-J](https://wiki.sei.cmu.edu/confluence/display/java/MET12-J.+Do+not+use+finalizers) | Do not use finalizers. |
| [ERR00-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR00-J.+Do+not+suppress+or+ignore+checked+exceptions) | Do not suppress or ignore checked exceptions. |
| [ERR01-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR01-J.+Do+not+allow+exceptions+to+expose+sensitive+information) | Do not allow exceptions to expose sensitive information. |
| [ERR02-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR02-J.+Prevent+exceptions+while+logging+data) | Prevent exceptions while logging data. |
| [ERR03-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR03-J.+Restore+prior+object+state+on+method+failure) | Restore prior object state on method failure. |
| [ERR04-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR04-J.+Do+not+complete+abruptly+from+a+finally+block) | Do not complete abruptly from a finally block. |
| [ERR05-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR05-J.+Do+not+let+checked+exceptions+escape+from+a+finally+block) | Do not let checked exceptions escape from a finally block. |
| [ERR06-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR06-J.+Do+not+throw+undeclared+checked+exceptions) | Do not throw undeclared checked exceptions. |
| [ERR07-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR07-J.+Do+not+throw+RuntimeException%2C+Exception%2C+or+Throwable) | Do not throw RuntimeException, Exception, or Throwable. |
| [ERR08-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR08-J.+Do+not+catch+NullPointerException+or+any+of+its+ancestors) | Do not catch NullPointerException or any of its ancestors. |
| [ERR09-J](https://wiki.sei.cmu.edu/confluence/display/java/ERR09-J.+Do+not+allow+untrusted+code+to+terminate+the+JVM) | Do not allow untrusted code to terminate the JVM. |
| [VNA00-J](https://wiki.sei.cmu.edu/confluence/display/java/VNA00-J.+Ensure+visibility+when+accessing+shared+primitive+variables) | Ensure visibility when accessing shared primitive variables. |
| [VNA01-J](https://wiki.sei.cmu.edu/confluence/display/java/VNA01-J.+Ensure+visibility+of+shared+references+to+immutable+objects) | Ensure visibility of shared references to immutable objects. |
| [VNA02-J](https://wiki.sei.cmu.edu/confluence/display/java/VNA02-J.+Ensure+that+compound+operations+on+shared+variables+are+atomic) | Ensure that compound operations on shared variables are atomic. |
| [VNA03-J](https://wiki.sei.cmu.edu/confluence/display/java/VNA03-J.+Do+not+assume+that+a+group+of+calls+to+independently+atomic+methods+is+atomic) | Do not assume that a group of calls to independently atomic methods is atomic. |
| [VNA04-J](https://wiki.sei.cmu.edu/confluence/display/java/VNA04-J.+Ensure+that+calls+to+chained+methods+are+atomic) | Ensure that calls to chained methods are atomic. |
| [VNA05-J](https://wiki.sei.cmu.edu/confluence/display/java/VNA05-J.+Ensure+atomicity+when+reading+and+writing+64-bit+values) | Ensure atomicity when reading and writing 64-bit values. |
| [LCK00-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK00-J.+Use+private+final+lock+objects+to+synchronize+classes+that+may+interact+with+untrusted+code) | Use private final lock objects to synchronize classes that may interact with untrusted code. |
| [LCK01-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK01-J.+Do+not+synchronize+on+objects+that+may+be+reused) | Do not synchronize on objects that may be reused. |
| [LCK02-J](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88487849) | Do not synchronize on the class object returned by getClass(). |
| [LCK03-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK03-J.+Do+not+synchronize+on+the+intrinsic+locks+of+high-level+concurrency+objects) | Do not synchronize on the intrinsic locks of high-level concurrency objects. |
| [LCK04-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK04-J.+Do+not+synchronize+on+a+collection+view+if+the+backing+collection+is+accessible) | Do not synchronize on a collection view if the backing collection is accessible. |
| [LCK05-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK05-J.+Synchronize+access+to+static+fields+that+can+be+modified+by+untrusted+code) | Synchronize access to static fields that can be modified by untrusted code. |
| [LCK06-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK06-J.+Do+not+use+an+instance+lock+to+protect+shared+static+data) | Do not use an instance lock to protect shared static data. |
| [LCK07-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK07-J.+Avoid+deadlock+by+requesting+and+releasing+locks+in+the+same+order) | Avoid deadlock by requesting and releasing locks in the same order. |
| [LCK08-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK08-J.+Ensure+actively+held+locks+are+released+on+exceptional+conditions) | Ensure actively held locks are released on exceptional conditions. |
| [LCK09-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK09-J.+Do+not+perform+operations+that+can+block+while+holding+a+lock) | Do not perform operations that can block while holding a lock. |
| [LCK10-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK10-J.+Use+a+correct+form+of+the+double-checked+locking+idiom) | Use a correct form of the double-checked locking idiom. |
| [LCK11-J](https://wiki.sei.cmu.edu/confluence/display/java/LCK11-J.+Avoid+client-side+locking+when+using+classes+that+do+not+commit+to+their+locking+strategy) | Avoid client-side locking when using classes that do not commit to their locking strategy. |
| [THI00-J](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88487912) | Do not invoke Thread.run(). |
| [THI01-J](https://wiki.sei.cmu.edu/confluence/display/java/THI01-J.+Do+not+invoke+ThreadGroup+methods) | Do not invoke ThreadGroup methods. |
| [THI02-J](https://wiki.sei.cmu.edu/confluence/display/java/THI02-J.+Notify+all+waiting+threads+rather+than+a+single+thread) | Notify all waiting threads rather than a single thread. |
| [THI03-J](https://wiki.sei.cmu.edu/confluence/display/java/THI03-J.+Always+invoke+wait%28%29+and+await%28%29+methods+inside+a+loop) | Always invoke wait() and await() methods inside a loop. |
| [THI04-J](https://wiki.sei.cmu.edu/confluence/display/java/THI04-J.+Ensure+that+threads+performing+blocking+operations+can+be+terminated) | Ensure that threads performing blocking operations can be terminated. |
| [THI05-J](https://wiki.sei.cmu.edu/confluence/display/java/THI05-J.+Do+not+use+Thread.stop%28%29+to+terminate+threads) | Do not use Thread.stop() to terminate threads. |
| [TPS00-J](https://wiki.sei.cmu.edu/confluence/display/java/TPS00-J.+Use+thread+pools+to+enable+graceful+degradation+of+service+during+traffic+bursts) | Use thread pools to enable graceful degradation of service during traffic bursts. |
| [TPS01-J](https://wiki.sei.cmu.edu/confluence/display/java/TPS01-J.+Do+not+execute+interdependent+tasks+in+a+bounded+thread+pool) | Do not execute interdependent tasks in a bounded thread pool. |
| [TPS02-J](https://wiki.sei.cmu.edu/confluence/display/java/TPS02-J.+Ensure+that+tasks+submitted+to+a+thread+pool+are+interruptible) | Ensure that tasks submitted to a thread pool are interruptible. |
| [TPS03-J](https://wiki.sei.cmu.edu/confluence/display/java/TPS03-J.+Ensure+that+tasks+executing+in+a+thread+pool+do+not+fail+silently) | Ensure that tasks executing in a thread pool do not fail silently. |
| [TPS04-J](https://wiki.sei.cmu.edu/confluence/display/java/TPS04-J.+Ensure+ThreadLocal+variables+are+reinitialized+when+using+thread+pools) | Ensure ThreadLocal variables are reinitialized when using thread pools. |
| [TSM00-J](https://wiki.sei.cmu.edu/confluence/display/java/TSM00-J.+Do+not+override+thread-safe+methods+with+methods+that+are+not+thread-safe) | Do not override thread-safe methods with methods that are not thread-safe. |
| [TSM01-J](https://wiki.sei.cmu.edu/confluence/display/java/TSM01-J.+Do+not+let+the+this+reference+escape+during+object+construction) | Do not let the this reference escape during object construction. |
| [TSM02-J](https://wiki.sei.cmu.edu/confluence/display/java/TSM02-J.+Do+not+use+background+threads+during+class+initialization) | Do not use background threads during class initialization. |
| [TSM03-J](https://wiki.sei.cmu.edu/confluence/display/java/TSM03-J.+Do+not+publish+partially+initialized+objects) | Do not publish partially initialized objects. |
| [FIO00-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO00-J.+Do+not+operate+on+files+in+shared+directories) | Do not operate on files in shared directories. |
| [FIO01-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO01-J.+Create+files+with+appropriate+access+permissions) | Create files with appropriate access permissions. |
| [FIO02-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO02-J.+Detect+and+handle+file-related+errors) | Detect and handle file-related errors. |
| [FIO03-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO03-J.+Remove+temporary+files+before+termination) | Remove temporary files before termination. |
| [FIO04-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO04-J.+Release+resources+when+they+are+no+longer+needed) | Release resources when they are no longer needed. |
| [FIO05-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO05-J.+Do+not+expose+buffers+or+their+backing+arrays+methods+to+untrusted+code) | Do not expose buffers or their backing arrays methods to untrusted code. |
| [FIO06-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO06-J.+Do+not+create+multiple+buffered+wrappers+on+a+single+byte+or+character+stream) | Do not create multiple buffered wrappers on a single byte or character stream. |
| [FIO07-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO07-J.+Do+not+let+external+processes+block+on+IO+buffers) | Do not let external processes block on IO buffers. |
| [FIO08-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO08-J.+Distinguish+between+characters+or+bytes+read+from+a+stream+and+-1) | Distinguish between characters or bytes read from a stream and -1. |
| [FIO09-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO09-J.+Do+not+rely+on+the+write%28%29+method+to+output+integers+outside+the+range+0+to+255) | Do not rely on the write() method to output integers outside the range 0 to 255. |
| [FIO10-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO10-J.+Ensure+the+array+is+filled+when+using+read%28%29+to+fill+an+array) | Ensure the array is filled when using read() to fill an array. |
| [FIO12-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO12-J.+Provide+methods+to+read+and+write+little-endian+data) | Provide methods to read and write little-endian data. |
| [FIO13-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO13-J.+Do+not+log+sensitive+information+outside+a+trust+boundary) | Do not log sensitive information outside a trust boundary. |
| [FIO14-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO14-J.+Perform+proper+cleanup+at+program+termination) | Perform proper cleanup at program termination. |
| [FIO15-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO15-J.+Do+not+reset+a+servlet%27s+output+stream+after+committing+it) | Do not reset a servlet’s output stream after committing it. |
| [FIO16-J](https://wiki.sei.cmu.edu/confluence/display/java/FIO16-J.+Canonicalize+path+names+before+validating+them) | Canonicalize path names before validating them. |
| [SER00-J](https://wiki.sei.cmu.edu/confluence/display/java/SER00-J.+Enable+serialization+compatibility+during+class+evolution) | Enable serialization compatibility during class evolution. |
| [SER01-J](https://wiki.sei.cmu.edu/confluence/display/java/SER01-J.+Do+not+deviate+from+the+proper+signatures+of+serialization+methods) | Do not deviate from the proper signatures of serialization methods. |
| [SER02-J](https://wiki.sei.cmu.edu/confluence/display/java/SER02-J.+Sign+then+seal+objects+before+sending+them+outside+a+trust+boundary) | Sign then seal objects before sending them outside a trust boundary. |
| [SER04-J](https://wiki.sei.cmu.edu/confluence/display/java/SER04-J.+Do+not+allow+serialization+and+deserialization+to+bypass+the+security+manager) | Do not allow serialization and deserialization to bypass the security manager. |
| [SER05-J](https://wiki.sei.cmu.edu/confluence/display/java/SER05-J.+Do+not+serialize+instances+of+inner+classes) | Do not serialize instances of inner classes. |
| [SER06-J](https://wiki.sei.cmu.edu/confluence/display/java/SER06-J.+Make+defensive+copies+of+private+mutable+components+during+deserialization) | Make defensive copies of private mutable components during deserialization. |
| [SER07-J](https://wiki.sei.cmu.edu/confluence/display/java/SER07-J.+Do+not+use+the+default+serialized+form+for+classes+with+implementation-defined+invariants) | Do not use the default serialized form for classes with implementation-defined invariants. |
| [SER08-J](https://wiki.sei.cmu.edu/confluence/display/java/SER08-J.+Minimize+privileges+before+deserializing+from+a+privileged+context) | Minimize privileges before deserializing from a privileged context. |
| [SER09-J](https://wiki.sei.cmu.edu/confluence/display/java/SER09-J.+Do+not+invoke+overridable+methods+from+the+readObject%28%29+method) | Do not invoke overridable methods from the readObject() method. |
| [SER10-J](https://wiki.sei.cmu.edu/confluence/display/java/SER10-J.+Avoid+memory+and+resource+leaks+during+serialization) | Avoid memory and resource leaks during serialization. |
| [SER11-J](https://wiki.sei.cmu.edu/confluence/display/java/SER11-J.+Prevent+overwriting+of+externalizable+objects) | Prevent overwriting of externalizable objects. |
| [SER12-J](https://wiki.sei.cmu.edu/confluence/display/java/SER12-J.+Prevent+deserialization+of+untrusted+data) | Prevent deserialization of untrusted data. |
| [SEC00-J](https://wiki.sei.cmu.edu/confluence/display/java/SEC00-J.+Do+not+allow+privileged+blocks+to+leak+sensitive+information+across+a+trust+boundary) | Do not allow privileged blocks to leak sensitive information across a trust boundary. |
| [SEC01-J](https://wiki.sei.cmu.edu/confluence/display/java/SEC01-J.+Do+not+allow+tainted+variables+in+privileged+blocks) | Do not allow tainted variables in privileged blocks. |
| [SEC02-J](https://wiki.sei.cmu.edu/confluence/display/java/SEC02-J.+Do+not+base+security+checks+on+untrusted+sources) | Do not base security checks on untrusted sources. |
| [SEC03-J](https://wiki.sei.cmu.edu/confluence/display/java/SEC03-J.+Do+not+load+trusted+classes+after+allowing+untrusted+code+to+load+arbitrary+classes) | Do not load trusted classes after allowing untrusted code to load arbitrary classes. |
| [SEC04-J](https://wiki.sei.cmu.edu/confluence/display/java/SEC04-J.+Protect+sensitive+operations+with+security+manager+checks) | Protect sensitive operations with security manager checks. |
| [SEC05-J](https://wiki.sei.cmu.edu/confluence/display/java/SEC05-J.+Do+not+use+reflection+to+increase+accessibility+of+classes%2C+methods%2C+or+fields) | Do not use reflection to increase accessibility of classes, methods, or fields. |
| [SEC06-J](https://wiki.sei.cmu.edu/confluence/display/java/SEC06-J.+Do+not+rely+on+the+default+automatic+signature+verification+provided+by+URLClassLoader+and+java.util.jar) | Do not rely on the default automatic signature verification provided by URLClassLoader and java.util.jar. |
| [SEC07-J](https://wiki.sei.cmu.edu/confluence/display/java/SEC07-J.+Call+the+superclass%27s+getPermissions%28%29+method+when+writing+a+custom+class+loader) | Call the superclass’s getPermissions() method when writing a custom class loader. |
| [ENV02-J](https://wiki.sei.cmu.edu/confluence/display/java/ENV02-J.+Do+not+trust+the+values+of+environment+variables) | Do not trust the values of environment variables. |
| [ENV03-J](https://wiki.sei.cmu.edu/confluence/display/java/ENV03-J.+Do+not+grant+dangerous+combinations+of+permissions) | Do not grant dangerous combinations of permissions. |
| [ENV06-J](https://wiki.sei.cmu.edu/confluence/display/java/ENV06-J.+Production+code+must+not+contain+debugging+entry+points) | Production code must not contain debugging entry points. |
| [JNI00-J](https://wiki.sei.cmu.edu/confluence/display/java/JNI00-J.+Define+wrappers+around+native+methods) | Define wrappers around native methods. |
| [JNI01-J](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88487334) | Safely invoke standard APIs that perform tasks using the immediate caller’s class loader instance (loadLibrary). |
| [MSC00-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC00-J.+Use+SSLSocket+rather+than+Socket+for+secure+data+exchange) | Use SSLSocket rather than Socket for secure data exchange. |
| [MSC01-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC01-J.+Do+not+use+an+empty+infinite+loop) | Do not use an empty infinite loop. |
| [MSC02-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC02-J.+Generate+strong+random+numbers) | Generate strong random numbers. |
| [MSC03-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC03-J.+Never+hard+code+sensitive+information) | Never hard code sensitive information. |
| [MSC04-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC04-J.+Do+not+leak+memory) | Do not leak memory. |
| [MSC05-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC05-J.+Do+not+exhaust+heap+space) | Do not exhaust heap space. |
| [MSC06-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC06-J.+Do+not+modify+the+underlying+collection+when+an+iteration+is+in+progress) | Do not modify the underlying collection when an iteration is in progress. |
| [MSC07-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC07-J.+Prevent+multiple+instantiations+of+singleton+objects) | Prevent multiple instantiations of singleton objects. |
| [MSC11-J](https://wiki.sei.cmu.edu/confluence/display/java/MSC11-J.+Do+not+let+session+information+leak+within+a+servlet) | Do not let session information leak within a servlet. |

### Ready to see how Black Duck can secure your entire SDLC?

##### Application security that scales with you. Meet the demands of modern software in a regulated, AI-powered world.

[Contact sales](/content/contact-sales.html) [View solutions](/content/resources/datasheets/black-duck-product-services-portfolio.html)

A2A
