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