File tree Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Original file line number Diff line number Diff line change @@ -93,7 +93,8 @@ uint32_t Interpret(const std::vector<bool> &asmap, const std::vector<bool> &ip)
93
93
jump = DecodeJump (pos, endpos);
94
94
if (jump == INVALID) break ; // Jump offset straddles EOF
95
95
if (bits == 0 ) break ; // No input bits left
96
- if (jump >= endpos - pos) break ; // Jumping past EOF
96
+ if (pos + jump < pos) break ; // overflow
97
+ if (pos + jump >= endpos) break ; // Jumping past EOF
97
98
if (ip[ip.size () - bits]) {
98
99
pos += jump;
99
100
}
@@ -155,7 +156,8 @@ bool SanityCheckASMap(const std::vector<bool>& asmap, int bits)
155
156
} else if (opcode == Instruction::JUMP) {
156
157
uint32_t jump = DecodeJump (pos, endpos);
157
158
if (jump == INVALID) return false ; // Jump offset straddles EOF
158
- if (jump > endpos - pos) return false ; // Jump out of range
159
+ if (pos + jump < pos) return false ; // overflow
160
+ if (pos + jump > endpos) return false ; // Jump out of range
159
161
if (bits == 0 ) return false ; // Consuming bits past the end of the input
160
162
--bits;
161
163
uint32_t jump_offset = pos - begin + jump;
You can’t perform that action at this time.
0 commit comments