[{"data":1,"prerenderedAt":1800},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstring-from-a-null-pointer":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstring-from-a-null-pointer":1097,"sidebar-sei-cert-cpp-coding-standard":1106},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":27,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24],{"title":13,"path":14},"Android Coding Standard","\u002Fandroid-secure-coding-standard\u002F",{"title":16,"path":17},"C Coding Standard","\u002Fsei-cert-c-coding-standard\u002F",{"title":19,"path":20},"C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002F",{"title":22,"path":23},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":25,"path":26},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":29,"title":30,"body":31,"description":1082,"extension":1083,"meta":1084,"navigation":7,"path":1093,"seo":1094,"stem":1095,"__hash__":1096},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F5.string-from-a-null-pointer.md","string from a null pointer",{"type":32,"value":33,"toc":1072},"minimark",[34,38,95,104,159,166,218,225,233,239,267,272,288,416,420,429,545,549,574,641,646,941,945,959,963,986,990,1043,1046,1068],[35,36,30],"h1",{"id":37},"string-from-a-null-pointer",[39,40,41,42,46,47,51,52,54,55,58,59,62,63,62,66,69,70,73,74,76,77,79,80,83,84,89,90,94],"p",{},"The ",[43,44,45],"code",{},"std::basic_string"," type uses the ",[48,49,50],"em",{},"traits"," design pattern to handle implementation details of the various string types, resulting in a series of string-like classes with a common, underlying implementation. Specifically, the ",[43,53,45],{}," class is paired with ",[43,56,57],{},"std::char_traits"," to create the ",[43,60,61],{},"std::string"," , ",[43,64,65],{},"std::wstring",[43,67,68],{},"std::u16string"," , and ",[43,71,72],{},"std::u32string"," classes. The ",[43,75,57],{}," class is explicitly specialized to provide policy-based implementation details to the ",[43,78,45],{}," type. One such implementation detail is the ",[43,81,82],{},"std::char_traits::length()"," function, which is frequently used to determine the number of characters in a null-terminated string. According to the C++ Standard, [char.traits.require], Table 62 [ ",[85,86,88],"a",{"href":87},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ] , passing a null pointer to this function is ",[85,91,93],{"href":92},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-undefinedbehavior","undefined behavior"," because it would result in dereferencing a null pointer.",[39,96,97,98,100,101,103],{},"The following ",[43,99,45],{}," member functions result in a call to ",[43,102,82],{}," :",[105,106,107],"ul",{},[108,109,110,113,114,113,117,113,120,113,123,113,126,113,129,113,132,113,135,113,138,113,141,113,144,113,147,113,150,113,153,113,156],"li",{},[43,111,112],{},"   basic_string::basic_string(const charT *, const Allocator &)  ","-",[43,115,116],{},"   basic_string &basic_string::append(const charT *)  ",[43,118,119],{},"   basic_string &basic_string::assign(const charT *)  ",[43,121,122],{},"   basic_string &basic_string::insert(size_type, const charT *)  ",[43,124,125],{},"   basic_string &basic_string::replace(size_type, size_type, const charT *)  ",[43,127,128],{},"   basic_string &basic_string::replace(const_iterator, const_iterator, const charT *)  ",[43,130,131],{},"   size_type basic_string::find(const charT *, size_type)  ",[43,133,134],{},"   size_type basic_string::rfind(const charT *, size_type)  ",[43,136,137],{},"   size_type basic_string::find_first_of(const charT *, size_type)  ",[43,139,140],{},"   size_type basic_string::find_last_of(const charT *, size_type)  ",[43,142,143],{},"   size_type basic_string::find_first_not_of(const charT *, size_type)  ",[43,145,146],{},"   size_type basic_string::find_last_not_of(const charT *, size_type)  ",[43,148,149],{},"   int basic_string::compare(const charT *)  ",[43,151,152],{},"   int basic_string::compare(size_type, size_type, const charT *)  ",[43,154,155],{},"   basic_string &basic_string::operator=(const charT *)  ",[43,157,158],{},"   basic_string &basic_string::operator+=(const charT *)  ",[39,160,97,161,163,164,103],{},[43,162,45],{}," nonmember functions result in a call to to ",[43,165,82],{},[105,167,168],{},[108,169,170,113,173,113,176,113,179,113,182,113,185,113,188,113,191,113,194,113,197,113,200,113,203,113,206,113,209,113,212,113,215],{},[43,171,172],{},"   basic_string operator+(const charT *, const basic_string&)  ",[43,174,175],{},"   basic_string operator+(const charT *, basic_string &&)  ",[43,177,178],{},"   basic_string operator+(const basic_string &, const charT *)  ",[43,180,181],{},"   basic_string operator+(basic_string &&, const charT *)  ",[43,183,184],{},"   bool operator==(const charT *, const basic_string &)  ",[43,186,187],{},"   bool operator==(const basic_string &, const charT *)  ",[43,189,190],{},"   bool operator!=(const charT *, const basic_string &)  ",[43,192,193],{},"   bool operator!=(const basic_string &, const charT *)  ",[43,195,196],{},"   bool operator\u003C(const charT *, const basic_string &)  ",[43,198,199],{},"   bool operator\u003C(const basic_string &, const charT *)  ",[43,201,202],{},"   bool operator>(const charT *, const basic_string &)  ",[43,204,205],{},"   bool operator>(const basic_string &, const charT *)  ",[43,207,208],{},"   bool operator\u003C=(const charT *, const basic_string &)  ",[43,210,211],{},"   bool operator\u003C=(const basic_string &, const charT *)  ",[43,213,214],{},"   bool operator>=(const charT *, const basic_string &)  ",[43,216,217],{},"   bool operator>=(const basic_string &, const charT *)  ",[39,219,220,221,224],{},"Do not call any of the preceding functions with a null pointer as the ",[43,222,223],{},"  const charT * "," argument.",[39,226,227,228,232],{},"This rule is a specific instance of ",[85,229,231],{"href":230},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp34-c","EXP34-C. Do not dereference null pointers"," .",[39,234,235],{},[236,237,238],"strong",{},"Implementation Details",[39,240,241,242,246,247,250,251,253,254,256,257,261,262,266],{},"Some standard library vendors, such as ",[85,243,245],{"href":244},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-libstdcxx","libstdc++,"," throw a ",[43,248,249],{},"std::logic_error"," when a null pointer is used in the above function calls, though not when calling ",[43,252,82],{}," . However, ",[43,255,249],{}," is not a requirement of the C++ Standard, and some vendors (e.g., ",[85,258,260],{"href":259},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-libcxx","libc++"," and the ",[85,263,265],{"href":264},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-msvcstl","Microsoft Visual Studio STL"," ) do not implement this behavior. For portability, you should not rely on this behavior.",[268,269,271],"h2",{"id":270},"noncompliant-code-example","Noncompliant Code Example",[39,273,274,275,277,278,281,282,284,285,287],{},"In this noncompliant code example, a ",[43,276,61],{}," object is created from the results of a call to ",[43,279,280],{},"std::getenv()"," . However, because ",[43,283,280],{}," returns a null pointer on failure, this code can lead to ",[85,286,93],{"href":92}," when the environment variable does not exist (or some other error occurs).",[289,290,292],"code-block",{"quality":291},"bad",[293,294,299],"pre",{"className":295,"code":296,"language":297,"meta":298,"style":298},"language-cpp shiki shiki-themes github-light github-dark monokai","#include \u003Ccstdlib>\n#include \u003Cstring>\n \nvoid f() {\n  std::string tmp(std::getenv(\"TMP\"));\n  if (!tmp.empty()) {\n    \u002F\u002F ...\n  }\n}\n","cpp","",[43,300,301,314,322,329,343,376,397,404,410],{"__ignoreMap":298},[302,303,306,310],"span",{"class":304,"line":305},"line",1,[302,307,309],{"class":308},"sC2Qs","#include",[302,311,313],{"class":312},"sstjo"," \u003Ccstdlib>\n",[302,315,317,319],{"class":304,"line":316},2,[302,318,309],{"class":308},[302,320,321],{"class":312}," \u003Cstring>\n",[302,323,325],{"class":304,"line":324},3,[302,326,328],{"class":327},"sMOD_"," \n",[302,330,332,336,340],{"class":304,"line":331},4,[302,333,335],{"class":334},"sq6CD","void",[302,337,339],{"class":338},"srTi1"," f",[302,341,342],{"class":327},"() {\n",[302,344,346,350,353,356,359,362,365,368,370,373],{"class":304,"line":345},5,[302,347,349],{"class":348},"sz2Vg","  std",[302,351,352],{"class":327},"::string ",[302,354,355],{"class":338},"tmp",[302,357,358],{"class":327},"(",[302,360,361],{"class":348},"std",[302,363,364],{"class":327},"::",[302,366,367],{"class":338},"getenv",[302,369,358],{"class":327},[302,371,372],{"class":312},"\"TMP\"",[302,374,375],{"class":327},"));\n",[302,377,379,382,385,388,391,394],{"class":304,"line":378},6,[302,380,381],{"class":308},"  if",[302,383,384],{"class":327}," (",[302,386,387],{"class":308},"!",[302,389,390],{"class":327},"tmp.",[302,392,393],{"class":338},"empty",[302,395,396],{"class":327},"()) {\n",[302,398,400],{"class":304,"line":399},7,[302,401,403],{"class":402},"s8-w5","    \u002F\u002F ...\n",[302,405,407],{"class":304,"line":406},8,[302,408,409],{"class":327},"  }\n",[302,411,413],{"class":304,"line":412},9,[302,414,415],{"class":327},"}\n",[268,417,419],{"id":418},"compliant-solution","Compliant Solution",[39,421,422,423,425,426,428],{},"In this compliant solution, the results from the call to ",[43,424,280],{}," are checked for null before the ",[43,427,61],{}," object is constructed.",[289,430,432],{"quality":431},"good",[293,433,435],{"className":295,"code":434,"language":297,"meta":298,"style":298},"#include \u003Ccstdlib>\n#include \u003Cstring>\n \nvoid f() {\n  const char *tmpPtrVal = std::getenv(\"TMP\");\n  std::string tmp(tmpPtrVal ? tmpPtrVal : \"\");\n  if (!tmp.empty()) {\n    \u002F\u002F ...\n  }\n}\n",[43,436,437,443,449,454,462,493,518,532,536,540],{"__ignoreMap":298},[302,438,439,441],{"class":304,"line":305},[302,440,309],{"class":308},[302,442,313],{"class":312},[302,444,445,447],{"class":304,"line":316},[302,446,309],{"class":308},[302,448,321],{"class":312},[302,450,451],{"class":304,"line":324},[302,452,453],{"class":327}," \n",[302,455,456,458,460],{"class":304,"line":331},[302,457,335],{"class":334},[302,459,339],{"class":338},[302,461,342],{"class":327},[302,463,464,467,470,473,476,479,482,484,486,488,490],{"class":304,"line":345},[302,465,466],{"class":308},"  const",[302,468,469],{"class":334}," char",[302,471,472],{"class":308}," *",[302,474,475],{"class":327},"tmpPtrVal ",[302,477,478],{"class":308},"=",[302,480,481],{"class":348}," std",[302,483,364],{"class":327},[302,485,367],{"class":338},[302,487,358],{"class":327},[302,489,372],{"class":312},[302,491,492],{"class":327},");\n",[302,494,495,497,499,501,504,507,510,513,516],{"class":304,"line":378},[302,496,349],{"class":348},[302,498,352],{"class":327},[302,500,355],{"class":338},[302,502,503],{"class":327},"(tmpPtrVal ",[302,505,506],{"class":308},"?",[302,508,509],{"class":327}," tmpPtrVal ",[302,511,512],{"class":308},":",[302,514,515],{"class":312}," \"\"",[302,517,492],{"class":327},[302,519,520,522,524,526,528,530],{"class":304,"line":399},[302,521,381],{"class":308},[302,523,384],{"class":327},[302,525,387],{"class":308},[302,527,390],{"class":327},[302,529,393],{"class":338},[302,531,396],{"class":327},[302,533,534],{"class":304,"line":406},[302,535,403],{"class":402},[302,537,538],{"class":304,"line":412},[302,539,409],{"class":327},[302,541,543],{"class":304,"line":542},10,[302,544,415],{"class":327},[268,546,548],{"id":547},"risk-assessment","Risk Assessment",[39,550,551,552,554,555,559,560,62,564,568,569,573],{},"Dereferencing a null pointer is ",[85,553,93],{"href":92}," , typically ",[85,556,558],{"href":557},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-abnormaltermination","abnormal program termination"," . In some situations, however, dereferencing a null pointer can lead to the execution of arbitrary code [ ",[85,561,563],{"href":562},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Jack07","Jack 2007",[85,565,567],{"href":566},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-vanSprundel06","van Sprundel 2006"," ]. The indicated severity is for this more severe case; on platforms where it is not possible to ",[85,570,572],{"href":571},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","exploit"," a null pointer dereference to execute arbitrary code, the actual severity is low.",[575,576,577,578,577,608],"table",{},"\n  ",[579,580,581,582,577],"thead",{},"\n    ",[583,584,585,586,585,590,585,593,585,596,585,599,585,602,585,605,581],"tr",{},"\n      ",[587,588,589],"th",{},"Rule",[587,591,592],{},"Severity",[587,594,595],{},"Likelihood",[587,597,598],{},"Detectable",[587,600,601],{},"Repairable",[587,603,604],{},"Priority",[587,606,607],{},"Level",[609,610,581,611,577],"tbody",{},[583,612,585,613,585,617,585,620,585,623,585,626,585,629,585,636,581],{},[614,615,616],"td",{},"STR51-CPP",[614,618,619],{},"High",[614,621,622],{},"Likely",[614,624,625],{},"No",[614,627,628],{},"Yes",[614,630,632],{"style":631},"color: #e74c3c;",[633,634,635],"b",{},"P18",[614,637,638],{"style":631},[633,639,640],{},"L1",[642,643,645],"h3",{"id":644},"automated-detection","Automated Detection",[575,647,650],{"className":648},[649],"wrapped",[609,651,652,676,708,736,764,864,890,916],{},[583,653,656,661,666,671],{"className":654},[655],"header",[587,657,658],{},[39,659,660],{},"Tool",[587,662,663],{},[39,664,665],{},"Version",[587,667,668],{},[39,669,670],{},"Checker",[587,672,673],{},[39,674,675],{},"Description",[583,677,680,686,696,704],{"className":678},[679],"odd",[614,681,682],{},[85,683,685],{"href":684},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree","Astrée",[614,687,688],{},[689,690,693],"div",{"className":691},[692],"content-wrapper",[39,694,695],{},"25.10",[614,697,698],{},[236,699,700,701],{},"assert_failure",[702,703],"br",{},[614,705,706],{},[702,707],{},[583,709,712,718,724,731],{"className":710},[711],"even",[614,713,714],{},[85,715,717],{"href":716},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","CodeSonar",[614,719,720],{},[689,721,723],{"className":722},[692],"9.1p0",[614,725,726],{},[39,727,728],{},[236,729,730],{},"LANG.MEM.NPD",[614,732,733],{},[39,734,735],{},"Null Pointer Dereference",[583,737,739,745,753,760],{"className":738},[679],[614,740,741],{},[85,742,744],{"href":743},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[614,746,747],{},[689,748,750],{"className":749},[692],[39,751,752],{},"2025.2",[614,754,755],{},[39,756,757],{},[236,758,759],{},"DF4770, DF4771, DF4772, DF4773, DF4774",[614,761,762],{},[702,763],{},[583,765,767,773,778,860],{"className":766},[711],[614,768,769],{},[85,770,772],{"href":771},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork","Klocwork",[614,774,775],{},[689,776,752],{"className":777},[692],[614,779,780],{},[39,781,782,785,787,790,792,795,797,800,802,805,807,810,812,815,817,820,822,825,827,830,832,835,837,840,842,845,847,850,852,855,857],{},[236,783,784],{},"NPD.CHECK.CALL.MIGHT",[702,786],{},[236,788,789],{},"NPD.CHECK.CALL.MUST",[702,791],{},[236,793,794],{},"NPD.CHECK.MIGHT",[702,796],{},[236,798,799],{},"NPD.CHECK.MUST",[702,801],{},[236,803,804],{},"NPD.CONST.CALL",[702,806],{},[236,808,809],{},"NPD.CONST.DEREF",[702,811],{},[236,813,814],{},"NPD.FUNC.CALL.MIGHT",[702,816],{},[236,818,819],{},"NPD.FUNC.CALL.MUST",[702,821],{},[236,823,824],{},"NPD.FUNC.MIGHT",[702,826],{},[236,828,829],{},"NPD.FUNC.MUST",[702,831],{},[236,833,834],{},"NPD.GEN.CALL.MIGHT",[702,836],{},[236,838,839],{},"NPD.GEN.CALL.MUST",[702,841],{},[236,843,844],{},"NPD.GEN.MIGHT",[702,846],{},[236,848,849],{},"NPD.GEN.MUST",[702,851],{},[236,853,854],{},"RNPD.CALL",[702,856],{},[236,858,859],{},"RNPD.DEREF",[614,861,862],{},[702,863],{},[583,865,867,873,880,885],{"className":866},[679],[614,868,869],{},[85,870,872],{"href":871},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[614,874,875],{},[689,876,878],{"className":877},[692],[39,879,752],{},[614,881,882],{},[236,883,884],{},"CERT_CPP-STR51-a",[614,886,887],{},[39,888,889],{},"Avoid null pointer dereferencing",[583,891,893,899,907,913],{"className":892},[711],[614,894,895],{},[85,896,898],{"href":897},"\u002Fsei-cert-c-coding-standard\u002Fback-matter\u002Fee-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[614,900,901],{},[689,902,904],{"className":903},[692],[39,905,906],{},"R2025b",[614,908,909],{},[85,910,912],{"href":911},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcstr51cpp.html","CERT C++: STR51-CPP",[614,914,915],{},"Checks for string operations on null pointer (rule partially covered).",[583,917,919,925,933,938],{"className":918},[679],[614,920,921],{},[85,922,924],{"href":923},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[614,926,927],{},[689,928,930],{"className":929},[692],[39,931,932],{},"6.02",[614,934,935],{},[236,936,937],{},"shiftTooManyBits",[614,939,940],{},"Fully implemented",[642,942,944],{"id":943},"related-vulnerabilities","Related Vulnerabilities",[39,946,947,948,952,953,232],{},"Search for ",[85,949,951],{"href":950},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-vul","vulnerabilities"," resulting from the violation of this rule on the ",[85,954,958],{"href":955,"rel":956},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+STR36-CPP",[957],"nofollow","CERT website",[268,960,962],{"id":961},"related-guidelines","Related Guidelines",[575,964,965,973],{},[579,966,967],{},[583,968,969,971],{},[587,970],{},[587,972],{},[609,974,975],{},[583,976,977,982],{},[614,978,979],{},[85,980,981],{"href":17},"SEI CERT C Coding Standard",[614,983,984],{},[85,985,231],{"href":230},[268,987,989],{"id":988},"bibliography","Bibliography",[575,991,993],{"className":992},[649],[609,994,995,1009,1021,1032],{},[583,996,998,1006],{"className":997},[679],[614,999,1000,1001,1005],{},"[ ",[85,1002,1004],{"href":1003},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC9899-2011","ISO\u002FIEC 9899:2011"," ]",[614,1007,1008],{},"Subclause 7.20.3, \"Memory Management Functions\"",[583,1010,1012,1016],{"className":1011},[711],[614,1013,1000,1014,1005],{},[85,1015,88],{"href":87},[614,1017,1018],{},[39,1019,1020],{},"Subclause 21.2.1, \"Character Trait Requirements\"",[583,1022,1024,1028],{"className":1023},[679],[614,1025,1000,1026,1005],{},[85,1027,563],{"href":562},[614,1029,1030],{},[702,1031],{},[583,1033,1035,1039],{"className":1034},[711],[614,1036,1000,1037,1005],{},[85,1038,567],{"href":566},[614,1040,1041],{},[702,1042],{},[1044,1045],"hr",{},[39,1047,1048,1055,1056,1055,1062],{},[85,1049,1051],{"href":1050},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr50-cpp",[1052,1053],"img",{"src":1054},"\u002Fattachments\u002F88046682\u002F88480621.png"," ",[85,1057,1059],{"href":1058},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002F",[1052,1060],{"src":1061},"\u002Fattachments\u002F88046682\u002F88475556.png",[85,1063,1065],{"href":1064},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr52-cpp",[1052,1066],{"src":1067},"\u002Fattachments\u002F88046682\u002F88475555.png",[1069,1070,1071],"style",{},"html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sq6CD, html code.shiki .sq6CD{--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sz2Vg, html code.shiki .sz2Vg{--shiki-default:#6F42C1;--shiki-default-text-decoration:inherit;--shiki-dark:#B392F0;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":298,"searchDepth":316,"depth":316,"links":1073},[1074,1075,1076,1080,1081],{"id":270,"depth":316,"text":271},{"id":418,"depth":316,"text":419},{"id":547,"depth":316,"text":548,"children":1077},[1078,1079],{"id":644,"depth":324,"text":645},{"id":943,"depth":324,"text":944},{"id":961,"depth":316,"text":962},{"id":988,"depth":316,"text":989},"The std::basic_string type uses the traits design pattern to handle implementation details of the various string types, resulting in a series of string-like classes with a common, underlying implementation. Specifically, the std::basic_string class is paired with std::char_traits to create the std::string , std::wstring , std::u16string , and std::u32string classes. The std::char_traits class is explicitly specialized to provide policy-based implementation details to the std::basic_string type. One such implementation detail is the std::char_traits::length() function, which is frequently used to determine the number of characters in a null-terminated string. According to the C++ Standard, [char.traits.require], Table 62 [ ISO\u002FIEC 14882-2014 ] , passing a null pointer to this function is undefined behavior because it would result in dereferencing a null pointer.","md",{"tags":1085},[1086,1087,1088,1089,1090,1091,1092],"review","ptc","review-dms","rule","review-ajb","no-autodetect","str","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstring-from-a-null-pointer",{"title":30,"description":1082},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F5.string-from-a-null-pointer","D-oblJgsaXRLq8TfHspv8hOjmUU7dXnMK4ZpBguK4nI",[1098,1102],{"title":1099,"path":1100,"stem":1101,"children":-1},"STR53-CPP. Range check element access","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F4.str53-cpp",{"title":1103,"path":1104,"stem":1105,"children":-1},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[1107],{"title":1108,"path":1109,"stem":1110,"children":1111},"SEI CERT C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1112,1113,1180,1573,1786,1796],{"title":1108,"path":1109,"stem":1110},{"title":1114,"path":1115,"stem":1116,"children":1117},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1118,1119],{"title":1114,"path":1115,"stem":1116},{"title":1120,"path":1121,"stem":1122,"children":1123},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1124,1125,1129,1133,1137,1141,1145,1149,1153,1157,1161,1165,1169,1173,1177],{"title":1120,"path":1121,"stem":1122},{"title":1126,"path":1127,"stem":1128},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1130,"path":1131,"stem":1132},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1134,"path":1135,"stem":1136},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1138,"path":1139,"stem":1140},"How this Coding Standard Is Organized","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fhow-this-coding-standard-is-organized","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F05.how-this-coding-standard-is-organized",{"title":1142,"path":1143,"stem":1144},"Relation to the CERT C Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frelation-to-the-cert-c-coding-standard","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F06.relation-to-the-cert-c-coding-standard",{"title":1146,"path":1147,"stem":1148},"Rules Versus Recommendations","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frules-versus-recommendations","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F07.rules-versus-recommendations",{"title":1150,"path":1151,"stem":1152},"Tool Selection and Validation","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Ftool-selection-and-validation","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F08.tool-selection-and-validation",{"title":1154,"path":1155,"stem":1156},"Conformance Testing","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fconformance-testing","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F09.conformance-testing",{"title":1158,"path":1159,"stem":1160},"Development Process","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fdevelopment-process","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F10.development-process",{"title":1162,"path":1163,"stem":1164},"System Qualities","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fsystem-qualities","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F11.system-qualities",{"title":1166,"path":1167,"stem":1168},"Automatically Generated Code","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomatically-generated-code","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F12.automatically-generated-code",{"title":1170,"path":1171,"stem":1172},"Government Regulations","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fgovernment-regulations","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F13.government-regulations",{"title":1174,"path":1175,"stem":1176},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":645,"path":1178,"stem":1179},"\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomated-detection","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F15.automated-detection",{"title":1181,"path":1182,"stem":1183,"children":1184},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1185,1186,1200,1231,1273,1323,1381,1443,1457,1467,1505,1531],{"title":1181,"path":1182,"stem":1183},{"title":1187,"path":1188,"stem":1189,"children":1190},"Characters and Strings (STR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F1.index",[1191,1192,1195,1198,1199],{"title":1187,"path":1188,"stem":1189},{"title":1193,"path":1050,"stem":1194},"STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F2.str50-cpp",{"title":1196,"path":1064,"stem":1197},"STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F3.str52-cpp",{"title":1099,"path":1100,"stem":1101},{"title":30,"path":1093,"stem":1095},{"title":1103,"path":1104,"stem":1105,"children":1201},[1202,1203,1207,1211,1215,1219,1223,1227],{"title":1103,"path":1104,"stem":1105},{"title":1204,"path":1205,"stem":1206},"CON50-CPP. Do not destroy a mutex while it is locked","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F2.con50-cpp",{"title":1208,"path":1209,"stem":1210},"CON51-CPP. Ensure actively held locks are released on exceptional conditions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F3.con51-cpp",{"title":1212,"path":1213,"stem":1214},"CON52-CPP. Prevent data races when accessing bit-fields from multiple threads","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F4.con52-cpp",{"title":1216,"path":1217,"stem":1218},"CON53-CPP. Avoid deadlock by locking in a predefined order","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F5.con53-cpp",{"title":1220,"path":1221,"stem":1222},"CON54-CPP. Wrap functions that can spuriously wake up in a loop","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F6.con54-cpp",{"title":1224,"path":1225,"stem":1226},"CON55-CPP. Preserve thread safety and liveness when using condition variables","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F7.con55-cpp",{"title":1228,"path":1229,"stem":1230},"CON56-CPP. Do not speculatively lock a non-recursive mutex that is already owned by the calling thread","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F8.con56-cpp",{"title":1232,"path":1233,"stem":1234,"children":1235},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1236,1237,1241,1245,1249,1253,1257,1261,1265,1269],{"title":1232,"path":1233,"stem":1234},{"title":1238,"path":1239,"stem":1240},"CTR50-CPP. Guarantee that container indices and iterators are within the valid range","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F02.ctr50-cpp",{"title":1242,"path":1243,"stem":1244},"CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F03.ctr51-cpp",{"title":1246,"path":1247,"stem":1248},"CTR52-CPP. Guarantee that library functions do not overflow","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F04.ctr52-cpp",{"title":1250,"path":1251,"stem":1252},"CTR53-CPP. Use valid iterator ranges","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F05.ctr53-cpp",{"title":1254,"path":1255,"stem":1256},"CTR54-CPP. Do not subtract iterators that do not refer to the same container","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F06.ctr54-cpp",{"title":1258,"path":1259,"stem":1260},"CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F07.ctr55-cpp",{"title":1262,"path":1263,"stem":1264},"CTR56-CPP. Do not use pointer arithmetic on polymorphic objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F08.ctr56-cpp",{"title":1266,"path":1267,"stem":1268},"CTR57-CPP. Provide a valid ordering predicate","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F09.ctr57-cpp",{"title":1270,"path":1271,"stem":1272},"CTR58-CPP. Predicate function objects should not be mutable","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F10.ctr58-cpp",{"title":1274,"path":1275,"stem":1276,"children":1277},"Declarations and Initialization (DCL)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F01.index",[1278,1279,1283,1287,1291,1295,1299,1303,1307,1311,1315,1319],{"title":1274,"path":1275,"stem":1276},{"title":1280,"path":1281,"stem":1282},"DCL50-CPP. Do not define a C-style variadic function","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F02.dcl50-cpp",{"title":1284,"path":1285,"stem":1286},"DCL51-CPP. Do not declare or define a reserved identifier","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F03.dcl51-cpp",{"title":1288,"path":1289,"stem":1290},"DCL52-CPP. Never qualify a reference type with const or volatile","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F04.dcl52-cpp",{"title":1292,"path":1293,"stem":1294},"DCL53-CPP. Do not write syntactically ambiguous declarations","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F05.dcl53-cpp",{"title":1296,"path":1297,"stem":1298},"DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F06.dcl54-cpp",{"title":1300,"path":1301,"stem":1302},"DCL55-CPP. Avoid information leakage when passing a class object across a trust boundary","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F07.dcl55-cpp",{"title":1304,"path":1305,"stem":1306},"DCL56-CPP. Avoid cycles during initialization of static objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F08.dcl56-cpp",{"title":1308,"path":1309,"stem":1310},"DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F09.dcl57-cpp",{"title":1312,"path":1313,"stem":1314},"DCL58-CPP. Do not modify the standard namespaces","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F10.dcl58-cpp",{"title":1316,"path":1317,"stem":1318},"DCL59-CPP. Do not define an unnamed namespace in a header file","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F11.dcl59-cpp",{"title":1320,"path":1321,"stem":1322},"DCL60-CPP. Obey the one-definition rule","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F12.dcl60-cpp",{"title":1324,"path":1325,"stem":1326,"children":1327},"Exceptions and Error Handling (ERR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F01.index",[1328,1329,1333,1337,1341,1345,1349,1353,1357,1361,1365,1369,1373,1377],{"title":1324,"path":1325,"stem":1326},{"title":1330,"path":1331,"stem":1332},"ERR50-CPP. Do not abruptly terminate the program","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F02.err50-cpp",{"title":1334,"path":1335,"stem":1336},"ERR51-CPP. Handle all exceptions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F03.err51-cpp",{"title":1338,"path":1339,"stem":1340},"ERR52-CPP. Do not use setjmp() or longjmp()","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F04.err52-cpp",{"title":1342,"path":1343,"stem":1344},"ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F05.err53-cpp",{"title":1346,"path":1347,"stem":1348},"ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F06.err54-cpp",{"title":1350,"path":1351,"stem":1352},"ERR55-CPP. Honor exception specifications","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F07.err55-cpp",{"title":1354,"path":1355,"stem":1356},"ERR56-CPP. Guarantee exception safety","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F08.err56-cpp",{"title":1358,"path":1359,"stem":1360},"ERR57-CPP. Do not leak resources when handling exceptions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F09.err57-cpp",{"title":1362,"path":1363,"stem":1364},"ERR58-CPP. Handle all exceptions thrown before main() begins executing","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F10.err58-cpp",{"title":1366,"path":1367,"stem":1368},"ERR59-CPP. Do not throw an exception across execution boundaries","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F11.err59-cpp",{"title":1370,"path":1371,"stem":1372},"ERR60-CPP. Exception objects must be nothrow copy constructible","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F12.err60-cpp",{"title":1374,"path":1375,"stem":1376},"ERR61-CPP. Catch exceptions by lvalue reference","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr61-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F13.err61-cpp",{"title":1378,"path":1379,"stem":1380},"ERR62-CPP. Detect errors when converting a string to a number","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr62-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F14.err62-cpp",{"title":1382,"path":1383,"stem":1384,"children":1385},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1386,1387,1391,1395,1399,1403,1407,1411,1415,1419,1423,1427,1431,1435,1439],{"title":1382,"path":1383,"stem":1384},{"title":1388,"path":1389,"stem":1390},"EXP50-CPP. Do not depend on the order of evaluation for side effects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F02.exp50-cpp",{"title":1392,"path":1393,"stem":1394},"EXP51-CPP. Do not delete an array through a pointer of the incorrect type","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F03.exp51-cpp",{"title":1396,"path":1397,"stem":1398},"EXP52-CPP. Do not rely on side effects in unevaluated operands","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F04.exp52-cpp",{"title":1400,"path":1401,"stem":1402},"EXP53-CPP. Do not read uninitialized memory","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F05.exp53-cpp",{"title":1404,"path":1405,"stem":1406},"EXP54-CPP. Do not access an object outside of its lifetime","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F06.exp54-cpp",{"title":1408,"path":1409,"stem":1410},"EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F07.exp55-cpp",{"title":1412,"path":1413,"stem":1414},"EXP56-CPP. Do not call a function with a mismatched language linkage","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F08.exp56-cpp",{"title":1416,"path":1417,"stem":1418},"EXP57-CPP. Do not cast or delete pointers to incomplete classes","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F09.exp57-cpp",{"title":1420,"path":1421,"stem":1422},"EXP58-CPP. Pass an object of the correct type to va_start","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F10.exp58-cpp",{"title":1424,"path":1425,"stem":1426},"EXP59-CPP. Use offsetof() on valid types and members","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F11.exp59-cpp",{"title":1428,"path":1429,"stem":1430},"EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F12.exp60-cpp",{"title":1432,"path":1433,"stem":1434},"EXP61-CPP. A lambda object must not outlive any of its reference captured objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp61-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F13.exp61-cpp",{"title":1436,"path":1437,"stem":1438},"EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp62-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F14.exp62-cpp",{"title":1440,"path":1441,"stem":1442},"EXP63-CPP. Do not rely on the value of a moved-from object","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp63-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F15.exp63-cpp",{"title":1444,"path":1445,"stem":1446,"children":1447},"Input Output (FIO)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F1.index",[1448,1449,1453],{"title":1444,"path":1445,"stem":1446},{"title":1450,"path":1451,"stem":1452},"FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F2.fio50-cpp",{"title":1454,"path":1455,"stem":1456},"FIO51-CPP. Close files when they are no longer needed","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F3.fio51-cpp",{"title":1458,"path":1459,"stem":1460,"children":1461},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[1462,1463],{"title":1458,"path":1459,"stem":1460},{"title":1464,"path":1465,"stem":1466},"INT50-CPP. Do not cast to an out-of-range enumeration value","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int\u002Fint50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F2.int50-cpp",{"title":1468,"path":1469,"stem":1470,"children":1471},"Memory Management (MEM)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F1.index",[1472,1473,1477,1481,1485,1489,1493,1497,1501],{"title":1468,"path":1469,"stem":1470},{"title":1474,"path":1475,"stem":1476},"MEM50-CPP. Do not access freed memory","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F2.mem50-cpp",{"title":1478,"path":1479,"stem":1480},"MEM51-CPP. Properly deallocate dynamically allocated resources","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F3.mem51-cpp",{"title":1482,"path":1483,"stem":1484},"MEM52-CPP. Detect and handle memory allocation errors","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F4.mem52-cpp",{"title":1486,"path":1487,"stem":1488},"MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F5.mem53-cpp",{"title":1490,"path":1491,"stem":1492},"MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F6.mem54-cpp",{"title":1494,"path":1495,"stem":1496},"MEM55-CPP. Honor replacement dynamic storage management requirements","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F7.mem55-cpp",{"title":1498,"path":1499,"stem":1500},"MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F8.mem56-cpp",{"title":1502,"path":1503,"stem":1504},"MEM57-CPP. Avoid using default operator new for over-aligned types","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F9.mem57-cpp",{"title":1506,"path":1507,"stem":1508,"children":1509},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[1510,1511,1515,1519,1523,1527],{"title":1506,"path":1507,"stem":1508},{"title":1512,"path":1513,"stem":1514},"MSC51-CPP. Ensure your random number generator is properly seeded","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F2.msc51-cpp",{"title":1516,"path":1517,"stem":1518},"MSC52-CPP. Value-returning functions must return a value from all exit paths","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F3.msc52-cpp",{"title":1520,"path":1521,"stem":1522},"MSC53-CPP. Do not return from a function declared [[noreturn]]","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F4.msc53-cpp",{"title":1524,"path":1525,"stem":1526},"MSC54-CPP. A signal handler must be a plain old function","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F5.msc54-cpp",{"title":1528,"path":1529,"stem":1530},"rand() for generating pseudorandom numbers","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Frand-for-generating-pseudorandom-numbers","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F6.rand-for-generating-pseudorandom-numbers",{"title":1532,"path":1533,"stem":1534,"children":1535},"Object Oriented Programming (OOP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F01.index",[1536,1537,1541,1545,1549,1553,1557,1561,1565,1569],{"title":1532,"path":1533,"stem":1534},{"title":1538,"path":1539,"stem":1540},"OOP50-CPP. Do not invoke virtual functions from constructors or destructors","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F02.oop50-cpp",{"title":1542,"path":1543,"stem":1544},"OOP51-CPP. Do not slice derived objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F03.oop51-cpp",{"title":1546,"path":1547,"stem":1548},"OOP52-CPP. Do not delete a polymorphic object without a virtual destructor","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F04.oop52-cpp",{"title":1550,"path":1551,"stem":1552},"OOP53-CPP. Write constructor member initializers in the canonical order","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F05.oop53-cpp",{"title":1554,"path":1555,"stem":1556},"OOP54-CPP. Gracefully handle self-copy assignment","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F06.oop54-cpp",{"title":1558,"path":1559,"stem":1560},"OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F07.oop55-cpp",{"title":1562,"path":1563,"stem":1564},"OOP56-CPP. Honor replacement handler requirements","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F08.oop56-cpp",{"title":1566,"path":1567,"stem":1568},"OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F09.oop57-cpp",{"title":1570,"path":1571,"stem":1572},"OOP58-CPP. Copy operations must not mutate the source object","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F10.oop58-cpp",{"title":1574,"path":1575,"stem":1576,"children":1577},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[1578,1579,1583,1586,1768,1782],{"title":1574,"path":1575,"stem":1576},{"title":1580,"path":1581,"stem":1582},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":1584,"path":571,"stem":1585},"BB. Definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":1587,"path":1588,"stem":1589,"children":1590},"CC. Analyzers","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F01.index",[1591,1592,1594,1598,1602,1606,1610,1614,1618,1622,1626,1630,1634,1636,1640,1644,1648,1652,1656,1660,1664,1668,1672,1674,1678,1680,1684,1688,1692,1695,1699,1702,1706,1710,1714,1718,1722,1726,1730,1734,1738,1740,1744,1748,1752,1756,1760,1764],{"title":1587,"path":1588,"stem":1589},{"title":685,"path":684,"stem":1593},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F02.astree",{"title":1595,"path":1596,"stem":1597},"Astrée_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F03.astree_v",{"title":1599,"path":1600,"stem":1601},"Axivion Bauhaus Suite","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F04.axivion-bauhaus-suite",{"title":1603,"path":1604,"stem":1605},"Axivion Bauhaus Suite_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F05.axivion-bauhaus-suite_v",{"title":1607,"path":1608,"stem":1609},"Clang","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F06.clang",{"title":1611,"path":1612,"stem":1613},"Clang_38_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_38_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F07.clang_38_v",{"title":1615,"path":1616,"stem":1617},"Clang_39_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_39_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F08.clang_39_v",{"title":1619,"path":1620,"stem":1621},"Clang_40_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_40_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F09.clang_40_v",{"title":1623,"path":1624,"stem":1625},"Clang_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F10.clang_v",{"title":1627,"path":1628,"stem":1629},"Codee","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodee","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F11.codee",{"title":1631,"path":1632,"stem":1633},"Codee_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodee_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F12.codee_v",{"title":717,"path":716,"stem":1635},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":1637,"path":1638,"stem":1639},"CodeSonar_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F14.codesonar_v",{"title":1641,"path":1642,"stem":1643},"Coverity","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcoverity","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F15.coverity",{"title":1645,"path":1646,"stem":1647},"Coverity_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcoverity_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F16.coverity_v",{"title":1649,"path":1650,"stem":1651},"ECLAIR","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Feclair","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F17.eclair",{"title":1653,"path":1654,"stem":1655},"ECLAIR_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Feclair_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F18.eclair_v",{"title":1657,"path":1658,"stem":1659},"EDG","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fedg","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F19.edg",{"title":1661,"path":1662,"stem":1663},"Edg_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fedg_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F20.edg_v",{"title":1665,"path":1666,"stem":1667},"GCC","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fgcc","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F21.gcc",{"title":1669,"path":1670,"stem":1671},"Gcc_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fgcc_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F22.gcc_v",{"title":744,"path":743,"stem":1673},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":1675,"path":1676,"stem":1677},"Helix QAC_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F24.helix-qac_v",{"title":772,"path":771,"stem":1679},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F25.klocwork",{"title":1681,"path":1682,"stem":1683},"Klocwork_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F26.klocwork_v",{"title":1685,"path":1686,"stem":1687},"LDRA","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":1689,"path":1690,"stem":1691},"Ldra_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F28.ldra_v",{"title":1693,"path":871,"stem":1694},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":1696,"path":1697,"stem":1698},"Parasoft_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F30.parasoft_v",{"title":898,"path":1700,"stem":1701},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":1703,"path":1704,"stem":1705},"Polyspace Bug Finder_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F32.polyspace-bug-finder_v",{"title":1707,"path":1708,"stem":1709},"PRQA QA-C++","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fprqa-qa-cpp","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F33.prqa-qa-cpp",{"title":1711,"path":1712,"stem":1713},"PRQA QA-C++_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fprqa-qa-cpp_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F34.prqa-qa-cpp_v",{"title":1715,"path":1716,"stem":1717},"PVS-Studio","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F35.pvs-studio",{"title":1719,"path":1720,"stem":1721},"PVS-Studio_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F36.pvs-studio_v",{"title":1723,"path":1724,"stem":1725},"Rose","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F37.rose",{"title":1727,"path":1728,"stem":1729},"Rose_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F38.rose_v",{"title":1731,"path":1732,"stem":1733},"RuleChecker","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F39.rulechecker",{"title":1735,"path":1736,"stem":1737},"RuleChecker_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F40.rulechecker_v",{"title":924,"path":923,"stem":1739},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F41.security-reviewer-static-reviewer",{"title":1741,"path":1742,"stem":1743},"Security Reviewer - Static Reviewer_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F42.security-reviewer-static-reviewer_v",{"title":1745,"path":1746,"stem":1747},"Semgrep","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsemgrep","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F43.semgrep",{"title":1749,"path":1750,"stem":1751},"Semgrep_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsemgrep_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F44.semgrep_v",{"title":1753,"path":1754,"stem":1755},"SonarQube C\u002FC++ Plugin","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F45.sonarqube-ccpp-plugin",{"title":1757,"path":1758,"stem":1759},"SonarQube C\u002FC++ Plugin_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F46.sonarqube-ccpp-plugin_v",{"title":1761,"path":1762,"stem":1763},"Splint","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsplint","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F47.splint",{"title":1765,"path":1766,"stem":1767},"Splint_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsplint_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F48.splint_v",{"title":1769,"path":1770,"stem":1771,"children":1772},"DD. Related Guidelines","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F1.index",[1773,1774,1778],{"title":1769,"path":1770,"stem":1771},{"title":1775,"path":1776,"stem":1777},"2008","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines\u002F2.2008","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F2.2008",{"title":1779,"path":1780,"stem":1781},"MITRE CWE","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines\u002Fmitre-cwe","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F3.mitre-cwe",{"title":1783,"path":1784,"stem":1785},"EE. Risk Assessments","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fee-risk-assessments","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F6.ee-risk-assessments",{"title":1787,"path":1788,"stem":1789,"children":1790},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[1791,1792],{"title":1787,"path":1788,"stem":1789},{"title":1793,"path":1794,"stem":1795},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":1797,"path":1798,"stem":1799},"Errata for SEI CERT C++ Coding Standard (2016 Edition)","\u002Fsei-cert-cpp-coding-standard\u002Ferrata-for-sei-cert-cpp-coding-standard-2016-edition","5.sei-cert-cpp-coding-standard\u002F6.errata-for-sei-cert-cpp-coding-standard-2016-edition",1775657784231]