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