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