[{"data":1,"prerenderedAt":883},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002Fint01-pl":28,"surround-\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002Fint01-pl":498,"sidebar-sei-cert-perl-coding-standard":506},[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":489,"meta":490,"navigation":7,"path":494,"seo":495,"stem":496,"__hash__":497},"content\u002F7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F3.int01-pl.md","INT01-PL. Use small integers when precise computation is required",{"type":32,"value":33,"toc":481},"minimark",[34,38,42,47,50,58,132,136,144,199,202,219,222,225,276,278,298,302,305,376,381,452,455,477],[35,36,30],"h1",{"id":37},"int01-pl-use-small-integers-when-precise-computation-is-required",[39,40,41],"p",{},"Perl does not distinguish between integer and floating-point numbers when doing arithmetic. Machine Arithmetic where the operands and the result are all integral is accurate as long as all values can be properly represented by the platform. Unfortunately, floating-point arithmetic is inherently imprecise, and can trip programmers who are not aware of its usage.",[43,44,46],"h2",{"id":45},"noncompliant-code-example","Noncompliant Code Example",[39,48,49],{},"This noncompliant code example appears to print ten very large numbers, and on 64-bit machines, it indeed does so.",[39,51,52,53,57],{},"However, when run on a 32-bit machine, the loop will never terminate. This is because the numbers, while integral, are too large to be represented internally as integers, so they are represented as 32-bit floating-point numbers. Even with 24-bit mantissas, the numbers are too large for an increment of 1 to be noticed. Consequently, the program forever prints out the number ",[54,55,56],"code",{},"1e+16"," .",[59,60,62],"code-block",{"quality":61},"bad",[63,64,69],"pre",{"className":65,"code":66,"language":67,"meta":68,"style":68},"language-perl shiki shiki-themes github-light github-dark monokai","my $x = 10000000000000000;  # 1e+16\nfor (my $y = $x; $y \u003C= $x + 5; $y += 1) {\n  print \"$y\\n\";\n}\n","perl","",[54,70,71,88,102,126],{"__ignoreMap":68},[72,73,76,80,84],"span",{"class":74,"line":75},"line",1,[72,77,79],{"class":78},"sC2Qs","my",[72,81,83],{"class":82},"sMOD_"," $x = 10000000000000000;  ",[72,85,87],{"class":86},"s8-w5","# 1e+16\n",[72,89,91,94,97,99],{"class":74,"line":90},2,[72,92,93],{"class":78},"for",[72,95,96],{"class":82}," (",[72,98,79],{"class":78},[72,100,101],{"class":82}," $y = $x; $y \u003C= $x + 5; $y += 1) {\n",[72,103,105,109,113,116,120,123],{"class":74,"line":104},3,[72,106,108],{"class":107},"sTrkL","  print",[72,110,112],{"class":111},"sstjo"," \"",[72,114,115],{"class":82},"$y",[72,117,119],{"class":118},"s7F3e","\\n",[72,121,122],{"class":111},"\"",[72,124,125],{"class":82},";\n",[72,127,129],{"class":74,"line":128},4,[72,130,131],{"class":82},"}\n",[43,133,135],{"id":134},"compliant-solution","Compliant Solution",[39,137,138,139,143],{},"This compliant solution ensures that the loop counter computation involves numbers less than 2 ",[140,141,142],"sup",{},"48"," (that is, 281,474,976,710,656).",[59,145,147],{"quality":146},"good",[63,148,150],{"className":65,"code":149,"language":67,"meta":68,"style":68},"my $x = 10000000000000000;  # 1e+16\nfor (my $y = 0; $y \u003C= 5; $y += 1) {\n  my $z = $x + $y;\n  print \"$z\\n\";\n}\n",[54,151,152,160,171,179,194],{"__ignoreMap":68},[72,153,154,156,158],{"class":74,"line":75},[72,155,79],{"class":78},[72,157,83],{"class":82},[72,159,87],{"class":86},[72,161,162,164,166,168],{"class":74,"line":90},[72,163,93],{"class":78},[72,165,96],{"class":82},[72,167,79],{"class":78},[72,169,170],{"class":82}," $y = 0; $y \u003C= 5; $y += 1) {\n",[72,172,173,176],{"class":74,"line":104},[72,174,175],{"class":78},"  my",[72,177,178],{"class":82}," $z = $x + $y;\n",[72,180,181,183,185,188,190,192],{"class":74,"line":128},[72,182,108],{"class":107},[72,184,112],{"class":111},[72,186,187],{"class":82},"$z",[72,189,119],{"class":118},[72,191,122],{"class":111},[72,193,125],{"class":82},[72,195,197],{"class":74,"line":196},5,[72,198,131],{"class":82},[39,200,201],{},"On a 32-bit machine, this program terminates normally after printing the following:",[203,204,205],"blockquote",{},[39,206,56,207,210,211,210,213,210,215,210,217,210],{},[208,209],"br",{},"\n1e+16",[208,212],{},[208,214],{},[208,216],{},[208,218],{},[43,220,135],{"id":221},"compliant-solution-1",[39,223,224],{},"This compliant solution uses the Bignum module to ensure precise computation. The Bignum module is available in CPAN, but became part of Perl's standard library for version 5.8.",[59,226,227],{"quality":146},[63,228,230],{"className":65,"code":229,"language":67,"meta":68,"style":68},"use bignum;\nmy $x = 10000000000000000;  # 1e+16\nfor (my $y = $x; $y \u003C= $x + 5; $y += 1) {\n  print \"$y\\n\";\n}\n",[54,231,232,240,248,258,272],{"__ignoreMap":68},[72,233,234,237],{"class":74,"line":75},[72,235,236],{"class":78},"use",[72,238,239],{"class":82}," bignum;\n",[72,241,242,244,246],{"class":74,"line":90},[72,243,79],{"class":78},[72,245,83],{"class":82},[72,247,87],{"class":86},[72,249,250,252,254,256],{"class":74,"line":104},[72,251,93],{"class":78},[72,253,96],{"class":82},[72,255,79],{"class":78},[72,257,101],{"class":82},[72,259,260,262,264,266,268,270],{"class":74,"line":128},[72,261,108],{"class":107},[72,263,112],{"class":111},[72,265,115],{"class":82},[72,267,119],{"class":118},[72,269,122],{"class":111},[72,271,125],{"class":82},[72,273,274],{"class":74,"line":196},[72,275,131],{"class":82},[39,277,201],{},[203,279,280],{},[39,281,282,283,285,286,288,289,291,292,294,295,297],{},"10000000000000000",[208,284],{},"\n10000000000000001",[208,287],{},"\n10000000000000002",[208,290],{},"\n10000000000000003",[208,293],{},"\n10000000000000004",[208,296],{},"\n10000000000000005",[43,299,301],{"id":300},"risk-assessment","Risk Assessment",[39,303,304],{},"Failing to understand the limitations of floating-point numbers can result in unexpected computational results and exceptional conditions, possibly resulting in a violation of data integrity.",[306,307,308,327],"table",{},[309,310,311],"thead",{},[312,313,314,317,319,321,323,325],"tr",{},[315,316],"th",{},[315,318],{},[315,320],{},[315,322],{},[315,324],{},[315,326],{},[328,329,330,351],"tbody",{},[312,331,332,336,339,342,345,348],{},[333,334,335],"td",{},"Recommendation",[333,337,338],{},"Severity",[333,340,341],{},"Likelihood",[333,343,344],{},"Remediation Cost",[333,346,347],{},"Priority",[333,349,350],{},"Level",[312,352,353,356,359,362,365,371],{},[333,354,355],{},"INT01-PL",[333,357,358],{},"medium",[333,360,361],{},"probable",[333,363,364],{},"high",[333,366,367],{},[368,369,370],"strong",{},"P4",[333,372,373],{},[368,374,375],{},"L3",[377,378,380],"h3",{"id":379},"bibliography","Bibliography",[306,382,383,391],{},[309,384,385],{},[312,386,387,389],{},[315,388],{},[315,390],{},[328,392,393,412,422,437],{},[312,394,395,404],{},[333,396,397,398,403],{},"[ ",[399,400,402],"a",{"href":401},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AABibliography-Gough2005","Gough 2005"," ]",[333,405,406],{},[399,407,411],{"href":408,"rel":409},"http:\u002F\u002Fwww.network-theory.co.uk\u002Fdocs\u002Fgccintro\u002Fgccintro_70.html",[410],"nofollow","Section 8.6, \"Floating-point issues\"",[312,413,414,420],{},[333,415,397,416,403],{},[399,417,419],{"href":418},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AABibliography-IEEE7542006","IEEE 754 2006",[333,421],{},[312,423,424,430],{},[333,425,397,426,403],{},[399,427,429],{"href":428},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AABibliography-CPAN","CPAN",[333,431,432],{},[399,433,436],{"href":434,"rel":435},"http:\u002F\u002Fsearch.cpan.org\u002F~flora\u002Fbignum-0.30\u002Flib\u002Fbignum.pm",[410],"Florian Ragwitz, bignum",[312,438,439,445],{},[333,440,397,441,403],{},[399,442,444],{"href":443},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AABibliography-Meta+CPAN","Meta CPAN",[333,446,447],{},[399,448,451],{"href":449,"rel":450},"http:\u002F\u002Fperldoc.perl.org\u002Fperlnumber.html",[410],"perlnumber",[453,454],"hr",{},[39,456,457,464,465,464,471],{},[399,458,460],{"href":459},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002Fint00-pl",[461,462],"img",{"src":463},"\u002Fattachments\u002F88890562\u002F88892207.png"," ",[399,466,468],{"href":467},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002F",[461,469],{"src":470},"\u002Fattachments\u002F88890562\u002F88892209.png",[399,472,474],{"href":473},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002F",[461,475],{"src":476},"\u002Fattachments\u002F88890562\u002F88892208.png",[478,479,480],"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 .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}html pre.shiki code .sTrkL, html code.shiki .sTrkL{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}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);}",{"title":68,"searchDepth":90,"depth":90,"links":482},[483,484,485,486],{"id":45,"depth":90,"text":46},{"id":134,"depth":90,"text":135},{"id":221,"depth":90,"text":135},{"id":300,"depth":90,"text":301,"children":487},[488],{"id":379,"depth":104,"text":380},"md",{"tags":491},[492,493],"int","recommendation","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002Fint01-pl",{"title":30,"description":41},"7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F3.int01-pl","MqwYt7ac8e-E2bt3n2Nt-Ui5B57yMZ0fEKrSRzOyhxw",[499,502],{"title":500,"path":459,"stem":501,"children":-1},"INT00-PL. Do not prepend leading zeroes to integer literals","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F2.int00-pl",{"title":503,"path":504,"stem":505,"children":-1},"Miscellaneous (MSC)","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F1.index",[507],{"title":508,"path":509,"stem":510,"children":511},"SEI CERT Perl Coding Standard","\u002Fsei-cert-perl-coding-standard","7.sei-cert-perl-coding-standard\u002F1.index",[512,513,568,699,839],{"title":508,"path":509,"stem":510},{"title":514,"path":515,"stem":516,"children":517},"Front Matter","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F1.index",[518,519,523],{"title":514,"path":515,"stem":516},{"title":520,"path":521,"stem":522},"Deprecations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fdeprecations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F2.deprecations",{"title":524,"path":525,"stem":526,"children":527},"Introduction","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.index",[528,529,533,537,541,545,549,553,556,560,564],{"title":524,"path":525,"stem":526},{"title":530,"path":531,"stem":532},"Scope","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.scope",{"title":534,"path":535,"stem":536},"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":538,"path":539,"stem":540},"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":542,"path":543,"stem":544},"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":546,"path":547,"stem":548},"Usage","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F05.usage",{"title":550,"path":551,"stem":552},"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":301,"path":554,"stem":555},"\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":557,"path":558,"stem":559},"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":561,"path":562,"stem":563},"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":565,"path":566,"stem":567},"Acknowledgements","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgements","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F11.acknowledgements",{"title":569,"path":570,"stem":571,"children":572},"Rules","\u002Fsei-cert-perl-coding-standard\u002Frules","7.sei-cert-perl-coding-standard\u002F3.rules\u002F1.index",[573,574,592,618,628,658,662,675,685],{"title":569,"path":570,"stem":571},{"title":575,"path":576,"stem":577,"children":578},"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",[579,580,584,588],{"title":575,"path":576,"stem":577},{"title":581,"path":582,"stem":583},"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":585,"path":586,"stem":587},"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":589,"path":590,"stem":591},"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":593,"path":594,"stem":595,"children":596},"Expressions (EXP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F1.index",[597,598,602,606,610,614],{"title":593,"path":594,"stem":595},{"title":599,"path":600,"stem":601},"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":603,"path":604,"stem":605},"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":607,"path":608,"stem":609},"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":611,"path":612,"stem":613},"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":615,"path":616,"stem":617},"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":619,"path":620,"stem":621,"children":622},"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",[623,624],{"title":619,"path":620,"stem":621},{"title":625,"path":626,"stem":627},"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":629,"path":630,"stem":631,"children":632},"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",[633,634,638,642,646,650,654],{"title":629,"path":630,"stem":631},{"title":635,"path":636,"stem":637},"IDS30-PL. Exclude user input from format strings","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F2.ids30-pl",{"title":639,"path":640,"stem":641},"IDS31-PL. Do not use the two-argument form of open()","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F3.ids31-pl",{"title":643,"path":644,"stem":645},"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":647,"path":648,"stem":649},"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":651,"path":652,"stem":653},"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":655,"path":656,"stem":657},"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":659,"path":660,"stem":661},"Integers (INT)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F3.rules\u002F6.integers-int",{"title":503,"path":663,"stem":664,"children":665},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F1.index",[666,667,671],{"title":503,"path":663,"stem":664},{"title":668,"path":669,"stem":670},"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":672,"path":673,"stem":674},"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":676,"path":677,"stem":678,"children":679},"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",[680,681],{"title":676,"path":677,"stem":678},{"title":682,"path":683,"stem":684},"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":686,"path":687,"stem":688,"children":689},"Strings (STR)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F1.index",[690,691,695],{"title":686,"path":687,"stem":688},{"title":692,"path":693,"stem":694},"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":696,"path":697,"stem":698},"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":700,"path":701,"stem":702,"children":703},"Recommendations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F1.index",[704,705,734,767,780,793,800,823,836],{"title":700,"path":701,"stem":702},{"title":575,"path":706,"stem":707,"children":708},"\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",[709,710,714,718,722,726,730],{"title":575,"path":706,"stem":707},{"title":711,"path":712,"stem":713},"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":715,"path":716,"stem":717},"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":719,"path":720,"stem":721},"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":723,"path":724,"stem":725},"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":727,"path":728,"stem":729},"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":731,"path":732,"stem":733},"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":593,"path":735,"stem":736,"children":737},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F1.index",[738,739,743,747,751,755,759,763],{"title":593,"path":735,"stem":736},{"title":740,"path":741,"stem":742},"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":744,"path":745,"stem":746},"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":748,"path":749,"stem":750},"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":752,"path":753,"stem":754},"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":756,"path":757,"stem":758},"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":760,"path":761,"stem":762},"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":764,"path":765,"stem":766},"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":619,"path":768,"stem":769,"children":770},"\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",[771,772,776],{"title":619,"path":768,"stem":769},{"title":773,"path":774,"stem":775},"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":777,"path":778,"stem":779},"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":629,"path":781,"stem":782,"children":783},"\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",[784,785,789],{"title":629,"path":781,"stem":782},{"title":786,"path":787,"stem":788},"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":790,"path":791,"stem":792},"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":659,"path":794,"stem":795,"children":796},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F1.index",[797,798,799],{"title":659,"path":794,"stem":795},{"title":500,"path":459,"stem":501},{"title":30,"path":494,"stem":496},{"title":503,"path":504,"stem":505,"children":801},[802,803,807,811,815,819],{"title":503,"path":504,"stem":505},{"title":804,"path":805,"stem":806},"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":808,"path":809,"stem":810},"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":812,"path":813,"stem":814},"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":816,"path":817,"stem":818},"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":820,"path":821,"stem":822},"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":676,"path":824,"stem":825,"children":826},"\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",[827,828,832],{"title":676,"path":824,"stem":825},{"title":829,"path":830,"stem":831},"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":833,"path":834,"stem":835},"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":686,"path":837,"stem":838},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F9.strings-str",{"title":840,"path":841,"stem":842,"children":843},"Back Matter","\u002Fsei-cert-perl-coding-standard\u002Fback-matter","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F1.index",[844,845,849,879],{"title":840,"path":841,"stem":842},{"title":846,"path":847,"stem":848},"AA. Bibliography","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F2.aa-bibliography",{"title":850,"path":851,"stem":852,"children":853},"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",[854,855,859,863,867,871,875],{"title":850,"path":851,"stem":852},{"title":856,"path":857,"stem":858},"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":860,"path":861,"stem":862},"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":864,"path":865,"stem":866},"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":868,"path":869,"stem":870},"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":872,"path":873,"stem":874},"Security Reviewer - Static Reviewer","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fsecurity-reviewer-static-reviewer","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F6.security-reviewer-static-reviewer",{"title":876,"path":877,"stem":878},"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":880,"path":881,"stem":882},"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",1775657795059]