[{"data":1,"prerenderedAt":2031},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr52-cpp":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr52-cpp":1326,"sidebar-sei-cert-cpp-coding-standard":1334},[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":1310,"extension":1311,"meta":1312,"navigation":7,"path":1322,"seo":1323,"stem":1324,"__hash__":1325},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F3.str52-cpp.md","STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string",{"type":32,"value":33,"toc":1296},"minimark",[34,38,61,114,133,140,143,169,385,394,403,555,561,564,654,657,672,812,816,825,934,938,941,1007,1012,1182,1186,1200,1204,1227,1231,1268,1271,1292],[35,36,30],"h1",{"id":37},"str52-cpp-use-valid-references-pointers-and-iterators-to-reference-elements-of-a-basic_string",[39,40,41,42,46,47,52,53,55,56,60],"p",{},"Since ",[43,44,45],"code",{},"std::basic_string"," is a container of characters, this rule is a specific instance of ",[48,49,51],"a",{"href":50},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr51-cpp","CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container"," . As a container, it supports iterators just like other containers in the Standard Template Library. However, the ",[43,54,45],{}," template class has unusual invalidation semantics. The C++ Standard, [string.require], paragraph 5 [ ",[48,57,59],{"href":58},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ], states the following:",[62,63,64,74],"blockquote",{},[39,65,66,67,70,71,73],{},"References, pointers, and iterators referring to the elements of a ",[43,68,69],{},"basic_string"," sequence may be invalidated by the following uses of that ",[43,72,69],{}," object:",[75,76,77,84],"ul",{},[78,79,80,81,83],"li",{},"As an argument to any standard library function taking a reference to non-const ",[43,82,69],{}," as an argument.",[78,85,86,87,90,91,90,94,90,97,90,100,90,103,90,106,109,110,113],{},"Calling non-const member functions, except ",[43,88,89],{},"operator[]"," , ",[43,92,93],{},"at",[43,95,96],{},"front",[43,98,99],{},"back",[43,101,102],{},"begin",[43,104,105],{},"rbegin",[43,107,108],{},"end"," , and ",[43,111,112],{},"rend"," .",[39,115,116,117,120,121,123,124,90,127,109,130,113],{},"Examples of standard library functions taking a reference to non- ",[43,118,119],{},"const"," ",[43,122,45],{}," are ",[43,125,126],{},"std::swap()",[43,128,129],{},"  ::operator>>(basic_istream &, string &) ",[43,131,132],{},"std::getline()",[39,134,135,136,113],{},"Do not use an invalidated reference, pointer, or iterator because doing so results in ",[48,137,139],{"href":138},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-undefinedbehavior","undefined behavior",[39,141,142],{},"Noncompliant Code Example",[39,144,145,146,149,150,153,154,157,158,161,162,165,166,168],{},"This noncompliant code example copies ",[43,147,148],{},"input"," into a ",[43,151,152],{},"std::string"," , replacing semicolon ( ",[43,155,156],{},";)"," characters with spaces. This example is noncompliant because the iterator ",[43,159,160],{},"loc"," is invalidated after the first call to ",[43,163,164],{},"insert()"," . The behavior of subsequent calls to ",[43,167,164],{}," is undefined.",[170,171,173],"code-block",{"quality":172},"bad",[174,175,180],"pre",{"className":176,"code":177,"language":178,"meta":179,"style":179},"language-cpp shiki shiki-themes github-light github-dark monokai","#include \u003Cstring>\n \nvoid f(const std::string &input) {\n  std::string email;\n\n  \u002F\u002F Copy input into email converting \";\" to \" \"\n  std::string::iterator loc = email.begin();\n  for (auto i = input.begin(), e = input.end(); i != e; ++i, ++loc) {\n    email.insert(loc, *i != ';' ? *i : ' ');\n  }\n}\n","cpp","",[43,181,182,195,202,237,246,252,259,282,333,373,379],{"__ignoreMap":179},[183,184,187,191],"span",{"class":185,"line":186},"line",1,[183,188,190],{"class":189},"sC2Qs","#include",[183,192,194],{"class":193},"sstjo"," \u003Cstring>\n",[183,196,198],{"class":185,"line":197},2,[183,199,201],{"class":200},"sMOD_"," \n",[183,203,205,209,213,216,218,222,225,228,231,234],{"class":185,"line":204},3,[183,206,208],{"class":207},"sq6CD","void",[183,210,212],{"class":211},"srTi1"," f",[183,214,215],{"class":200},"(",[183,217,119],{"class":189},[183,219,221],{"class":220},"sz2Vg"," std",[183,223,224],{"class":200},"::",[183,226,227],{"class":220},"string",[183,229,230],{"class":189}," &",[183,232,148],{"class":233},"sTHNf",[183,235,236],{"class":200},") {\n",[183,238,240,243],{"class":185,"line":239},4,[183,241,242],{"class":220},"  std",[183,244,245],{"class":200},"::string email;\n",[183,247,249],{"class":185,"line":248},5,[183,250,251],{"emptyLinePlaceholder":7},"\n",[183,253,255],{"class":185,"line":254},6,[183,256,258],{"class":257},"s8-w5","  \u002F\u002F Copy input into email converting \";\" to \" \"\n",[183,260,262,264,266,268,271,274,277,279],{"class":185,"line":261},7,[183,263,242],{"class":220},[183,265,224],{"class":200},[183,267,227],{"class":220},[183,269,270],{"class":200},"::iterator loc ",[183,272,273],{"class":189},"=",[183,275,276],{"class":200}," email.",[183,278,102],{"class":211},[183,280,281],{"class":200},"();\n",[183,283,285,288,291,294,297,299,302,304,307,309,311,313,316,319,322,325,328,330],{"class":185,"line":284},8,[183,286,287],{"class":189},"  for",[183,289,290],{"class":200}," (",[183,292,293],{"class":207},"auto",[183,295,296],{"class":200}," i ",[183,298,273],{"class":189},[183,300,301],{"class":200}," input.",[183,303,102],{"class":211},[183,305,306],{"class":200},"(), e ",[183,308,273],{"class":189},[183,310,301],{"class":200},[183,312,108],{"class":211},[183,314,315],{"class":200},"(); i ",[183,317,318],{"class":189},"!=",[183,320,321],{"class":200}," e; ",[183,323,324],{"class":189},"++",[183,326,327],{"class":200},"i, ",[183,329,324],{"class":189},[183,331,332],{"class":200},"loc) {\n",[183,334,336,339,342,345,348,351,353,356,359,362,364,367,370],{"class":185,"line":335},9,[183,337,338],{"class":200},"    email.",[183,340,341],{"class":211},"insert",[183,343,344],{"class":200},"(loc, ",[183,346,347],{"class":189},"*",[183,349,350],{"class":200},"i ",[183,352,318],{"class":189},[183,354,355],{"class":193}," ';'",[183,357,358],{"class":189}," ?",[183,360,361],{"class":189}," *",[183,363,350],{"class":200},[183,365,366],{"class":189},":",[183,368,369],{"class":193}," ' '",[183,371,372],{"class":200},");\n",[183,374,376],{"class":185,"line":375},10,[183,377,378],{"class":200},"  }\n",[183,380,382],{"class":185,"line":381},11,[183,383,384],{"class":200},"}\n",[386,387,389,390,393],"h2",{"id":388},"compliant-solution-stdstringinsert","Compliant Solution ( ",[43,391,392],{},"std::string::insert()"," )",[39,395,396,397,399,400,402],{},"In this compliant solution, the value of the iterator ",[43,398,160],{}," is updated as a result of each call to ",[43,401,164],{}," so that the invalidated iterator is never accessed. The updated iterator is then incremented at the end of the loop.",[170,404,406],{"quality":405},"good",[174,407,409],{"className":176,"code":408,"language":178,"meta":179,"style":179},"#include \u003Cstring>\n \nvoid f(const std::string &input) {\n  std::string email;\n\n  \u002F\u002F Copy input into email converting \";\" to \" \"\n  std::string::iterator loc = email.begin();\n  for (auto i = input.begin(), e = input.end(); i != e; ++i, ++loc) {\n    loc = email.insert(loc, *i != ';' ? *i : ' ');\n  }\n}\n",[43,410,411,417,422,444,450,454,458,476,514,547,551],{"__ignoreMap":179},[183,412,413,415],{"class":185,"line":186},[183,414,190],{"class":189},[183,416,194],{"class":193},[183,418,419],{"class":185,"line":197},[183,420,421],{"class":200}," \n",[183,423,424,426,428,430,432,434,436,438,440,442],{"class":185,"line":204},[183,425,208],{"class":207},[183,427,212],{"class":211},[183,429,215],{"class":200},[183,431,119],{"class":189},[183,433,221],{"class":220},[183,435,224],{"class":200},[183,437,227],{"class":220},[183,439,230],{"class":189},[183,441,148],{"class":233},[183,443,236],{"class":200},[183,445,446,448],{"class":185,"line":239},[183,447,242],{"class":220},[183,449,245],{"class":200},[183,451,452],{"class":185,"line":248},[183,453,251],{"emptyLinePlaceholder":7},[183,455,456],{"class":185,"line":254},[183,457,258],{"class":257},[183,459,460,462,464,466,468,470,472,474],{"class":185,"line":261},[183,461,242],{"class":220},[183,463,224],{"class":200},[183,465,227],{"class":220},[183,467,270],{"class":200},[183,469,273],{"class":189},[183,471,276],{"class":200},[183,473,102],{"class":211},[183,475,281],{"class":200},[183,477,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512],{"class":185,"line":284},[183,479,287],{"class":189},[183,481,290],{"class":200},[183,483,293],{"class":207},[183,485,296],{"class":200},[183,487,273],{"class":189},[183,489,301],{"class":200},[183,491,102],{"class":211},[183,493,306],{"class":200},[183,495,273],{"class":189},[183,497,301],{"class":200},[183,499,108],{"class":211},[183,501,315],{"class":200},[183,503,318],{"class":189},[183,505,321],{"class":200},[183,507,324],{"class":189},[183,509,327],{"class":200},[183,511,324],{"class":189},[183,513,332],{"class":200},[183,515,516,519,521,523,525,527,529,531,533,535,537,539,541,543,545],{"class":185,"line":335},[183,517,518],{"class":200},"    loc ",[183,520,273],{"class":189},[183,522,276],{"class":200},[183,524,341],{"class":211},[183,526,344],{"class":200},[183,528,347],{"class":189},[183,530,350],{"class":200},[183,532,318],{"class":189},[183,534,355],{"class":193},[183,536,358],{"class":189},[183,538,361],{"class":189},[183,540,350],{"class":200},[183,542,366],{"class":189},[183,544,369],{"class":193},[183,546,372],{"class":200},[183,548,549],{"class":185,"line":375},[183,550,378],{"class":200},[183,552,553],{"class":185,"line":381},[183,554,384],{"class":200},[386,556,389,558,393],{"id":557},"compliant-solution-stdreplace",[43,559,560],{},"std::replace()",[39,562,563],{},"This compliant solution uses a standard algorithm to perform the replacement. When possible, using a generic algorithm is preferable to inventing your own solution.",[170,565,566],{"quality":405},[174,567,569],{"className":176,"code":568,"language":178,"meta":179,"style":179},"#include \u003Calgorithm>\n#include \u003Cstring>\n \nvoid f(const std::string &input) {\n  std::string email{input};\n  std::replace(email.begin(), email.end(), ';', ' ');\n}\n",[43,570,571,578,584,588,610,617,650],{"__ignoreMap":179},[183,572,573,575],{"class":185,"line":186},[183,574,190],{"class":189},[183,576,577],{"class":193}," \u003Calgorithm>\n",[183,579,580,582],{"class":185,"line":197},[183,581,190],{"class":189},[183,583,194],{"class":193},[183,585,586],{"class":185,"line":204},[183,587,421],{"class":200},[183,589,590,592,594,596,598,600,602,604,606,608],{"class":185,"line":239},[183,591,208],{"class":207},[183,593,212],{"class":211},[183,595,215],{"class":200},[183,597,119],{"class":189},[183,599,221],{"class":220},[183,601,224],{"class":200},[183,603,227],{"class":220},[183,605,230],{"class":189},[183,607,148],{"class":233},[183,609,236],{"class":200},[183,611,612,614],{"class":185,"line":248},[183,613,242],{"class":220},[183,615,616],{"class":200},"::string email{input};\n",[183,618,619,621,623,626,629,631,634,636,639,642,645,648],{"class":185,"line":254},[183,620,242],{"class":220},[183,622,224],{"class":200},[183,624,625],{"class":211},"replace",[183,627,628],{"class":200},"(email.",[183,630,102],{"class":211},[183,632,633],{"class":200},"(), email.",[183,635,108],{"class":211},[183,637,638],{"class":200},"(), ",[183,640,641],{"class":193},"';'",[183,643,644],{"class":200},", ",[183,646,647],{"class":193},"' '",[183,649,372],{"class":200},[183,651,652],{"class":185,"line":261},[183,653,384],{"class":200},[386,655,142],{"id":656},"noncompliant-code-example",[39,658,659,660,663,664,667,668,671],{},"In this noncompliant code example, ",[43,661,662],{},"data"," is invalidated after the call to ",[43,665,666],{},"replace()"," , and so its use in ",[43,669,670],{},"g()"," is undefined behavior.",[170,673,674],{"quality":172},[174,675,677],{"className":176,"code":676,"language":178,"meta":179,"style":179},"#include \u003Ciostream>\n#include \u003Cstring>\n \nextern void g(const char *);\n \nvoid f(std::string &exampleString) {\n  const char *data = exampleString.data();\n  \u002F\u002F ...\n  exampleString.replace(0, 2, \"bb\");\n  \u002F\u002F ...\n  g(data);\n}\n",[43,678,679,686,692,696,718,722,744,765,770,795,799,807],{"__ignoreMap":179},[183,680,681,683],{"class":185,"line":186},[183,682,190],{"class":189},[183,684,685],{"class":193}," \u003Ciostream>\n",[183,687,688,690],{"class":185,"line":197},[183,689,190],{"class":189},[183,691,194],{"class":193},[183,693,694],{"class":185,"line":204},[183,695,201],{"class":200},[183,697,698,701,704,707,709,711,714,716],{"class":185,"line":239},[183,699,700],{"class":189},"extern",[183,702,703],{"class":207}," void",[183,705,706],{"class":211}," g",[183,708,215],{"class":200},[183,710,119],{"class":189},[183,712,713],{"class":207}," char",[183,715,361],{"class":189},[183,717,372],{"class":200},[183,719,720],{"class":185,"line":248},[183,721,201],{"class":200},[183,723,724,726,728,730,733,735,737,739,742],{"class":185,"line":254},[183,725,208],{"class":207},[183,727,212],{"class":211},[183,729,215],{"class":200},[183,731,732],{"class":220},"std",[183,734,224],{"class":200},[183,736,227],{"class":220},[183,738,230],{"class":189},[183,740,741],{"class":233},"exampleString",[183,743,236],{"class":200},[183,745,746,749,751,753,756,758,761,763],{"class":185,"line":261},[183,747,748],{"class":189},"  const",[183,750,713],{"class":207},[183,752,361],{"class":189},[183,754,755],{"class":200},"data ",[183,757,273],{"class":189},[183,759,760],{"class":200}," exampleString.",[183,762,662],{"class":211},[183,764,281],{"class":200},[183,766,767],{"class":185,"line":284},[183,768,769],{"class":257},"  \u002F\u002F ...\n",[183,771,772,775,777,779,783,785,788,790,793],{"class":185,"line":335},[183,773,774],{"class":200},"  exampleString.",[183,776,625],{"class":211},[183,778,215],{"class":200},[183,780,782],{"class":781},"s7F3e","0",[183,784,644],{"class":200},[183,786,787],{"class":781},"2",[183,789,644],{"class":200},[183,791,792],{"class":193},"\"bb\"",[183,794,372],{"class":200},[183,796,797],{"class":185,"line":375},[183,798,769],{"class":257},[183,800,801,804],{"class":185,"line":381},[183,802,803],{"class":211},"  g",[183,805,806],{"class":200},"(data);\n",[183,808,810],{"class":185,"line":809},12,[183,811,384],{"class":200},[386,813,815],{"id":814},"compliant-solution","Compliant Solution",[39,817,818,819,821,822,824],{},"In this compliant solution, the pointer to ",[43,820,741],{}," 's internal buffer is not generated until after the modification from ",[43,823,666],{}," has completed.",[170,826,827],{"quality":405},[174,828,830],{"className":176,"code":829,"language":178,"meta":179,"style":179},"#include \u003Ciostream>\n#include \u003Cstring>\n\nextern void g(const char *);\n\nvoid f(std::string &exampleString) {\n  \u002F\u002F ...\n  exampleString.replace(0, 2, \"bb\");\n  \u002F\u002F ...\n  g(exampleString.data());\n}\n",[43,831,832,838,844,848,866,870,890,894,914,918,930],{"__ignoreMap":179},[183,833,834,836],{"class":185,"line":186},[183,835,190],{"class":189},[183,837,685],{"class":193},[183,839,840,842],{"class":185,"line":197},[183,841,190],{"class":189},[183,843,194],{"class":193},[183,845,846],{"class":185,"line":204},[183,847,251],{"emptyLinePlaceholder":7},[183,849,850,852,854,856,858,860,862,864],{"class":185,"line":239},[183,851,700],{"class":189},[183,853,703],{"class":207},[183,855,706],{"class":211},[183,857,215],{"class":200},[183,859,119],{"class":189},[183,861,713],{"class":207},[183,863,361],{"class":189},[183,865,372],{"class":200},[183,867,868],{"class":185,"line":248},[183,869,251],{"emptyLinePlaceholder":7},[183,871,872,874,876,878,880,882,884,886,888],{"class":185,"line":254},[183,873,208],{"class":207},[183,875,212],{"class":211},[183,877,215],{"class":200},[183,879,732],{"class":220},[183,881,224],{"class":200},[183,883,227],{"class":220},[183,885,230],{"class":189},[183,887,741],{"class":233},[183,889,236],{"class":200},[183,891,892],{"class":185,"line":261},[183,893,769],{"class":257},[183,895,896,898,900,902,904,906,908,910,912],{"class":185,"line":284},[183,897,774],{"class":200},[183,899,625],{"class":211},[183,901,215],{"class":200},[183,903,782],{"class":781},[183,905,644],{"class":200},[183,907,787],{"class":781},[183,909,644],{"class":200},[183,911,792],{"class":193},[183,913,372],{"class":200},[183,915,916],{"class":185,"line":335},[183,917,769],{"class":257},[183,919,920,922,925,927],{"class":185,"line":375},[183,921,803],{"class":211},[183,923,924],{"class":200},"(exampleString.",[183,926,662],{"class":211},[183,928,929],{"class":200},"());\n",[183,931,932],{"class":185,"line":381},[183,933,384],{"class":200},[386,935,937],{"id":936},"risk-assessment","Risk Assessment",[39,939,940],{},"Using an invalid reference, pointer, or iterator to a string object could allow an attacker to run arbitrary code.",[942,943,944,945,944,975],"table",{},"\n  ",[946,947,948,949,944],"thead",{},"\n    ",[950,951,952,953,952,957,952,960,952,963,952,966,952,969,952,972,948],"tr",{},"\n      ",[954,955,956],"th",{},"Rule",[954,958,959],{},"Severity",[954,961,962],{},"Likelihood",[954,964,965],{},"Detectable",[954,967,968],{},"Repairable",[954,970,971],{},"Priority",[954,973,974],{},"Level",[976,977,948,978,944],"tbody",{},[950,979,952,980,952,984,952,987,952,990,952,993,952,995,952,1002,948],{},[981,982,983],"td",{},"STR52-CPP",[981,985,986],{},"High",[981,988,989],{},"Probable",[981,991,992],{},"No",[981,994,992],{},[981,996,998],{"style":997},"color: #f1c40f;",[999,1000,1001],"b",{},"P6",[981,1003,1004],{"style":997},[999,1005,1006],{},"L2",[1008,1009,1011],"h3",{"id":1010},"automated-detection","Automated Detection",[942,1013,1016],{"className":1014},[1015],"wrapped",[976,1017,1018,1042,1073,1103,1131,1157],{},[950,1019,1022,1027,1032,1037],{"className":1020},[1021],"header",[954,1023,1024],{},[39,1025,1026],{},"Tool",[954,1028,1029],{},[39,1030,1031],{},"Version",[954,1033,1034],{},[39,1035,1036],{},"Checker",[954,1038,1039],{},[39,1040,1041],{},"Description",[950,1043,1046,1052,1060,1068],{"className":1044},[1045],"odd",[981,1047,1048],{},[48,1049,1051],{"href":1050},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","CodeSonar",[981,1053,1054],{},[1055,1056,1059],"div",{"className":1057},[1058],"content-wrapper","9.1p0",[981,1061,1062],{},[39,1063,1064],{},[1065,1066,1067],"strong",{},"ALLOC.UAF",[981,1069,1070],{},[39,1071,1072],{},"Use After Free",[950,1074,1077,1083,1091,1098],{"className":1075},[1076],"even",[981,1078,1079],{},[48,1080,1082],{"href":1081},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[981,1084,1085],{},[1055,1086,1088],{"className":1087},[1058],[39,1089,1090],{},"2025.2",[981,1092,1093],{},[39,1094,1095],{},[1065,1096,1097],{},"DF4746, DF4747, DF4748, DF4749",[981,1099,1100],{},[1101,1102],"br",{},[950,1104,1106,1112,1119,1126],{"className":1105},[1045],[981,1107,1108],{},[48,1109,1111],{"href":1110},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[981,1113,1114],{},[1055,1115,1117],{"className":1116},[1058],[39,1118,1090],{},[981,1120,1121],{},[39,1122,1123],{},[1065,1124,1125],{},"CERT_CPP-STR52-a",[981,1127,1128],{},[39,1129,1130],{},"Use valid references, pointers, and iterators to reference elements of a basic_string",[950,1132,1134,1140,1148,1154],{"className":1133},[1076],[981,1135,1136],{},[48,1137,1139],{"href":1138},"\u002Fsei-cert-c-coding-standard\u002Fback-matter\u002Fee-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[981,1141,1142],{},[1055,1143,1145],{"className":1144},[1058],[39,1146,1147],{},"R2025b",[981,1149,1150],{},[48,1151,1153],{"href":1152},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcstr52cpp.html","CERT C++: STR52-CPP",[981,1155,1156],{},"Checks for use of invalid string iterator (rule partially covered).",[950,1158,1160,1166,1174,1179],{"className":1159},[1045],[981,1161,1162],{},[48,1163,1165],{"href":1164},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[981,1167,1168],{},[1055,1169,1171],{"className":1170},[1058],[39,1172,1173],{},"6.02",[981,1175,1176],{},[1065,1177,1178],{},"C24",[981,1180,1181],{},"Fully implemented",[1008,1183,1185],{"id":1184},"related-vulnerabilities","Related Vulnerabilities",[39,1187,1188,1189,1193,1194,113],{},"Search for ",[48,1190,1192],{"href":1191},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-vulnerabi","vulnerabilities"," resulting from the violation of this rule on the ",[48,1195,1199],{"href":1196,"rel":1197},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+STR38-CPP",[1198],"nofollow","CERT website",[386,1201,1203],{"id":1202},"related-guidelines","Related Guidelines",[942,1205,1206,1214],{},[946,1207,1208],{},[950,1209,1210,1212],{},[954,1211],{},[954,1213],{},[976,1215,1216],{},[950,1217,1218,1223],{},[981,1219,1220],{},[48,1221,1222],{"href":20},"SEI CERT C++ Coding Standard",[981,1224,1225],{},[48,1226,51],{"href":50},[386,1228,1230],{"id":1229},"bibliography","Bibliography",[942,1232,1233,1241],{},[946,1234,1235],{},[950,1236,1237,1239],{},[954,1238],{},[954,1240],{},[976,1242,1243,1257],{},[950,1244,1245,1251],{},[981,1246,1247,1248,1250],{},"[ ",[48,1249,59],{"href":58}," ]",[981,1252,1253,1254,1256],{},"Subclause 21.4.1, \" ",[43,1255,69],{}," General Requirements\"",[950,1258,1259,1265],{},[981,1260,1247,1261,1250],{},[48,1262,1264],{"href":1263},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Meyers01","Meyers 2001",[981,1266,1267],{},"Item 43, \"Prefer Algorithm Calls to Hand-written Loops\"",[1269,1270],"hr",{},[39,1272,1273,120,1280,120,1286],{},[48,1274,1276],{"href":1275},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstring-from-a-null-pointer",[1277,1278],"img",{"src":1279},"\u002Fattachments\u002F88046682\u002F88480621.png",[48,1281,1283],{"href":1282},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002F",[1277,1284],{"src":1285},"\u002Fattachments\u002F88046682\u002F88475556.png",[48,1287,1289],{"href":1288},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr53-cpp",[1277,1290],{"src":1291},"\u002Fattachments\u002F88046682\u002F88475555.png",[1293,1294,1295],"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 .sTHNf, html code.shiki .sTHNf{--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit;--shiki-sepia:#FD971F;--shiki-sepia-font-style:italic}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);}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}",{"title":179,"searchDepth":197,"depth":197,"links":1297},[1298,1300,1302,1303,1304,1308,1309],{"id":388,"depth":197,"text":1299},"Compliant Solution ( std::string::insert() )",{"id":557,"depth":197,"text":1301},"Compliant Solution ( std::replace() )",{"id":656,"depth":197,"text":142},{"id":814,"depth":197,"text":815},{"id":936,"depth":197,"text":937,"children":1305},[1306,1307],{"id":1010,"depth":204,"text":1011},{"id":1184,"depth":204,"text":1185},{"id":1202,"depth":197,"text":1203},{"id":1229,"depth":197,"text":1230},"Since std::basic_string is a container of characters, this rule is a specific instance of CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container . As a container, it supports iterators just like other containers in the Standard Template Library. However, the std::basic_string template class has unusual invalidation semantics. The C++ Standard, [string.require], paragraph 5 [ ISO\u002FIEC 14882-2014 ], states the following:","md",{"tags":1313},[1314,1315,1316,1317,1318,1319,1320,1321],"review","review-dms","rule","nptc-aliasing","review-ajb","no-autodetect","str","nptc","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr52-cpp",{"title":30,"description":1310},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F3.str52-cpp","xS1C7FStObZGkA3pXvNzcd-nQMRKSdYK4asm0OjQiKY",[1327,1331],{"title":1328,"path":1329,"stem":1330,"children":-1},"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":1332,"path":1288,"stem":1333,"children":-1},"STR53-CPP. Range check element access","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F4.str53-cpp",[1335],{"title":1222,"path":1336,"stem":1337,"children":1338},"\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1339,1340,1407,1799,2017,2027],{"title":1222,"path":1336,"stem":1337},{"title":1341,"path":1342,"stem":1343,"children":1344},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1345,1346],{"title":1341,"path":1342,"stem":1343},{"title":1347,"path":1348,"stem":1349,"children":1350},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1351,1352,1356,1360,1364,1368,1372,1376,1380,1384,1388,1392,1396,1400,1404],{"title":1347,"path":1348,"stem":1349},{"title":1353,"path":1354,"stem":1355},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1357,"path":1358,"stem":1359},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1361,"path":1362,"stem":1363},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1365,"path":1366,"stem":1367},"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":1369,"path":1370,"stem":1371},"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":1373,"path":1374,"stem":1375},"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":1377,"path":1378,"stem":1379},"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":1381,"path":1382,"stem":1383},"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":1385,"path":1386,"stem":1387},"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":1389,"path":1390,"stem":1391},"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":1393,"path":1394,"stem":1395},"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":1397,"path":1398,"stem":1399},"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":1401,"path":1402,"stem":1403},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":1011,"path":1405,"stem":1406},"\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":1408,"path":1409,"stem":1410,"children":1411},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1412,1413,1425,1459,1499,1549,1607,1669,1683,1693,1731,1757],{"title":1408,"path":1409,"stem":1410},{"title":1414,"path":1415,"stem":1416,"children":1417},"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",[1418,1419,1420,1421,1422],{"title":1414,"path":1415,"stem":1416},{"title":1328,"path":1329,"stem":1330},{"title":30,"path":1322,"stem":1324},{"title":1332,"path":1288,"stem":1333},{"title":1423,"path":1275,"stem":1424},"string from a null pointer","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F5.string-from-a-null-pointer",{"title":1426,"path":1427,"stem":1428,"children":1429},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[1430,1431,1435,1439,1443,1447,1451,1455],{"title":1426,"path":1427,"stem":1428},{"title":1432,"path":1433,"stem":1434},"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":1436,"path":1437,"stem":1438},"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":1440,"path":1441,"stem":1442},"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":1444,"path":1445,"stem":1446},"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":1448,"path":1449,"stem":1450},"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":1452,"path":1453,"stem":1454},"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":1456,"path":1457,"stem":1458},"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":1460,"path":1461,"stem":1462,"children":1463},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1464,1465,1469,1471,1475,1479,1483,1487,1491,1495],{"title":1460,"path":1461,"stem":1462},{"title":1466,"path":1467,"stem":1468},"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":51,"path":50,"stem":1470},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F03.ctr51-cpp",{"title":1472,"path":1473,"stem":1474},"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":1476,"path":1477,"stem":1478},"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":1480,"path":1481,"stem":1482},"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":1484,"path":1485,"stem":1486},"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":1488,"path":1489,"stem":1490},"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":1492,"path":1493,"stem":1494},"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":1496,"path":1497,"stem":1498},"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":1500,"path":1501,"stem":1502,"children":1503},"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",[1504,1505,1509,1513,1517,1521,1525,1529,1533,1537,1541,1545],{"title":1500,"path":1501,"stem":1502},{"title":1506,"path":1507,"stem":1508},"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":1510,"path":1511,"stem":1512},"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":1514,"path":1515,"stem":1516},"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":1518,"path":1519,"stem":1520},"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":1522,"path":1523,"stem":1524},"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":1526,"path":1527,"stem":1528},"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":1530,"path":1531,"stem":1532},"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":1534,"path":1535,"stem":1536},"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":1538,"path":1539,"stem":1540},"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":1542,"path":1543,"stem":1544},"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":1546,"path":1547,"stem":1548},"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":1550,"path":1551,"stem":1552,"children":1553},"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",[1554,1555,1559,1563,1567,1571,1575,1579,1583,1587,1591,1595,1599,1603],{"title":1550,"path":1551,"stem":1552},{"title":1556,"path":1557,"stem":1558},"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":1560,"path":1561,"stem":1562},"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":1564,"path":1565,"stem":1566},"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":1568,"path":1569,"stem":1570},"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":1572,"path":1573,"stem":1574},"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":1576,"path":1577,"stem":1578},"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":1580,"path":1581,"stem":1582},"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":1584,"path":1585,"stem":1586},"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":1588,"path":1589,"stem":1590},"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":1592,"path":1593,"stem":1594},"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":1596,"path":1597,"stem":1598},"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":1600,"path":1601,"stem":1602},"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":1604,"path":1605,"stem":1606},"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":1608,"path":1609,"stem":1610,"children":1611},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1612,1613,1617,1621,1625,1629,1633,1637,1641,1645,1649,1653,1657,1661,1665],{"title":1608,"path":1609,"stem":1610},{"title":1614,"path":1615,"stem":1616},"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":1618,"path":1619,"stem":1620},"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":1622,"path":1623,"stem":1624},"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":1626,"path":1627,"stem":1628},"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":1630,"path":1631,"stem":1632},"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":1634,"path":1635,"stem":1636},"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":1638,"path":1639,"stem":1640},"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":1642,"path":1643,"stem":1644},"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":1646,"path":1647,"stem":1648},"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":1650,"path":1651,"stem":1652},"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":1654,"path":1655,"stem":1656},"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":1658,"path":1659,"stem":1660},"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":1662,"path":1663,"stem":1664},"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":1666,"path":1667,"stem":1668},"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":1670,"path":1671,"stem":1672,"children":1673},"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",[1674,1675,1679],{"title":1670,"path":1671,"stem":1672},{"title":1676,"path":1677,"stem":1678},"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":1680,"path":1681,"stem":1682},"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":1684,"path":1685,"stem":1686,"children":1687},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[1688,1689],{"title":1684,"path":1685,"stem":1686},{"title":1690,"path":1691,"stem":1692},"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":1694,"path":1695,"stem":1696,"children":1697},"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",[1698,1699,1703,1707,1711,1715,1719,1723,1727],{"title":1694,"path":1695,"stem":1696},{"title":1700,"path":1701,"stem":1702},"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":1704,"path":1705,"stem":1706},"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":1708,"path":1709,"stem":1710},"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":1712,"path":1713,"stem":1714},"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":1716,"path":1717,"stem":1718},"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":1720,"path":1721,"stem":1722},"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":1724,"path":1725,"stem":1726},"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":1728,"path":1729,"stem":1730},"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":1732,"path":1733,"stem":1734,"children":1735},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[1736,1737,1741,1745,1749,1753],{"title":1732,"path":1733,"stem":1734},{"title":1738,"path":1739,"stem":1740},"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":1742,"path":1743,"stem":1744},"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":1746,"path":1747,"stem":1748},"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":1750,"path":1751,"stem":1752},"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":1754,"path":1755,"stem":1756},"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":1758,"path":1759,"stem":1760,"children":1761},"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",[1762,1763,1767,1771,1775,1779,1783,1787,1791,1795],{"title":1758,"path":1759,"stem":1760},{"title":1764,"path":1765,"stem":1766},"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":1768,"path":1769,"stem":1770},"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":1772,"path":1773,"stem":1774},"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":1776,"path":1777,"stem":1778},"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":1780,"path":1781,"stem":1782},"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":1784,"path":1785,"stem":1786},"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":1788,"path":1789,"stem":1790},"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":1792,"path":1793,"stem":1794},"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":1796,"path":1797,"stem":1798},"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":1800,"path":1801,"stem":1802,"children":1803},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[1804,1805,1809,1813,1999,2013],{"title":1800,"path":1801,"stem":1802},{"title":1806,"path":1807,"stem":1808},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":1810,"path":1811,"stem":1812},"BB. Definitions","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":1814,"path":1815,"stem":1816,"children":1817},"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",[1818,1819,1823,1827,1831,1835,1839,1843,1847,1851,1855,1859,1863,1865,1869,1873,1877,1881,1885,1889,1893,1897,1901,1903,1907,1911,1915,1919,1923,1926,1930,1933,1937,1941,1945,1949,1953,1957,1961,1965,1969,1971,1975,1979,1983,1987,1991,1995],{"title":1814,"path":1815,"stem":1816},{"title":1820,"path":1821,"stem":1822},"Astrée","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F02.astree",{"title":1824,"path":1825,"stem":1826},"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":1828,"path":1829,"stem":1830},"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":1832,"path":1833,"stem":1834},"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":1836,"path":1837,"stem":1838},"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":1840,"path":1841,"stem":1842},"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":1844,"path":1845,"stem":1846},"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":1848,"path":1849,"stem":1850},"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":1852,"path":1853,"stem":1854},"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":1856,"path":1857,"stem":1858},"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":1860,"path":1861,"stem":1862},"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":1051,"path":1050,"stem":1864},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":1866,"path":1867,"stem":1868},"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":1870,"path":1871,"stem":1872},"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":1874,"path":1875,"stem":1876},"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":1878,"path":1879,"stem":1880},"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":1882,"path":1883,"stem":1884},"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":1886,"path":1887,"stem":1888},"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":1890,"path":1891,"stem":1892},"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":1894,"path":1895,"stem":1896},"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":1898,"path":1899,"stem":1900},"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":1082,"path":1081,"stem":1902},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":1904,"path":1905,"stem":1906},"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":1908,"path":1909,"stem":1910},"Klocwork","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F25.klocwork",{"title":1912,"path":1913,"stem":1914},"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":1916,"path":1917,"stem":1918},"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":1920,"path":1921,"stem":1922},"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":1924,"path":1110,"stem":1925},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":1927,"path":1928,"stem":1929},"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":1139,"path":1931,"stem":1932},"\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":1934,"path":1935,"stem":1936},"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":1938,"path":1939,"stem":1940},"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":1942,"path":1943,"stem":1944},"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":1946,"path":1947,"stem":1948},"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":1950,"path":1951,"stem":1952},"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":1954,"path":1955,"stem":1956},"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":1958,"path":1959,"stem":1960},"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":1962,"path":1963,"stem":1964},"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":1966,"path":1967,"stem":1968},"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":1165,"path":1164,"stem":1970},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F41.security-reviewer-static-reviewer",{"title":1972,"path":1973,"stem":1974},"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":1976,"path":1977,"stem":1978},"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":1980,"path":1981,"stem":1982},"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":1984,"path":1985,"stem":1986},"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":1988,"path":1989,"stem":1990},"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":1992,"path":1993,"stem":1994},"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":1996,"path":1997,"stem":1998},"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":2000,"path":2001,"stem":2002,"children":2003},"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",[2004,2005,2009],{"title":2000,"path":2001,"stem":2002},{"title":2006,"path":2007,"stem":2008},"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":2010,"path":2011,"stem":2012},"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":2014,"path":2015,"stem":2016},"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":2018,"path":2019,"stem":2020,"children":2021},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[2022,2023],{"title":2018,"path":2019,"stem":2020},{"title":2024,"path":2025,"stem":2026},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":2028,"path":2029,"stem":2030},"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",1775657784232]