[{"data":1,"prerenderedAt":1707},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Frand-for-generating-pseudorandom-numbers":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Frand-for-generating-pseudorandom-numbers":1015,"sidebar-sei-cert-cpp-coding-standard":1024},[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":41,"extension":1000,"meta":1001,"navigation":7,"path":1011,"seo":1012,"stem":1013,"__hash__":1014},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F6.rand-for-generating-pseudorandom-numbers.md","rand() for generating pseudorandom numbers",{"type":32,"value":33,"toc":991},"minimark",[34,38,42,61,66,76,216,220,231,372,380,384,390,457,461,837,841,854,858,925,929,965,968,987],[35,36,30],"h1",{"id":37},"rand-for-generating-pseudorandom-numbers",[39,40,41],"p",{},"Pseudorandom number generators use mathematical algorithms to produce a sequence of numbers with good statistical properties, but the numbers produced are not genuinely random.",[39,43,44,45,49,50,53,54,57,58,60],{},"The C Standard ",[46,47,48],"code",{},"rand()"," function, exposed through the C++ standard library through ",[46,51,52],{},"\u003Ccstdlib>"," as ",[46,55,56],{},"std::rand()"," , makes no guarantees as to the quality of the random sequence produced. The numbers generated by some implementations of ",[46,59,56],{}," have a comparatively short cycle, and the numbers can be predictable. Applications that have strong pseudorandom number requirements must use a generator that is known to be sufficient for their needs.",[62,63,65],"h2",{"id":64},"noncompliant-code-example","Noncompliant Code Example",[39,67,68,69,71,72,75],{},"The following noncompliant code generates an ID with a numeric part produced by calling the ",[46,70,48],{}," function. The IDs produced are predictable and have limited randomness. Further, depending on the value of ",[46,73,74],{},"RAND_MAX"," , the resulting value can have modulo bias.",[77,78,80],"code-block",{"quality":79},"bad",[81,82,87],"pre",{"className":83,"code":84,"language":85,"meta":86,"style":86},"language-cpp shiki shiki-themes github-light github-dark monokai","#include \u003Ccstdlib>\n#include \u003Cstring>\n \nvoid f() {\n  std::string id(\"ID\"); \u002F\u002F Holds the ID, starting with the characters \"ID\" followed\n                        \u002F\u002F by a random integer in the range [0-10000].\n  id += std::to_string(std::rand() % 10000);\n  \u002F\u002F ...\n}\n","cpp","",[46,88,89,102,110,117,131,157,163,204,210],{"__ignoreMap":86},[90,91,94,98],"span",{"class":92,"line":93},"line",1,[90,95,97],{"class":96},"sC2Qs","#include",[90,99,101],{"class":100},"sstjo"," \u003Ccstdlib>\n",[90,103,105,107],{"class":92,"line":104},2,[90,106,97],{"class":96},[90,108,109],{"class":100}," \u003Cstring>\n",[90,111,113],{"class":92,"line":112},3,[90,114,116],{"class":115},"sMOD_"," \n",[90,118,120,124,128],{"class":92,"line":119},4,[90,121,123],{"class":122},"sq6CD","void",[90,125,127],{"class":126},"srTi1"," f",[90,129,130],{"class":115},"() {\n",[90,132,134,138,141,144,147,150,153],{"class":92,"line":133},5,[90,135,137],{"class":136},"sz2Vg","  std",[90,139,140],{"class":115},"::string ",[90,142,143],{"class":126},"id",[90,145,146],{"class":115},"(",[90,148,149],{"class":100},"\"ID\"",[90,151,152],{"class":115},");",[90,154,156],{"class":155},"s8-w5"," \u002F\u002F Holds the ID, starting with the characters \"ID\" followed\n",[90,158,160],{"class":92,"line":159},6,[90,161,162],{"class":155},"                        \u002F\u002F by a random integer in the range [0-10000].\n",[90,164,166,169,172,175,178,181,183,186,188,191,194,197,201],{"class":92,"line":165},7,[90,167,168],{"class":115},"  id ",[90,170,171],{"class":96},"+=",[90,173,174],{"class":136}," std",[90,176,177],{"class":115},"::",[90,179,180],{"class":126},"to_string",[90,182,146],{"class":115},[90,184,185],{"class":136},"std",[90,187,177],{"class":115},[90,189,190],{"class":126},"rand",[90,192,193],{"class":115},"() ",[90,195,196],{"class":96},"%",[90,198,200],{"class":199},"s7F3e"," 10000",[90,202,203],{"class":115},");\n",[90,205,207],{"class":92,"line":206},8,[90,208,209],{"class":155},"  \u002F\u002F ...\n",[90,211,213],{"class":92,"line":212},9,[90,214,215],{"class":115},"}\n",[62,217,219],{"id":218},"compliant-solution","Compliant Solution",[39,221,222,223,230],{},"The C++ standard library provides mechanisms for fine-grained control over pseudorandom number generation. It breaks random number generation into two parts: one is the algorithm responsible for providing random values (the engine), and the other is responsible for distribution of the random values via a density function (the distribution). The distribution object is not strictly required, but it works to ensure that values are properly distributed within a given range instead of improperly distributed due to bias issues. This compliant solution uses the ",[224,225,229],"a",{"href":226,"rel":227},"http:\u002F\u002Fdl.acm.org\u002Fcitation.cfm?doid=272991.272995",[228],"nofollow","Mersenne Twister"," algorithm as the engine for generating random values and a uniform distribution to negate the modulo bias from the noncompliant code example.",[77,232,234],{"quality":233},"good",[81,235,237],{"className":83,"code":236,"language":85,"meta":86,"style":86},"#include \u003Crandom>\n#include \u003Cstring>\n \nvoid f() {\n  std::string id(\"ID\"); \u002F\u002F Holds the ID, starting with the characters \"ID\" followed\n                        \u002F\u002F by a random integer in the range [0-10000].\n  std::uniform_int_distribution\u003Cint> distribution(0, 10000);\n  std::random_device rd;\n  std::mt19937 engine(rd());\n  id += std::to_string(distribution(engine));\n  \u002F\u002F ...\n}\n",[46,238,239,246,252,256,264,280,284,316,323,341,362,367],{"__ignoreMap":86},[90,240,241,243],{"class":92,"line":93},[90,242,97],{"class":96},[90,244,245],{"class":100}," \u003Crandom>\n",[90,247,248,250],{"class":92,"line":104},[90,249,97],{"class":96},[90,251,109],{"class":100},[90,253,254],{"class":92,"line":112},[90,255,116],{"class":115},[90,257,258,260,262],{"class":92,"line":119},[90,259,123],{"class":122},[90,261,127],{"class":126},[90,263,130],{"class":115},[90,265,266,268,270,272,274,276,278],{"class":92,"line":133},[90,267,137],{"class":136},[90,269,140],{"class":115},[90,271,143],{"class":126},[90,273,146],{"class":115},[90,275,149],{"class":100},[90,277,152],{"class":115},[90,279,156],{"class":155},[90,281,282],{"class":92,"line":159},[90,283,162],{"class":155},[90,285,286,288,291,294,297,300,303,305,308,311,314],{"class":92,"line":165},[90,287,137],{"class":136},[90,289,290],{"class":115},"::uniform_int_distribution",[90,292,293],{"class":96},"\u003C",[90,295,296],{"class":122},"int",[90,298,299],{"class":96},">",[90,301,302],{"class":126}," distribution",[90,304,146],{"class":115},[90,306,307],{"class":199},"0",[90,309,310],{"class":115},", ",[90,312,313],{"class":199},"10000",[90,315,203],{"class":115},[90,317,318,320],{"class":92,"line":206},[90,319,137],{"class":136},[90,321,322],{"class":115},"::random_device rd;\n",[90,324,325,327,330,333,335,338],{"class":92,"line":212},[90,326,137],{"class":136},[90,328,329],{"class":115},"::mt19937 ",[90,331,332],{"class":126},"engine",[90,334,146],{"class":115},[90,336,337],{"class":126},"rd",[90,339,340],{"class":115},"());\n",[90,342,344,346,348,350,352,354,356,359],{"class":92,"line":343},10,[90,345,168],{"class":115},[90,347,171],{"class":96},[90,349,174],{"class":136},[90,351,177],{"class":115},[90,353,180],{"class":126},[90,355,146],{"class":115},[90,357,358],{"class":126},"distribution",[90,360,361],{"class":115},"(engine));\n",[90,363,365],{"class":92,"line":364},11,[90,366,209],{"class":155},[90,368,370],{"class":92,"line":369},12,[90,371,215],{"class":115},[39,373,374,375,379],{},"This compliant solution also seeds the random number engine, in conformance with ",[224,376,378],{"href":377},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc51-cpp","MSC51-CPP. Ensure your random number generator is properly seeded"," .",[62,381,383],{"id":382},"risk-assessment","Risk Assessment",[39,385,386,387,389],{},"Using the ",[46,388,56],{}," function could lead to predictable random numbers.",[391,392,393,394,393,424],"table",{},"\n  ",[395,396,397,398,393],"thead",{},"\n    ",[399,400,401,402,401,406,401,409,401,412,401,415,401,418,401,421,397],"tr",{},"\n      ",[403,404,405],"th",{},"Rule",[403,407,408],{},"Severity",[403,410,411],{},"Likelihood",[403,413,414],{},"Detectable",[403,416,417],{},"Repairable",[403,419,420],{},"Priority",[403,422,423],{},"Level",[425,426,397,427,393],"tbody",{},[399,428,401,429,401,433,401,436,401,439,401,442,401,445,401,452,397],{},[430,431,432],"td",{},"MSC50-CPP",[430,434,435],{},"Medium",[430,437,438],{},"Unlikely",[430,440,441],{},"Yes",[430,443,444],{},"No",[430,446,448],{"style":447},"color: #27ae60;",[449,450,451],"b",{},"P4",[430,453,454],{"style":447},[449,455,456],{},"L3",[62,458,460],{"id":459},"automated-detection","Automated Detection",[391,462,465],{"className":463},[464],"wrapped",[425,466,467,491,523,550,576,602,629,658,684,707,739,765,791,813],{},[399,468,471,476,481,486],{"className":469},[470],"header",[403,472,473],{},[39,474,475],{},"Tool",[403,477,478],{},[39,479,480],{},"Version",[403,482,483],{},[39,484,485],{},"Checker",[403,487,488],{},[39,489,490],{},"Description",[399,492,495,501,511,520],{"className":493},[494],"odd",[430,496,497],{},[224,498,500],{"href":499},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree","Astrée",[430,502,503],{},[504,505,508],"div",{"className":506},[507],"content-wrapper",[39,509,510],{},"25.10",[430,512,513],{},[514,515,516,517],"strong",{},"bad-function (AUTOSAR.26.5.1A)",[518,519],"br",{},[430,521,522],{},"Fully checked",[399,524,527,533,541,546],{"className":525},[526],"even",[430,528,529],{},[224,530,532],{"href":531},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite","Axivion Bauhaus Suite",[430,534,535],{},[504,536,538],{"className":537},[507],[39,539,540],{},"7.2.0",[430,542,543],{},[514,544,545],{},"CertC++-MSC50",[430,547,548],{},[518,549],{},[399,551,553,559,565,570],{"className":552},[494],[430,554,555],{},[224,556,558],{"href":557},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang","Clang",[430,560,561],{},[504,562,564],{"className":563},[507],"4.0 (prerelease)",[430,566,567],{},[46,568,569],{},"      cert-msc50-cpp     ",[430,571,572,573],{},"Checked by ",[46,574,575],{},"      clang-tidy     ",[399,577,579,585,591,596],{"className":578},[526],[430,580,581],{},[224,582,584],{"href":583},"\u002Fsei-cert-c-coding-standard\u002Fback-matter\u002Fee-analyzers\u002Fcodesonar","CodeSonar",[430,586,587],{},[504,588,590],{"className":589},[507],"9.1p0",[430,592,593],{},[514,594,595],{},"BADFUNC.RANDOM.RAND",[430,597,598,599],{},"Use of ",[46,600,601],{},"      rand     ",[399,603,605,611,617,623],{"className":604},[494],[430,606,607],{},[224,608,610],{"href":609},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose","Compass\u002FROSE",[430,612,613],{},[39,614,615],{},[518,616],{},[430,618,619],{},[39,620,621],{},[518,622],{},[430,624,625],{},[39,626,627],{},[518,628],{},[399,630,632,640,646,653],{"className":631},[526],[430,633,634],{},[39,635,636],{},[224,637,639],{"href":638},"\u002Fsei-cert-c-coding-standard\u002Fback-matter\u002Fee-analyzers\u002Feclair","ECLAIR",[430,641,642],{},[504,643,645],{"className":644},[507],"1.2",[430,647,648],{},[39,649,650],{},[514,651,652],{},"CC2.MSC30",[430,654,655],{},[39,656,657],{},"Fully implemented",[399,659,661,667,675,680],{"className":660},[494],[430,662,663],{},[224,664,666],{"href":665},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[430,668,669],{},[504,670,672],{"className":671},[507],[39,673,674],{},"2025.2",[430,676,677],{},[514,678,679],{},"C++5028",[430,681,682],{},[518,683],{},[399,685,687,693,698,703],{"className":686},[526],[430,688,689],{},[224,690,692],{"href":691},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork","Klocwork",[430,694,695],{},[504,696,674],{"className":697},[507],[430,699,700],{},[514,701,702],{},"CERT.MSC.STD_RAND_CALL",[430,704,705],{},[518,706],{},[399,708,710,716,722,734],{"className":709},[494],[430,711,712],{},[224,713,715],{"href":714},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","LDRA tool suite",[430,717,718],{},[504,719,721],{"className":720},[507],"9.7.1",[430,723,724],{},[39,725,726,729,730],{},[514,727,728],{},"44 S"," ",[514,731,732],{},[518,733],{},[430,735,736],{},[39,737,738],{},"Enhanced Enforcement",[399,740,742,748,753,760],{"className":741},[526],[430,743,744],{},[224,745,747],{"href":746},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[430,749,750],{},[504,751,674],{"className":752},[507],[430,754,755],{},[514,756,757,758],{},"CERT_CPP-MSC50-a",[518,759],{},[430,761,762],{},[39,763,764],{},"Do not use the rand() function for generating pseudorandom numbers",[399,766,768,774,782,788],{"className":767},[494],[430,769,770],{},[224,771,773],{"href":772},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[430,775,776],{},[504,777,779],{"className":778},[507],[39,780,781],{},"R2025b",[430,783,784],{},[224,785,787],{"href":786},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcmsc50cpp.html","CERT C++: MSC50-CPP",[430,789,790],{},"Checks for use of vulnerable pseudo-random number generator (rule partially covered)",[399,792,794,800,805,811],{"className":793},[526],[430,795,796],{},[224,797,799],{"href":798},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker","RuleChecker",[430,801,802],{},[504,803,510],{"className":804},[507],[430,806,807],{},[514,808,516,809],{},[518,810],{},[430,812,522],{},[399,814,816,822,830,835],{"className":815},[494],[430,817,818],{},[224,819,821],{"href":820},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[430,823,824],{},[504,825,827],{"className":826},[507],[39,828,829],{},"6.02",[430,831,832],{},[514,833,834],{},"RTOS_07",[430,836,657],{},[62,838,840],{"id":839},"related-vulnerabilities","Related Vulnerabilities",[39,842,843,844,848,849,379],{},"Search for ",[224,845,847],{"href":846},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","vulnerabilities"," resulting from the violation of this rule on the ",[224,850,853],{"href":851,"rel":852},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+MSC50-CPP",[228],"CERT website",[62,855,857],{"id":856},"related-guidelines","Related Guidelines",[391,859,861],{"className":860},[464],[425,862,863,875,889,903],{},[399,864,866,871],{"className":865},[494],[430,867,868],{},[224,869,870],{"href":20},"SEI CERT C++ Coding Standard",[430,872,873],{},[224,874,378],{"href":377},[399,876,878,883],{"className":877},[526],[430,879,880],{},[224,881,882],{"href":17},"SEI CERT C Coding Standard",[430,884,885],{},[224,886,888],{"href":887},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc30-c","MSC30-C. Do not use the rand() function for generating pseudorandom numbers",[399,890,892,897],{"className":891},[494],[430,893,894],{},[224,895,896],{"href":23},"CERT Oracle Secure Coding Standard for Java",[430,898,899],{},[224,900,902],{"href":901},"\u002Fsei-cert-oracle-coding-standard-for-java\u002Frules\u002Fmiscellaneous-msc\u002Fmsc02-j","MSC02-J. Generate strong random numbers",[399,904,906,912],{"className":905},[526],[430,907,908],{},[224,909,911],{"href":910},"http:\u002F\u002Fcwe.mitre.org\u002F","MITRE CWE",[430,913,914,918,919,921,924],{},[224,915,917],{"href":916},"http:\u002F\u002Fcwe.mitre.org\u002Fdata\u002Fdefinitions\u002F327.html","CWE-327"," , Use of a Broken or Risky Cryptographic Algorithm",[518,920],{},[224,922,923],{"href":910},"CWE-330"," , Use of Insufficiently Random Values",[62,926,928],{"id":927},"bibliography","Bibliography",[391,930,931,939],{},[395,932,933],{},[399,934,935,937],{},[403,936],{},[403,938],{},[425,940,941,954],{},[399,942,943,951],{},[430,944,945,946,950],{},"[ ",[224,947,949],{"href":948},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO-IEC9899-2011","ISO\u002FIEC 9899:2011"," ]",[430,952,953],{},"Subclause 7.22.2, \"Pseudo-random Sequence Generation Functions\"",[399,955,956,962],{},[430,957,945,958,950],{},[224,959,961],{"href":960},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014",[430,963,964],{},"Subclause 26.5, \"Random Number Generation\"",[966,967],"hr",{},[39,969,970,729,977,729,982],{},[224,971,973],{"href":972},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002F",[974,975],"img",{"src":976},"\u002Fattachments\u002F88046682\u002F88480621.png",[224,978,979],{"href":972},[974,980],{"src":981},"\u002Fattachments\u002F88046682\u002F88475556.png",[224,983,984],{"href":377},[974,985],{"src":986},"\u002Fattachments\u002F88046682\u002F88475555.png",[988,989,990],"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 pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}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":86,"searchDepth":104,"depth":104,"links":992},[993,994,995,996,997,998,999],{"id":64,"depth":104,"text":65},{"id":218,"depth":104,"text":219},{"id":382,"depth":104,"text":383},{"id":459,"depth":104,"text":460},{"id":839,"depth":104,"text":840},{"id":856,"depth":104,"text":857},{"id":927,"depth":104,"text":928},"md",{"tags":1002},[1003,1004,1005,1006,1007,1008,1009,1010],"review","ptc","review-dms","cwe-327","rule","msc","cwe-330","review-ajb","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Frand-for-generating-pseudorandom-numbers",{"title":30,"description":41},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F6.rand-for-generating-pseudorandom-numbers","3FYjUahWJNP-ikOIK15MXa65VCExnGUWxi02qsDaBKQ",[1016,1020],{"title":1017,"path":1018,"stem":1019,"children":-1},"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":1021,"path":1022,"stem":1023,"children":-1},"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",[1025],{"title":870,"path":1026,"stem":1027,"children":1028},"\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1029,1030,1097,1490,1693,1703],{"title":870,"path":1026,"stem":1027},{"title":1031,"path":1032,"stem":1033,"children":1034},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1035,1036],{"title":1031,"path":1032,"stem":1033},{"title":1037,"path":1038,"stem":1039,"children":1040},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1041,1042,1046,1050,1054,1058,1062,1066,1070,1074,1078,1082,1086,1090,1094],{"title":1037,"path":1038,"stem":1039},{"title":1043,"path":1044,"stem":1045},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1047,"path":1048,"stem":1049},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1051,"path":1052,"stem":1053},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1055,"path":1056,"stem":1057},"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":1059,"path":1060,"stem":1061},"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":1063,"path":1064,"stem":1065},"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":1067,"path":1068,"stem":1069},"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":1071,"path":1072,"stem":1073},"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":1075,"path":1076,"stem":1077},"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":1079,"path":1080,"stem":1081},"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":1083,"path":1084,"stem":1085},"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":1087,"path":1088,"stem":1089},"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":1091,"path":1092,"stem":1093},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":460,"path":1095,"stem":1096},"\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":1098,"path":1099,"stem":1100,"children":1101},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1102,1103,1125,1159,1201,1251,1309,1371,1385,1395,1433,1451],{"title":1098,"path":1099,"stem":1100},{"title":1104,"path":1105,"stem":1106,"children":1107},"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",[1108,1109,1113,1117,1121],{"title":1104,"path":1105,"stem":1106},{"title":1110,"path":1111,"stem":1112},"STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F2.str50-cpp",{"title":1114,"path":1115,"stem":1116},"STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F3.str52-cpp",{"title":1118,"path":1119,"stem":1120},"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":1122,"path":1123,"stem":1124},"string from a null pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstring-from-a-null-pointer","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F5.string-from-a-null-pointer",{"title":1126,"path":1127,"stem":1128,"children":1129},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[1130,1131,1135,1139,1143,1147,1151,1155],{"title":1126,"path":1127,"stem":1128},{"title":1132,"path":1133,"stem":1134},"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":1136,"path":1137,"stem":1138},"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":1140,"path":1141,"stem":1142},"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":1144,"path":1145,"stem":1146},"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":1148,"path":1149,"stem":1150},"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":1152,"path":1153,"stem":1154},"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":1156,"path":1157,"stem":1158},"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":1160,"path":1161,"stem":1162,"children":1163},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1164,1165,1169,1173,1177,1181,1185,1189,1193,1197],{"title":1160,"path":1161,"stem":1162},{"title":1166,"path":1167,"stem":1168},"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":1170,"path":1171,"stem":1172},"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":1174,"path":1175,"stem":1176},"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":1178,"path":1179,"stem":1180},"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":1182,"path":1183,"stem":1184},"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":1186,"path":1187,"stem":1188},"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":1190,"path":1191,"stem":1192},"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":1194,"path":1195,"stem":1196},"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":1198,"path":1199,"stem":1200},"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":1202,"path":1203,"stem":1204,"children":1205},"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",[1206,1207,1211,1215,1219,1223,1227,1231,1235,1239,1243,1247],{"title":1202,"path":1203,"stem":1204},{"title":1208,"path":1209,"stem":1210},"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":1212,"path":1213,"stem":1214},"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":1216,"path":1217,"stem":1218},"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":1220,"path":1221,"stem":1222},"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":1224,"path":1225,"stem":1226},"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":1228,"path":1229,"stem":1230},"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":1232,"path":1233,"stem":1234},"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":1236,"path":1237,"stem":1238},"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":1240,"path":1241,"stem":1242},"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":1244,"path":1245,"stem":1246},"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":1248,"path":1249,"stem":1250},"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":1252,"path":1253,"stem":1254,"children":1255},"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",[1256,1257,1261,1265,1269,1273,1277,1281,1285,1289,1293,1297,1301,1305],{"title":1252,"path":1253,"stem":1254},{"title":1258,"path":1259,"stem":1260},"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":1262,"path":1263,"stem":1264},"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":1266,"path":1267,"stem":1268},"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":1270,"path":1271,"stem":1272},"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":1274,"path":1275,"stem":1276},"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":1278,"path":1279,"stem":1280},"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":1282,"path":1283,"stem":1284},"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":1286,"path":1287,"stem":1288},"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":1290,"path":1291,"stem":1292},"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":1294,"path":1295,"stem":1296},"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":1298,"path":1299,"stem":1300},"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":1302,"path":1303,"stem":1304},"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":1306,"path":1307,"stem":1308},"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":1310,"path":1311,"stem":1312,"children":1313},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1314,1315,1319,1323,1327,1331,1335,1339,1343,1347,1351,1355,1359,1363,1367],{"title":1310,"path":1311,"stem":1312},{"title":1316,"path":1317,"stem":1318},"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":1320,"path":1321,"stem":1322},"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":1324,"path":1325,"stem":1326},"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":1328,"path":1329,"stem":1330},"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":1332,"path":1333,"stem":1334},"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":1336,"path":1337,"stem":1338},"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":1340,"path":1341,"stem":1342},"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":1344,"path":1345,"stem":1346},"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":1348,"path":1349,"stem":1350},"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":1352,"path":1353,"stem":1354},"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":1356,"path":1357,"stem":1358},"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":1360,"path":1361,"stem":1362},"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":1364,"path":1365,"stem":1366},"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":1368,"path":1369,"stem":1370},"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":1372,"path":1373,"stem":1374,"children":1375},"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",[1376,1377,1381],{"title":1372,"path":1373,"stem":1374},{"title":1378,"path":1379,"stem":1380},"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":1382,"path":1383,"stem":1384},"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":1386,"path":1387,"stem":1388,"children":1389},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[1390,1391],{"title":1386,"path":1387,"stem":1388},{"title":1392,"path":1393,"stem":1394},"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":1396,"path":1397,"stem":1398,"children":1399},"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",[1400,1401,1405,1409,1413,1417,1421,1425,1429],{"title":1396,"path":1397,"stem":1398},{"title":1402,"path":1403,"stem":1404},"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":1406,"path":1407,"stem":1408},"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":1410,"path":1411,"stem":1412},"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":1414,"path":1415,"stem":1416},"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":1418,"path":1419,"stem":1420},"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":1422,"path":1423,"stem":1424},"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":1426,"path":1427,"stem":1428},"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":1430,"path":1431,"stem":1432},"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":1434,"path":1435,"stem":1436,"children":1437},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[1438,1439,1441,1445,1449,1450],{"title":1434,"path":1435,"stem":1436},{"title":378,"path":377,"stem":1440},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F2.msc51-cpp",{"title":1442,"path":1443,"stem":1444},"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":1446,"path":1447,"stem":1448},"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":1017,"path":1018,"stem":1019},{"title":30,"path":1011,"stem":1013},{"title":1021,"path":1022,"stem":1023,"children":1452},[1453,1454,1458,1462,1466,1470,1474,1478,1482,1486],{"title":1021,"path":1022,"stem":1023},{"title":1455,"path":1456,"stem":1457},"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":1459,"path":1460,"stem":1461},"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":1463,"path":1464,"stem":1465},"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":1467,"path":1468,"stem":1469},"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":1471,"path":1472,"stem":1473},"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":1475,"path":1476,"stem":1477},"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":1479,"path":1480,"stem":1481},"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":1483,"path":1484,"stem":1485},"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":1487,"path":1488,"stem":1489},"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":1491,"path":1492,"stem":1493,"children":1494},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[1495,1496,1500,1503,1676,1689],{"title":1491,"path":1492,"stem":1493},{"title":1497,"path":1498,"stem":1499},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":1501,"path":846,"stem":1502},"BB. Definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":1504,"path":1505,"stem":1506,"children":1507},"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",[1508,1509,1511,1515,1517,1521,1523,1527,1531,1535,1539,1543,1547,1550,1554,1558,1562,1565,1569,1573,1577,1581,1585,1587,1591,1593,1597,1600,1604,1607,1611,1613,1617,1621,1625,1629,1633,1636,1640,1642,1646,1648,1652,1656,1660,1664,1668,1672],{"title":1504,"path":1505,"stem":1506},{"title":500,"path":499,"stem":1510},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F02.astree",{"title":1512,"path":1513,"stem":1514},"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":532,"path":531,"stem":1516},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F04.axivion-bauhaus-suite",{"title":1518,"path":1519,"stem":1520},"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":558,"path":557,"stem":1522},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F06.clang",{"title":1524,"path":1525,"stem":1526},"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":1528,"path":1529,"stem":1530},"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":1532,"path":1533,"stem":1534},"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":1536,"path":1537,"stem":1538},"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":1540,"path":1541,"stem":1542},"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":1544,"path":1545,"stem":1546},"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":584,"path":1548,"stem":1549},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":1551,"path":1552,"stem":1553},"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":1555,"path":1556,"stem":1557},"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":1559,"path":1560,"stem":1561},"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":639,"path":1563,"stem":1564},"\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":1566,"path":1567,"stem":1568},"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":1570,"path":1571,"stem":1572},"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":1574,"path":1575,"stem":1576},"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":1578,"path":1579,"stem":1580},"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":1582,"path":1583,"stem":1584},"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":666,"path":665,"stem":1586},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":1588,"path":1589,"stem":1590},"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":692,"path":691,"stem":1592},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F25.klocwork",{"title":1594,"path":1595,"stem":1596},"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":1598,"path":714,"stem":1599},"LDRA","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":1601,"path":1602,"stem":1603},"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":1605,"path":746,"stem":1606},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":1608,"path":1609,"stem":1610},"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":773,"path":772,"stem":1612},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":1614,"path":1615,"stem":1616},"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":1618,"path":1619,"stem":1620},"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":1622,"path":1623,"stem":1624},"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":1626,"path":1627,"stem":1628},"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":1630,"path":1631,"stem":1632},"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":1634,"path":609,"stem":1635},"Rose","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F37.rose",{"title":1637,"path":1638,"stem":1639},"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":799,"path":798,"stem":1641},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F39.rulechecker",{"title":1643,"path":1644,"stem":1645},"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":821,"path":820,"stem":1647},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F41.security-reviewer-static-reviewer",{"title":1649,"path":1650,"stem":1651},"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":1653,"path":1654,"stem":1655},"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":1657,"path":1658,"stem":1659},"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":1661,"path":1662,"stem":1663},"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":1665,"path":1666,"stem":1667},"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":1669,"path":1670,"stem":1671},"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":1673,"path":1674,"stem":1675},"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":1677,"path":1678,"stem":1679,"children":1680},"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",[1681,1682,1686],{"title":1677,"path":1678,"stem":1679},{"title":1683,"path":1684,"stem":1685},"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":911,"path":1687,"stem":1688},"\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":1690,"path":1691,"stem":1692},"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":1694,"path":1695,"stem":1696,"children":1697},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[1698,1699],{"title":1694,"path":1695,"stem":1696},{"title":1700,"path":1701,"stem":1702},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":1704,"path":1705,"stem":1706},"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",1775657783760]