Skip to content

Commit 8e78d2e

Browse files
committed
Fix use of uninitialized value in WastParser::ParseSimdV128Const.
1 parent d8184ba commit 8e78d2e

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/wast-parser.cc

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2873,24 +2873,28 @@ Result WastParser::ParseSimdV128Const(Const* const_,
28732873
case 16: {
28742874
uint8_t value = 0;
28752875
result = ParseInt8(sv, &value, ParseIntType::SignedAndUnsigned);
2876+
if (Failed(result)) break;
28762877
const_->set_v128_u8(lane, value);
28772878
break;
28782879
}
28792880
case 8: {
28802881
uint16_t value = 0;
28812882
result = ParseInt16(sv, &value, ParseIntType::SignedAndUnsigned);
2883+
if (Failed(result)) break;
28822884
const_->set_v128_u16(lane, value);
28832885
break;
28842886
}
28852887
case 4: {
28862888
uint32_t value = 0;
28872889
result = ParseInt32(sv, &value, ParseIntType::SignedAndUnsigned);
2890+
if (Failed(result)) break;
28882891
const_->set_v128_u32(lane, value);
28892892
break;
28902893
}
28912894
case 2: {
28922895
uint64_t value = 0;
28932896
result = ParseInt64(sv, &value, ParseIntType::SignedAndUnsigned);
2897+
if (Failed(result)) break;
28942898
const_->set_v128_u64(lane, value);
28952899
break;
28962900
}
@@ -2900,16 +2904,20 @@ Result WastParser::ParseSimdV128Const(Const* const_,
29002904
switch (lane_count) {
29012905
case 4:
29022906
result = ParseF32(&lane_const_, const_type);
2907+
if (Failed(result)) break;
29032908
const_->set_v128_f32(lane, lane_const_.f32_bits());
29042909
break;
29052910

29062911
case 2:
29072912
result = ParseF64(&lane_const_, const_type);
2913+
if (Failed(result)) break;
29082914
const_->set_v128_f64(lane, lane_const_.f64_bits());
29092915
break;
29102916
}
29112917

2912-
const_->set_expected_nan(lane, lane_const_.expected_nan());
2918+
if (Succeeded(result)) {
2919+
const_->set_expected_nan(lane, lane_const_.expected_nan());
2920+
}
29132921
}
29142922

29152923
if (Failed(result)) {

0 commit comments

Comments
 (0)