Module Name: src Committed By: darrenr Date: Sun Jun 29 08:53:08 UTC 2014
Modified Files: src/external/bsd/ipf/dist/tools: ipf_y.y Log Message: #551 ipf.conf address structure not properly zero filled To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/bsd/ipf/dist/tools/ipf_y.y Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/bsd/ipf/dist/tools/ipf_y.y diff -u src/external/bsd/ipf/dist/tools/ipf_y.y:1.2 src/external/bsd/ipf/dist/tools/ipf_y.y:1.3 --- src/external/bsd/ipf/dist/tools/ipf_y.y:1.2 Thu Jun 12 17:23:06 2014 +++ src/external/bsd/ipf/dist/tools/ipf_y.y Sun Jun 29 08:53:08 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ipf_y.y,v 1.2 2014/06/12 17:23:06 christos Exp $ */ +/* $NetBSD: ipf_y.y,v 1.3 2014/06/29 08:53:08 darrenr Exp $ */ /* * Copyright (C) 2012 by Darren Reed. @@ -1022,12 +1022,13 @@ addr: pool '/' YY_NUMBER { pooled = 1; yyexpectaddr = 0; } ; -ipaddr: IPFY_ANY { bzero(&($$), sizeof($$)); +ipaddr: IPFY_ANY { memset(&($$), 0, sizeof($$)); $$.type = FRI_NORMAL; $$.ifpos = -1; yyexpectaddr = 0; } - | hostname { $$.a = $1.adr; + | hostname { memset(&($$), 0, sizeof($$)); + $$.a = $1.adr; $$.f = $1.f; if ($1.f == AF_INET6) fill6bits(128, $$.m.i6); @@ -1040,7 +1041,8 @@ ipaddr: IPFY_ANY { bzero(&($$), sizeof | hostname { yyresetdict(); } maskspace { yysetdict(maskwords); yyexpectaddr = 2; } - ipmask { ntomask($1.f, $5, $$.m.i6); + ipmask { memset(&($$), 0, sizeof($$)); + ntomask($1.f, $5, $$.m.i6); $$.a = $1.adr; $$.a.i6[0] &= $$.m.i6[0]; $$.a.i6[1] &= $$.m.i6[1]; @@ -1062,7 +1064,8 @@ ipaddr: IPFY_ANY { bzero(&($$), sizeof yyresetdict(); yyexpectaddr = 0; } - | '(' YY_STR ')' { $$.type = FRI_DYNAMIC; + | '(' YY_STR ')' { memset(&($$), 0, sizeof($$)); + $$.type = FRI_DYNAMIC; ifpflag = FRI_DYNAMIC; $$.ifpos = addname(&fr, $2); $$.lif = 0; @@ -1070,7 +1073,8 @@ ipaddr: IPFY_ANY { bzero(&($$), sizeof | '(' YY_STR ')' '/' { ifpflag = FRI_DYNAMIC; yysetdict(maskwords); } maskopts - { $$.type = ifpflag; + { memset(&($$), 0, sizeof($$)); + $$.type = ifpflag; $$.ifpos = addname(&fr, $2); $$.lif = 0; if (frc->fr_family == AF_UNSPEC) @@ -1085,7 +1089,8 @@ ipaddr: IPFY_ANY { bzero(&($$), sizeof | '(' YY_STR ':' YY_NUMBER ')' '/' { ifpflag = FRI_DYNAMIC; yysetdict(maskwords); } maskopts - { $$.type = ifpflag; + { memset(&($$), 0, sizeof($$)); + $$.type = ifpflag; $$.ifpos = addname(&fr, $2); $$.lif = $4; if (frc->fr_family == AF_UNSPEC) @@ -1144,30 +1149,35 @@ maskopts: ; hostname: - ipv4 { $$.adr.in4 = $1; + ipv4 { memset(&($$), 0, sizeof($$)); + $$.adr.in4 = $1; if (frc->fr_family == AF_INET6) YYERROR; $$.f = AF_INET; yyexpectaddr = 2; } - | YY_NUMBER { if (frc->fr_family == AF_INET6) + | YY_NUMBER { memset(&($$), 0, sizeof($$)); + if (frc->fr_family == AF_INET6) YYERROR; $$.adr.in4_addr = $1; $$.f = AF_INET; yyexpectaddr = 2; } - | YY_HEX { if (frc->fr_family == AF_INET6) + | YY_HEX { memset(&($$), 0, sizeof($$)); + if (frc->fr_family == AF_INET6) YYERROR; $$.adr.in4_addr = $1; $$.f = AF_INET; yyexpectaddr = 2; } - | YY_STR { if (lookuphost($1, &$$.adr) == 0) + | YY_STR { memset(&($$), 0, sizeof($$)); + if (lookuphost($1, &$$.adr) == 0) $$.f = AF_INET; free($1); yyexpectaddr = 2; } - | YY_IPV6 { if (frc->fr_family == AF_INET) + | YY_IPV6 { memset(&($$), 0, sizeof($$)); + if (frc->fr_family == AF_INET) YYERROR; $$.adr = $1; $$.f = AF_INET6;