From 465fd6bd56d6fd2b98acb267d19e39d13b65b60d Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Tue, 22 May 2018 13:18:20 -0500 Subject: [PATCH] binpac: BIT-1829: throw exceptions for negative array length expressions --- tools/binpac/src/pac_array.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/binpac/src/pac_array.cc b/tools/binpac/src/pac_array.cc index 27c43b221b..a878918d52 100644 --- a/tools/binpac/src/pac_array.cc +++ b/tools/binpac/src/pac_array.cc @@ -283,8 +283,12 @@ void ArrayType::GenArrayLength(Output *out_cc, Env *env, const DataPtr& data) env->LValue(arraylength_var())); out_cc->inc_indent(); out_cc->println("{"); - out_cc->println("%s = 0;", - env->LValue(arraylength_var())); + out_cc->println("throw binpac::ExceptionOutOfBound(\"%s\",", + data_id_str_.c_str()); + out_cc->println(" %s, (%s) - (%s));", + env->LValue(arraylength_var()), + env->RValue(end_of_data), + env->RValue(begin_of_data)); out_cc->println("}"); out_cc->dec_indent();