diff options
author | Clifford Wolf <clifford@clifford.at> | 2019-12-01 16:30:48 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-01 16:30:48 -0800 |
commit | cacf870d85c6b19609da4de018a7cc373da6d638 (patch) | |
tree | 708aec55e8aa361392552efab50d21682b8aaac5 | |
parent | 5f4c35c7535f5a595d4e4f1adbd23b9bd594e205 (diff) | |
parent | 0ce22cea465939ed0b2c48cb21ff07340aefbc49 (diff) | |
download | yosys-cacf870d85c6b19609da4de018a7cc373da6d638.tar.gz yosys-cacf870d85c6b19609da4de018a7cc373da6d638.tar.bz2 yosys-cacf870d85c6b19609da4de018a7cc373da6d638.zip |
Merge pull request #1539 from YosysHQ/mwk/ilang-bounds-check
read_ilang: do bounds checking on bit indices
-rw-r--r-- | frontends/ilang/ilang_parser.y | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/frontends/ilang/ilang_parser.y b/frontends/ilang/ilang_parser.y index b4b9693da..4e0b62edd 100644 --- a/frontends/ilang/ilang_parser.y +++ b/frontends/ilang/ilang_parser.y @@ -430,10 +430,14 @@ sigspec: free($1); } | sigspec '[' TOK_INT ']' { + if ($3 >= $1->size() || $3 < 0) + rtlil_frontend_ilang_yyerror("bit index out of range"); $$ = new RTLIL::SigSpec($1->extract($3)); delete $1; } | sigspec '[' TOK_INT ':' TOK_INT ']' { + if ($3 >= $1->size() || $3 < 0 || $3 < $5) + rtlil_frontend_ilang_yyerror("invalid slice"); $$ = new RTLIL::SigSpec($1->extract($5, $3 - $5 + 1)); delete $1; } | |