[{"data":1,"prerenderedAt":1321},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids30-pl":28,"surround-\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids30-pl":938,"sidebar-sei-cert-perl-coding-standard":946},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":27,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24],{"title":13,"path":14},"Android Coding Standard","\u002Fandroid-secure-coding-standard\u002F",{"title":16,"path":17},"C Coding Standard","\u002Fsei-cert-c-coding-standard\u002F",{"title":19,"path":20},"C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002F",{"title":22,"path":23},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":25,"path":26},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":29,"title":30,"body":31,"description":41,"extension":929,"meta":930,"navigation":7,"path":934,"seo":935,"stem":936,"__hash__":937},"content\u002F7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F2.ids30-pl.md","IDS30-PL. Exclude user input from format strings",{"type":32,"value":33,"toc":920},"minimark",[34,38,42,64,69,72,302,305,418,421,498,523,531,540,612,616,683,687,690,700,747,751,820,824,892,895,916],[35,36,30],"h1",{"id":37},"ids30-pl-exclude-user-input-from-format-strings",[39,40,41],"p",{},"Never call any formatted I\u002FO function with a format string containing user input.",[39,43,44,45,49,50,55,56,59,60,63],{},"An attacker who can fully or partially control the contents of a format string can crash the Perl interpreter or cause a denial of service. She can also modify values, perhaps by using the ",[46,47,48],"code",{},"%n||"," conversion specifier, and use these values to divert control flow. Their capabilities are not as strong as in C [ ",[51,52,54],"a",{"href":53},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Seacord2005","Seacord 2005"," ]; nonetheless the danger is sufficiently great that the formatted output functions ",[46,57,58],{},"{{sprintf()"," and ",[46,61,62],{},"printf()"," should never be passed unsanitized format strings.",[65,66,68],"h2",{"id":67},"noncompliant-code-example","Noncompliant Code Example",[39,70,71],{},"This noncompliant code example tries to authenticate a user by having the user supply a password and granting access only if the password is correct.",[73,74,76],"code-block",{"quality":75},"bad",[77,78,83],"pre",{"className":79,"code":80,"language":81,"meta":82,"style":82},"language-perl shiki shiki-themes github-light github-dark monokai","my $host = `hostname`;\nchop($host);\nmy $prompt = \"$ENV{USER}\\@$host\";\n\nsub validate_password {\n  my ($password) = @_;\n  my $is_ok = ($password eq \"goodpass\");\n  printf \"$prompt: Password ok? %d\\n\", $is_ok;\n  return $is_ok;\n};\n\n\nif (validate_password( $ARGV[0])) {\n  print \"$prompt: access granted\\n\";\n} else {\n  print \"$prompt: access denied\\n\";\n};\n","perl","",[46,84,85,105,115,143,149,163,172,189,215,224,230,235,240,249,268,279,297],{"__ignoreMap":82},[86,87,90,94,98,102],"span",{"class":88,"line":89},"line",1,[86,91,93],{"class":92},"sC2Qs","my",[86,95,97],{"class":96},"sMOD_"," $host = ",[86,99,101],{"class":100},"sstjo","`hostname`",[86,103,104],{"class":96},";\n",[86,106,108,112],{"class":88,"line":107},2,[86,109,111],{"class":110},"sTrkL","chop",[86,113,114],{"class":96},"($host);\n",[86,116,118,120,123,126,129,132,136,139,141],{"class":88,"line":117},3,[86,119,93],{"class":92},[86,121,122],{"class":96}," $prompt = ",[86,124,125],{"class":100},"\"",[86,127,128],{"class":96},"$ENV",[86,130,131],{"class":100},"{USER}",[86,133,135],{"class":134},"s7F3e","\\@",[86,137,138],{"class":96},"$host",[86,140,125],{"class":100},[86,142,104],{"class":96},[86,144,146],{"class":88,"line":145},4,[86,147,148],{"emptyLinePlaceholder":7},"\n",[86,150,152,156,160],{"class":88,"line":151},5,[86,153,155],{"class":154},"sq6CD","sub",[86,157,159],{"class":158},"srTi1"," validate_password",[86,161,162],{"class":96}," {\n",[86,164,166,169],{"class":88,"line":165},6,[86,167,168],{"class":92},"  my",[86,170,171],{"class":96}," ($password) = @_;\n",[86,173,175,177,180,183,186],{"class":88,"line":174},7,[86,176,168],{"class":92},[86,178,179],{"class":96}," $is_ok = ($password ",[86,181,182],{"class":110},"eq",[86,184,185],{"class":100}," \"goodpass\"",[86,187,188],{"class":96},");\n",[86,190,192,195,198,201,204,207,210,212],{"class":88,"line":191},8,[86,193,194],{"class":110},"  printf",[86,196,197],{"class":100}," \"",[86,199,200],{"class":96},"$prompt",[86,202,203],{"class":100},": Password ok? ",[86,205,206],{"class":96},"%d",[86,208,209],{"class":134},"\\n",[86,211,125],{"class":100},[86,213,214],{"class":96},", $is_ok;\n",[86,216,218,221],{"class":88,"line":217},9,[86,219,220],{"class":92},"  return",[86,222,223],{"class":96}," $is_ok;\n",[86,225,227],{"class":88,"line":226},10,[86,228,229],{"class":96},"};\n",[86,231,233],{"class":88,"line":232},11,[86,234,148],{"emptyLinePlaceholder":7},[86,236,238],{"class":88,"line":237},12,[86,239,148],{"emptyLinePlaceholder":7},[86,241,243,246],{"class":88,"line":242},13,[86,244,245],{"class":92},"if",[86,247,248],{"class":96}," (validate_password( $ARGV[0])) {\n",[86,250,252,255,257,259,262,264,266],{"class":88,"line":251},14,[86,253,254],{"class":110},"  print",[86,256,197],{"class":100},[86,258,200],{"class":96},[86,260,261],{"class":100},": access granted",[86,263,209],{"class":134},[86,265,125],{"class":100},[86,267,104],{"class":96},[86,269,271,274,277],{"class":88,"line":270},15,[86,272,273],{"class":96},"} ",[86,275,276],{"class":92},"else",[86,278,162],{"class":96},[86,280,282,284,286,288,291,293,295],{"class":88,"line":281},16,[86,283,254],{"class":110},[86,285,197],{"class":100},[86,287,200],{"class":96},[86,289,290],{"class":100},": access denied",[86,292,209],{"class":134},[86,294,125],{"class":100},[86,296,104],{"class":96},[86,298,300],{"class":88,"line":299},17,[86,301,229],{"class":96},[39,303,304],{},"The program works as expected as long as the user name and host name are benign:",[77,306,310],{"className":307,"code":308,"language":309,"meta":82,"style":82},"language-java shiki shiki-themes github-light github-dark monokai","user@host:~$ .\u002Fauthenticate.pl goodpass\nuser@host: Password ok? 1\nuser@host: access granted\nuser@host:~$ .\u002Fauthenticate.pl badpass\nuser@host: Password ok? 0\nuser@host: access denied\nuser@host:~$ \n","java",[46,311,312,331,353,364,379,396,407],{"__ignoreMap":82},[86,313,314,317,320,323,326,328],{"class":88,"line":89},[86,315,316],{"class":96},"user@",[86,318,319],{"class":154},"host",[86,321,322],{"class":92},":~",[86,324,325],{"class":96},"$ .",[86,327,6],{"class":92},[86,329,330],{"class":96},"authenticate.pl goodpass\n",[86,332,333,335,337,340,344,347,350],{"class":88,"line":107},[86,334,316],{"class":96},[86,336,319],{"class":154},[86,338,339],{"class":92},":",[86,341,343],{"class":342},"sk8M1"," Password",[86,345,346],{"class":96}," ok",[86,348,349],{"class":92},"?",[86,351,352],{"class":134}," 1\n",[86,354,355,357,359,361],{"class":88,"line":117},[86,356,316],{"class":96},[86,358,319],{"class":154},[86,360,339],{"class":92},[86,362,363],{"class":96}," access granted\n",[86,365,366,368,370,372,374,376],{"class":88,"line":145},[86,367,316],{"class":96},[86,369,319],{"class":154},[86,371,322],{"class":92},[86,373,325],{"class":96},[86,375,6],{"class":92},[86,377,378],{"class":96},"authenticate.pl badpass\n",[86,380,381,383,385,387,389,391,393],{"class":88,"line":151},[86,382,316],{"class":96},[86,384,319],{"class":154},[86,386,339],{"class":92},[86,388,343],{"class":342},[86,390,346],{"class":96},[86,392,349],{"class":92},[86,394,395],{"class":134}," 0\n",[86,397,398,400,402,404],{"class":88,"line":165},[86,399,316],{"class":96},[86,401,319],{"class":154},[86,403,339],{"class":92},[86,405,406],{"class":96}," access denied\n",[86,408,409,411,413,415],{"class":88,"line":174},[86,410,316],{"class":96},[86,412,319],{"class":154},[86,414,322],{"class":92},[86,416,417],{"class":96},"$\n",[39,419,420],{},"However, the program can be foiled by a malicious user name:",[77,422,424],{"className":307,"code":423,"language":309,"meta":82,"style":82},"user@host:~$ env USER=user%n .\u002Fauthenticate.pl badpass\nuser%n@host: Password ok? 0\nuser%n@host: access granted\nuser@host:~$ \n",[46,425,426,453,474,488],{"__ignoreMap":82},[86,427,428,430,432,434,437,440,443,446,449,451],{"class":88,"line":89},[86,429,316],{"class":96},[86,431,319],{"class":154},[86,433,322],{"class":92},[86,435,436],{"class":96},"$ env USER",[86,438,439],{"class":92},"=",[86,441,442],{"class":96},"user",[86,444,445],{"class":92},"%",[86,447,448],{"class":96},"n .",[86,450,6],{"class":92},[86,452,378],{"class":96},[86,454,455,457,459,462,464,466,468,470,472],{"class":88,"line":107},[86,456,442],{"class":96},[86,458,445],{"class":92},[86,460,461],{"class":96},"n@",[86,463,319],{"class":154},[86,465,339],{"class":92},[86,467,343],{"class":342},[86,469,346],{"class":96},[86,471,349],{"class":92},[86,473,395],{"class":134},[86,475,476,478,480,482,484,486],{"class":88,"line":117},[86,477,442],{"class":96},[86,479,445],{"class":92},[86,481,461],{"class":96},[86,483,319],{"class":154},[86,485,339],{"class":92},[86,487,363],{"class":96},[86,489,490,492,494,496],{"class":88,"line":145},[86,491,316],{"class":96},[86,493,319],{"class":154},[86,495,322],{"class":92},[86,497,417],{"class":96},[39,499,500,501,504,505,507,508,510,511,514,515,518,519,522],{},"In this invocation, the malicious user name ",[46,502,503],{},"user%n"," was incorporated into the ",[46,506,200],{}," string. When fed to the ",[46,509,62],{}," call inside ",[46,512,513],{},"validate_password()"," , the ",[46,516,517],{},"%n"," instructed Perl to fill the first format string argument with the number of characters printed, which caused Perl to set the ",[46,520,521],{},"$is_ok"," variable to 4. Since it is now nonzero, the program incorrectly grants access to the user.",[65,524,526,527,530],{"id":525},"compliant-solution-print","Compliant Solution ( ",[46,528,529],{},"print()"," )",[39,532,533,534,536,537,539],{},"This compliant solution avoids the use of ",[46,535,62],{}," , since ",[46,538,529],{}," provides sufficient functionality.",[73,541,543],{"quality":542},"good",[77,544,546],{"className":79,"code":545,"language":81,"meta":82,"style":82},"sub validate_password {\n  my ($password) = @_;\n  my $is_ok = ($password eq \"goodpass\");\n  print \"$prompt: Password ok? $is_ok\\n\";\n  return $is_ok;\n};\n\n# ...\n",[46,547,548,556,562,574,592,598,602,606],{"__ignoreMap":82},[86,549,550,552,554],{"class":88,"line":89},[86,551,155],{"class":154},[86,553,159],{"class":158},[86,555,162],{"class":96},[86,557,558,560],{"class":88,"line":107},[86,559,168],{"class":92},[86,561,171],{"class":96},[86,563,564,566,568,570,572],{"class":88,"line":117},[86,565,168],{"class":92},[86,567,179],{"class":96},[86,569,182],{"class":110},[86,571,185],{"class":100},[86,573,188],{"class":96},[86,575,576,578,580,582,584,586,588,590],{"class":88,"line":145},[86,577,254],{"class":110},[86,579,197],{"class":100},[86,581,200],{"class":96},[86,583,203],{"class":100},[86,585,521],{"class":96},[86,587,209],{"class":134},[86,589,125],{"class":100},[86,591,104],{"class":96},[86,593,594,596],{"class":88,"line":151},[86,595,220],{"class":92},[86,597,223],{"class":96},[86,599,600],{"class":88,"line":165},[86,601,229],{"class":96},[86,603,604],{"class":88,"line":174},[86,605,148],{"emptyLinePlaceholder":7},[86,607,608],{"class":88,"line":191},[86,609,611],{"class":610},"s8-w5","# ...\n",[65,613,615],{"id":614},"risk-assessment","Risk Assessment",[617,618,619,620,619,650],"table",{},"\n  ",[621,622,623,624,619],"thead",{},"\n    ",[625,626,627,628,627,632,627,635,627,638,627,641,627,644,627,647,623],"tr",{},"\n      ",[629,630,631],"th",{},"Rule",[629,633,634],{},"Severity",[629,636,637],{},"Likelihood",[629,639,640],{},"Detectable",[629,642,643],{},"Repairable",[629,645,646],{},"Priority",[629,648,649],{},"Level",[651,652,623,653,619],"tbody",{},[625,654,627,655,627,659,627,662,627,665,627,668,627,671,627,678,623],{},[656,657,658],"td",{},"IDS30-PL",[656,660,661],{},"high",[656,663,664],{},"probable",[656,666,667],{},"Yes",[656,669,670],{},"No",[656,672,674],{"style":673},"color: #e74c3c;",[675,676,677],"b",{},"P12",[656,679,680],{"style":673},[675,681,682],{},"L1",[65,684,686],{"id":685},"automated-detection","Automated Detection",[39,688,689],{},"Perl's taint mode provides partial detection of unsanitized input in format strings.",[39,691,692,693,695,696,699],{},"Perl's warnings can detect if a call to ",[46,694,62],{}," or ",[46,697,698],{},"sprintf()"," contains the wrong number of format string arguments.",[617,701,702,710],{},[621,703,704],{},[625,705,706,708],{},[629,707],{},[629,709],{},[651,711,712,720,728,736],{},[625,713,714,717],{},[656,715,716],{},"Tool",[656,718,719],{},"Diagnostic",[625,721,722,725],{},[656,723,724],{},"Warnings",[656,726,727],{},"Missing argument in .*printf",[625,729,730,733],{},[656,731,732],{},"Taint mode",[656,734,735],{},"Insecure dependency in .*printf",[625,737,738,744],{},[656,739,740],{},[51,741,743],{"href":742},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[656,745,746],{},"PERL_D90",[65,748,750],{"id":749},"related-guidelines","Related Guidelines",[617,752,753,761],{},[621,754,755],{},[625,756,757,759],{},[629,758],{},[629,760],{},[651,762,763,776,789,802],{},[625,764,765,770],{},[656,766,767],{},[51,768,769],{"href":17},"SEI CERT C Coding Standard",[656,771,772],{},[51,773,775],{"href":774},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio30-c","FIO30-C. Exclude user input from format strings",[625,777,778,783],{},[656,779,780],{},[51,781,782],{"href":20},"SEI CERT C++ Coding Standard",[656,784,785],{},[51,786,788],{"href":787},"\u002Fsei-cert-cpp-coding-standard\u002Fthe-void\u002Fvoid-fio30-cpp-exclude-user-input-from-format-strings","VOID FIO30-CPP. Exclude user input from format strings",[625,790,791,796],{},[656,792,793],{},[51,794,795],{"href":23},"CERT Oracle Secure Coding Standard for Java",[656,797,798],{},[51,799,801],{"href":800},"\u002Fsei-cert-oracle-coding-standard-for-java\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids06-j","IDS06-J. Exclude unsanitized user input from format strings",[625,803,804,812],{},[656,805,806],{},[51,807,811],{"href":808,"rel":809},"http:\u002F\u002Fcwe.mitre.org\u002F",[810],"nofollow","MITRE CWE",[656,813,814,819],{},[51,815,818],{"href":816,"rel":817},"http:\u002F\u002Fcwe.mitre.org\u002Fdata\u002Fdefinitions\u002F134.html",[810],"CWE-134"," , \"Uncontrolled format string\"",[65,821,823],{"id":822},"bibliography","Bibliography",[617,825,826,834],{},[621,827,828],{},[625,829,830,832],{},[629,831],{},[629,833],{},[651,835,836,853,862,877],{},[625,837,838,846],{},[656,839,840,841,845],{},"[ ",[51,842,844],{"href":843},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Christey2005","Christey 2005"," ]",[656,847,848],{},[51,849,852],{"href":850,"rel":851},"http:\u002F\u002Farchives.neohapsis.com\u002Farchives\u002Ffulldisclosure\u002F2005-12\u002F0066.html",[810],"Format string vulnerabilities in Perl programs",[625,854,855,859],{},[656,856,840,857,845],{},[51,858,54],{"href":53},[656,860,861],{},"Chapter 6, \"Formatted Output\"",[625,863,864,870],{},[656,865,840,866,845],{},[51,867,869],{"href":868},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-VU#948385","VU#948385",[656,871,872],{},[51,873,876],{"href":874,"rel":875},"https:\u002F\u002Fwww.kb.cert.org\u002Fvuls\u002Fid\u002F948385",[810],"Perl contains an integer sign error in format string processing",[625,878,879,885],{},[656,880,840,881,845],{},[51,882,884],{"href":883},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Wall2011","Wall 2011",[656,886,887],{},[51,888,891],{"href":889,"rel":890},"http:\u002F\u002Fperldoc.perl.org\u002Fperlfunc.html",[810],"perlfunc",[893,894],"hr",{},[39,896,897,904,905,904,910],{},[51,898,900],{"href":899},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002F",[901,902],"img",{"src":903},"\u002Fattachments\u002F88890562\u002F88892207.png"," ",[51,906,907],{"href":899},[901,908],{"src":909},"\u002Fattachments\u002F88890562\u002F88892209.png",[51,911,913],{"href":912},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids31-pl",[901,914],{"src":915},"\u002Fattachments\u002F88890562\u002F88892208.png",[917,918,919],"style",{},"html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sTrkL, html code.shiki .sTrkL{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}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 .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}html pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}",{"title":82,"searchDepth":107,"depth":107,"links":921},[922,923,925,926,927,928],{"id":67,"depth":107,"text":68},{"id":525,"depth":107,"text":924},"Compliant Solution ( print() )",{"id":614,"depth":107,"text":615},{"id":685,"depth":107,"text":686},{"id":749,"depth":107,"text":750},{"id":822,"depth":107,"text":823},"md",{"tags":931},[932,933],"ids","rule","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids30-pl",{"title":30,"description":41},"7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F2.ids30-pl","pu2vYON06XE_IR3yjghAOAbIeBAUqb59SqTPmuLLiQI",[939,943],{"title":940,"path":941,"stem":942,"children":-1},"Input Validation and Data Sanitization (IDS)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F1.index",{"title":944,"path":912,"stem":945,"children":-1},"IDS31-PL. Do not use the two-argument form of open()","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F3.ids31-pl",[947],{"title":948,"path":949,"stem":950,"children":951},"SEI CERT Perl Coding Standard","\u002Fsei-cert-perl-coding-standard","7.sei-cert-perl-coding-standard\u002F1.index",[952,953,1008,1131,1279],{"title":948,"path":949,"stem":950},{"title":954,"path":955,"stem":956,"children":957},"Front Matter","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F1.index",[958,959,963],{"title":954,"path":955,"stem":956},{"title":960,"path":961,"stem":962},"Deprecations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fdeprecations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F2.deprecations",{"title":964,"path":965,"stem":966,"children":967},"Introduction","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.index",[968,969,973,977,981,985,989,993,996,1000,1004],{"title":964,"path":965,"stem":966},{"title":970,"path":971,"stem":972},"Scope","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.scope",{"title":974,"path":975,"stem":976},"Tool Selection and Validation","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Ftool-selection-and-validation","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F02.tool-selection-and-validation",{"title":978,"path":979,"stem":980},"Rules versus Recommendations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frules-versus-recommendations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F03.rules-versus-recommendations",{"title":982,"path":983,"stem":984},"Development Process","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fdevelopment-process","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F04.development-process",{"title":986,"path":987,"stem":988},"Usage","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F05.usage",{"title":990,"path":991,"stem":992},"System Qualities","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fsystem-qualities","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F06.system-qualities",{"title":615,"path":994,"stem":995},"\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frisk-assessment","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F07.risk-assessment",{"title":997,"path":998,"stem":999},"Source Code Validation","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fsource-code-validation","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F08.source-code-validation",{"title":1001,"path":1002,"stem":1003},"Automatically Generated Code","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomatically-generated-code","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F09.automatically-generated-code",{"title":1005,"path":1006,"stem":1007},"Acknowledgements","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgements","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F11.acknowledgements",{"title":1009,"path":1010,"stem":1011,"children":1012},"Rules","\u002Fsei-cert-perl-coding-standard\u002Frules","7.sei-cert-perl-coding-standard\u002F3.rules\u002F1.index",[1013,1014,1032,1058,1068,1089,1093,1107,1117],{"title":1009,"path":1010,"stem":1011},{"title":1015,"path":1016,"stem":1017,"children":1018},"Declarations and Initialization (DCL)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F2.declarations-and-initialization-dcl\u002F1.index",[1019,1020,1024,1028],{"title":1015,"path":1016,"stem":1017},{"title":1021,"path":1022,"stem":1023},"DCL30-PL. Do not import deprecated modules","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F2.declarations-and-initialization-dcl\u002F2.dcl30-pl",{"title":1025,"path":1026,"stem":1027},"DCL31-PL. Do not overload reserved keywords or subroutines","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F2.declarations-and-initialization-dcl\u002F3.dcl31-pl",{"title":1029,"path":1030,"stem":1031},"DCL33-PL. Declare identifiers before using them","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl33-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F2.declarations-and-initialization-dcl\u002F4.dcl33-pl",{"title":1033,"path":1034,"stem":1035,"children":1036},"Expressions (EXP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F1.index",[1037,1038,1042,1046,1050,1054],{"title":1033,"path":1034,"stem":1035},{"title":1039,"path":1040,"stem":1041},"EXP30-PL. Do not use deprecated or obsolete functions or modules","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F2.exp30-pl",{"title":1043,"path":1044,"stem":1045},"EXP31-PL. Do not suppress or ignore exceptions","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F3.exp31-pl",{"title":1047,"path":1048,"stem":1049},"EXP32-PL. Do not ignore function return values","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp32-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F4.exp32-pl",{"title":1051,"path":1052,"stem":1053},"EXP33-PL. Do not invoke a function in a context for which it is not defined","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp33-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F5.exp33-pl",{"title":1055,"path":1056,"stem":1057},"EXP35-PL. Use the correct operator type for comparing values","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp35-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F6.exp35-pl",{"title":1059,"path":1060,"stem":1061,"children":1062},"File Input and Output (FIO)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Ffile-input-and-output-fio","7.sei-cert-perl-coding-standard\u002F3.rules\u002F4.file-input-and-output-fio\u002F1.index",[1063,1064],{"title":1059,"path":1060,"stem":1061},{"title":1065,"path":1066,"stem":1067},"FIO30-PL. Use compatible character encodings when performing network or file I\u002FO","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Ffile-input-and-output-fio\u002Ffio30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F4.file-input-and-output-fio\u002F2.fio30-pl",{"title":940,"path":941,"stem":942,"children":1069},[1070,1071,1072,1073,1077,1081,1085],{"title":940,"path":941,"stem":942},{"title":30,"path":934,"stem":936},{"title":944,"path":912,"stem":945},{"title":1074,"path":1075,"stem":1076},"IDS32-PL. Validate any integer that is used as an array index","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids32-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F4.ids32-pl",{"title":1078,"path":1079,"stem":1080},"IDS33-PL. Sanitize untrusted data passed across a trust boundary","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids33-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F5.ids33-pl",{"title":1082,"path":1083,"stem":1084},"IDS34-PL. Do not pass untrusted, unsanitized data to a command interpreter","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids34-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F6.ids34-pl",{"title":1086,"path":1087,"stem":1088},"IDS35-PL. Do not invoke the eval form with a string argument","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids35-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F7.ids35-pl",{"title":1090,"path":1091,"stem":1092},"Integers (INT)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F3.rules\u002F6.integers-int",{"title":1094,"path":1095,"stem":1096,"children":1097},"Miscellaneous (MSC)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F1.index",[1098,1099,1103],{"title":1094,"path":1095,"stem":1096},{"title":1100,"path":1101,"stem":1102},"MSC31-PL. Do not embed global statements","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F2.msc31-pl",{"title":1104,"path":1105,"stem":1106},"MSC32-PL. Do not provide a module's version value from outside the module","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc32-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F3.msc32-pl",{"title":1108,"path":1109,"stem":1110,"children":1111},"Object-Oriented Programming (OOP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fobject-oriented-programming-oop","7.sei-cert-perl-coding-standard\u002F3.rules\u002F8.object-oriented-programming-oop\u002F1.index",[1112,1113],{"title":1108,"path":1109,"stem":1110},{"title":1114,"path":1115,"stem":1116},"OOP32-PL. Prohibit indirect object call syntax","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop32-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F8.object-oriented-programming-oop\u002F2.oop32-pl",{"title":1118,"path":1119,"stem":1120,"children":1121},"Strings (STR)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F1.index",[1122,1123,1127],{"title":1118,"path":1119,"stem":1120},{"title":1124,"path":1125,"stem":1126},"STR30-PL. Capture variables should be read only immediately after a successful regex match","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str\u002Fstr30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F2.str30-pl",{"title":1128,"path":1129,"stem":1130},"STR31-PL. Do not pass string literals to functions expecting regexes","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str\u002Fstr31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F3.str31-pl",{"title":1132,"path":1133,"stem":1134,"children":1135},"Recommendations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F1.index",[1136,1137,1166,1199,1212,1225,1238,1263,1276],{"title":1132,"path":1133,"stem":1134},{"title":1015,"path":1138,"stem":1139,"children":1140},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F1.index",[1141,1142,1146,1150,1154,1158,1162],{"title":1015,"path":1138,"stem":1139},{"title":1143,"path":1144,"stem":1145},"DCL00-PL. Do not use subroutine prototypes","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F2.dcl00-pl",{"title":1147,"path":1148,"stem":1149},"DCL01-PL. Do not reuse variable names in subscopes","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F3.dcl01-pl",{"title":1151,"path":1152,"stem":1153},"DCL02-PL. Any modified punctuation variable should be declared local","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl02-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F4.dcl02-pl",{"title":1155,"path":1156,"stem":1157},"DCL03-PL. Do not read a foreach iterator variable after the loop has completed","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl03-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F5.dcl03-pl",{"title":1159,"path":1160,"stem":1161},"DCL04-PL. Always initialize local variables","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl04-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F6.dcl04-pl",{"title":1163,"path":1164,"stem":1165},"DCL05-PL. Prohibit Perl4 package names","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl05-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F7.dcl05-pl",{"title":1033,"path":1167,"stem":1168,"children":1169},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F1.index",[1170,1171,1175,1179,1183,1187,1191,1195],{"title":1033,"path":1167,"stem":1168},{"title":1172,"path":1173,"stem":1174},"EXP00-PL. Do not return undef","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F2.exp00-pl",{"title":1176,"path":1177,"stem":1178},"EXP01-PL. Do not depend on the return value of functions that lack a return statement","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F3.exp01-pl",{"title":1180,"path":1181,"stem":1182},"EXP03-PL. Do not diminish the benefits of constants by assuming their values in expressions","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp03-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F4.exp03-pl",{"title":1184,"path":1185,"stem":1186},"EXP04-PL. Do not mix the early-precedence logical operators with late-precedence logical operators","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp04-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F5.exp04-pl",{"title":1188,"path":1189,"stem":1190},"EXP06-PL. Do not use an array in an implicit scalar context","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp06-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F6.exp06-pl",{"title":1192,"path":1193,"stem":1194},"EXP07-PL. Do not modify $_ in list or sorting functions","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp07-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F7.exp07-pl",{"title":1196,"path":1197,"stem":1198},"EXP08-PL. Do not use the one-argument form of select()","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp08-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F8.exp08-pl",{"title":1059,"path":1200,"stem":1201,"children":1202},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Ffile-input-and-output-fio","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F4.file-input-and-output-fio\u002F1.index",[1203,1204,1208],{"title":1059,"path":1200,"stem":1201},{"title":1205,"path":1206,"stem":1207},"FIO00-PL. Do not use bareword file handles","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Ffile-input-and-output-fio\u002Ffio00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F4.file-input-and-output-fio\u002F2.fio00-pl",{"title":1209,"path":1210,"stem":1211},"FIO01-PL. Do not operate on files that can be modified by untrusted users","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Ffile-input-and-output-fio\u002Ffio01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F4.file-input-and-output-fio\u002F3.fio01-pl",{"title":940,"path":1213,"stem":1214,"children":1215},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Finput-validation-and-data-sanitization-ids","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F5.input-validation-and-data-sanitization-ids\u002F1.index",[1216,1217,1221],{"title":940,"path":1213,"stem":1214},{"title":1218,"path":1219,"stem":1220},"IDS00-PL. Canonicalize path names before validating them","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Finput-validation-and-data-sanitization-ids\u002Fids00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F5.input-validation-and-data-sanitization-ids\u002F2.ids00-pl",{"title":1222,"path":1223,"stem":1224},"IDS01-PL. Use taint mode while being aware of its limitations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Finput-validation-and-data-sanitization-ids\u002Fids01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F5.input-validation-and-data-sanitization-ids\u002F3.ids01-pl",{"title":1090,"path":1226,"stem":1227,"children":1228},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F1.index",[1229,1230,1234],{"title":1090,"path":1226,"stem":1227},{"title":1231,"path":1232,"stem":1233},"INT00-PL. Do not prepend leading zeroes to integer literals","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002Fint00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F2.int00-pl",{"title":1235,"path":1236,"stem":1237},"INT01-PL. Use small integers when precise computation is required","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002Fint01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F3.int01-pl",{"title":1094,"path":1239,"stem":1240,"children":1241},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F1.index",[1242,1243,1247,1251,1255,1259],{"title":1094,"path":1239,"stem":1240},{"title":1244,"path":1245,"stem":1246},"MSC00-PL. Detect and remove dead code","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F2.msc00-pl",{"title":1248,"path":1249,"stem":1250},"MSC01-PL. Detect and remove unused variables","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F3.msc01-pl",{"title":1252,"path":1253,"stem":1254},"MSC02-PL. Run programs with full warnings and strict checking","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc02-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F4.msc02-pl",{"title":1256,"path":1257,"stem":1258},"MSC03-PL. Do not use select() to sleep","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc03-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F5.msc03-pl",{"title":1260,"path":1261,"stem":1262},"MSC04-PL. Do not use comma to separate statements","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc04-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F6.msc04-pl",{"title":1108,"path":1264,"stem":1265,"children":1266},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F8.object-oriented-programming-oop\u002F1.index",[1267,1268,1272],{"title":1108,"path":1264,"stem":1265},{"title":1269,"path":1270,"stem":1271},"OOP00-PL. Do not signify inheritence at runtime","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop\u002Foop00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F8.object-oriented-programming-oop\u002F2.oop00-pl",{"title":1273,"path":1274,"stem":1275},"OOP01-PL. Do not access private variables or subroutines in other packages","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop\u002Foop01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F8.object-oriented-programming-oop\u002F3.oop01-pl",{"title":1118,"path":1277,"stem":1278},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F9.strings-str",{"title":1280,"path":1281,"stem":1282,"children":1283},"Back Matter","\u002Fsei-cert-perl-coding-standard\u002Fback-matter","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F1.index",[1284,1285,1289,1317],{"title":1280,"path":1281,"stem":1282},{"title":1286,"path":1287,"stem":1288},"AA. Bibliography","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F2.aa-bibliography",{"title":1290,"path":1291,"stem":1292,"children":1293},"BB. Analyzers","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F1.index",[1294,1295,1299,1303,1307,1311,1313],{"title":1290,"path":1291,"stem":1292},{"title":1296,"path":1297,"stem":1298},"Critic","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fcritic","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F2.critic",{"title":1300,"path":1301,"stem":1302},"Critic_V","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fcritic_v","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F3.critic_v",{"title":1304,"path":1305,"stem":1306},"Lint","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Flint","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F4.lint",{"title":1308,"path":1309,"stem":1310},"Lint_V","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Flint_v","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F5.lint_v",{"title":743,"path":742,"stem":1312},"7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F6.security-reviewer-static-reviewer",{"title":1314,"path":1315,"stem":1316},"Security Reviewer - Static Reviewer_V","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fsecurity-reviewer-static-reviewer_v","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F7.security-reviewer-static-reviewer_v",{"title":1318,"path":1319,"stem":1320},"CC. Risk Assessments","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fcc-risk-assessments","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F4.cc-risk-assessments",1775657793486]