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
3 Back Matter
AA. Bibliography
Page Information
Title:
AA. Bibliography
Author:
Fred Long
Jul 25, 2006
Last Changed by:
David Svoboda
Dec 17, 2021
Tiny Link:
(useful for email)
https://wiki.sei.cmu.edu/confluence/x/zXw-BQ
Export As:
Word
·
PDF
Incoming Links
SEI CERT C++ Coding Standard (86)
Page:
DCL58-CPP. Do not modify the standard namespaces
Page:
STR53-CPP. Range check element access
Page:
CTR53-CPP. Use valid iterator ranges
Page:
EXP52-CPP. Do not rely on side effects in unevaluated operands
Page:
MEM50-CPP. Do not access freed memory
Page:
CTR56-CPP. Do not use pointer arithmetic on polymorphic objects
Page:
DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions
Page:
MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity
Page:
ERR60-CPP. Exception objects must be nothrow copy constructible
Page:
ERR55-CPP. Honor exception specifications
Page:
EXP51-CPP. Do not delete an array through a pointer of the incorrect type
Page:
EXP56-CPP. Do not call a function with a mismatched language linkage
Page:
CON54-CPP. Wrap functions that can spuriously wake up in a loop
Page:
CTR52-CPP. Guarantee that library functions do not overflow
Page:
DCL60-CPP. Obey the one-definition rule
Page:
EXP59-CPP. Use offsetof() on valid types and members
Page:
MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime
Page:
ERR51-CPP. Handle all exceptions
Page:
CON52-CPP. Prevent data races when accessing bit-fields from multiple threads
Page:
DCL52-CPP. Never qualify a reference type with const or volatile
Page:
OOP50-CPP. Do not invoke virtual functions from constructors or destructors
Page:
EXP57-CPP. Do not cast or delete pointers to incomplete classes
Page:
EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries
Page:
MEM57-CPP. Avoid using default operator new for over-aligned types
Page:
MEM52-CPP. Detect and handle memory allocation errors
Page:
Scope
Page:
MSC50-CPP. Do not use std::rand() for generating pseudorandom numbers
Page:
ERR59-CPP. Do not throw an exception across execution boundaries
Page:
STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator
Page:
INT50-CPP. Do not cast to an out-of-range enumeration value
Page:
DCL56-CPP. Avoid cycles during initialization of static objects
Page:
CTR54-CPP. Do not subtract iterators that do not refer to the same container
Page:
MSC52-CPP. Value-returning functions must return a value from all exit paths
Page:
CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container
Page:
CON51-CPP. Ensure actively held locks are released on exceptional conditions
Page:
OOP52-CPP. Do not delete a polymorphic object without a virtual destructor
Page:
CTR58-CPP. Predicate function objects should not be mutable
Page:
MEM55-CPP. Honor replacement dynamic storage management requirements
Page:
CON53-CPP. Avoid deadlock by locking in a predefined order
Page:
STR51-CPP. Do not attempt to create a std::string from a null pointer
Page:
OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions
Page:
ERR56-CPP. Guarantee exception safety
Page:
DCL50-CPP. Do not define a C-style variadic function
Page:
EXP58-CPP. Pass an object of the correct type to va_start
Page:
MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer
Page:
EXP53-CPP. Do not read uninitialized memory
Page:
OOP54-CPP. Gracefully handle self-copy assignment
Page:
OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members
Page:
ERR57-CPP. Do not leak resources when handling exceptions
Page:
OOP56-CPP. Honor replacement handler requirements
Page:
ERR58-CPP. Handle all exceptions thrown before main() begins executing
Page:
EXP50-CPP. Do not depend on the order of evaluation for side effects
Page:
ERR52-CPP. Do not use setjmp() or longjmp()
Page:
CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow
Page:
ERR50-CPP. Do not abruptly terminate the program
Page:
ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler
Page:
EXP61-CPP. A lambda object must not outlive any of its reference captured objects
Page:
MEM51-CPP. Properly deallocate dynamically allocated resources
Page:
OOP51-CPP. Do not slice derived objects
Page:
MSC53-CPP. Do not return from a function declared [[noreturn]]
Page:
How this Coding Standard Is Organized
Page:
BB. Definitions
Page:
EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation
Page:
EXP63-CPP. Do not rely on the value of a moved-from object
Page:
EXP54-CPP. Do not access an object outside of its lifetime
Page:
CON56-CPP. Do not speculatively lock a non-recursive mutex that is already owned by the calling thread
Page:
Conformance Testing
Page:
EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type
Page:
OOP53-CPP. Write constructor member initializers in the canonical order
Page:
FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call
Page:
STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string
Page:
MSC51-CPP. Ensure your random number generator is properly seeded
Page:
ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived
Page:
CTR50-CPP. Guarantee that container indices and iterators are within the valid range
Page:
Government Regulations
Page:
MSC54-CPP. A signal handler must be a plain old function
Page:
DCL59-CPP. Do not define an unnamed namespace in a header file
Page:
CTR57-CPP. Provide a valid ordering predicate
Page:
DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope
Page:
ERR61-CPP. Catch exceptions by lvalue reference
Page:
CON50-CPP. Do not destroy a mutex while it is locked
Page:
DCL53-CPP. Do not write syntactically ambiguous declarations
Page:
DCL55-CPP. Avoid information leakage when passing a class object across a trust boundary
Page:
DCL51-CPP. Do not declare or define a reserved identifier
Page:
FIO51-CPP. Close files when they are no longer needed
Page:
OOP58-CPP. Copy operations must not mutate the source object
Hierarchy
Parent Page
Page:
3 Back Matter
Labels
Global Labels (4)
bm
recommendation
rule
section
Recent Changes
Time
Editor
Dec 17, 2021 14:26
David Svoboda
View Changes
Dec 17, 2021 14:22
David Svoboda
View Changes
Jan 16, 2019 10:22
Robert Schiela
View Changes
Added "Accessed" dates for the 3 DISA reference links.
Jan 16, 2019 10:15
Robert Schiela
View Changes
Added DISA ASD STIG V4R8 link.
Jan 05, 2017 15:13
Robert Schiela
Remove Nav buttons in footer.
View Page History
Outgoing Links
External Links (57)
www.stroustrup.com/except.pdf
www.graphics.cornell.edu/~martin/docs/c++-faq
ieeexplore.ieee.org/servlet/opac?punumber=6506089
ftp://ftp.rfc-editor.org/in-notes/rfc2828.txt
www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html
www.boost.org/doc/libs/1_44_0/doc/html/thread.html
https://iasecontent.disa.mil/stigs/zip/U_ASD_V4R8_STIG.zip
cwe.mitre.org/data/definitions/330.html
ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=159342
samate.nist.gov/docs/source_code_security_analysis_spec_SP5…
msdn.microsoft.com/en-us/library/aa379942.aspx
www.sgi.com/tech/stl/basic_string.html
www.stroustrup.com/bs_faq2.html
www.informit.com/store/art-of-software-security-assessment-…
www.fortifysoftware.com/vulncat/
www.kb.cert.org/vuls/id/925211
www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1856.html
www.embedded.com/columns/programmingpointers/9900661?_reque…
https://refspecs.linuxbase.org/cxxabi-1.86.html#array-cooki…
www.opengroup.org/onlinepubs/009695399/toc.htm
cansecwest.com/csw07/Vector-Rewrite-Attack.pdf
https://computing.llnl.gov/tutorials/pthreads/
https://groups.google.com/a/isocpp.org/d/msg/std-discussion…
https://msdn.microsoft.com/en-us/library/49147z04.aspx
https://mentorembedded.github.io/cxx-abi/abi.html
docs.sun.com/source/806-3568/ncg_goldberg.html
em386.blogspot.com/2009/06/fun-with-erase.html
www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2521.pdf
www.dansaks.com/articles/1999-02%20const%20T%20vs%20T%20con…
gcc.gnu.org/onlinedocs
www.opengroup.org/onlinepubs/9699919799/toc.htm
www.kb.cert.org/vuls/id/159523
www.mypearsonstore.com/bookstore/industrial-strength-c-plus…
doi.acm.org/10.1145/956641.956647
https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
cwe.mitre.org/
support.microsoft.com/kb/813810
www.devx.com/SpecialReports/Article/38883/1954
www.securesoftware.com/process/
www.misra.org.uk/
iase.disa.mil/stigs/Documents/U_Application_Security_and_De…
www.kb.cert.org/vuls/id/162289
www.informit.com/store/concurrent-programming-in-java-desig…
xorl.wordpress.com/
www.securityfocus.com/advisories/198
shop.oreilly.com/product/9780596002428.do
www.boost.org/community/error_handling.html
en.wikisource.org/wiki/Ariane_501_Inquiry_Board_report
www.kb.cert.org/vuls/id/623332
cwe.mitre.org/data/definitions/327.html
www.phy.duke.edu/~rgb/General/c_book/c_book/index.html
samate.nist.gov/SRD/
www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3026.html…
https://http//www.open-std.org/jtcl/sc22/wg21/docs/papers/2…
www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n3000.pdf
iasecontent.disa.mil/stigs/zip/Aug2016/U_ASD_V4R1_STIG.zip
www.stroustrup.com/JSF-AV-rules.pdf
Overview
Content Tools
{"serverDuration": 6342, "requestCorrelationId": "fd581c455b4b34df"}