IMPALA-5774: Prevent FindInSet() from reading off end of string

Change-Id: I541c8e6bb712e380f9610d6bfa35e2d515a31d1d
Reviewed-on: http://gerrit.cloudera.org:8080/7608
Reviewed-by: Sailesh Mukil <sail...@cloudera.com>
Tested-by: Impala Public Jenkins


Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/5caadbbe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/5caadbbe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/5caadbbe

Branch: refs/heads/master
Commit: 5caadbbedd1917019937290e9427fd6f798f0cd8
Parents: b881fba
Author: Henry Robinson <he...@cloudera.com>
Authored: Mon Aug 7 12:35:54 2017 -0700
Committer: Impala Public Jenkins <impala-public-jenk...@gerrit.cloudera.org>
Committed: Mon Aug 7 23:41:45 2017 +0000

----------------------------------------------------------------------
 be/src/exprs/string-functions-ir.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/5caadbbe/be/src/exprs/string-functions-ir.cc
----------------------------------------------------------------------
diff --git a/be/src/exprs/string-functions-ir.cc 
b/be/src/exprs/string-functions-ir.cc
index 5c66541..d0c8679 100644
--- a/be/src/exprs/string-functions-ir.cc
+++ b/be/src/exprs/string-functions-ir.cc
@@ -814,7 +814,7 @@ IntVal StringFunctions::FindInSet(FunctionContext* context, 
const StringVal& str
   do {
     end = start;
     // Position end.
-    while(str_set.ptr[end] != ',' && end < str_set.len) ++end;
+    while (end < str_set.len && str_set.ptr[end] != ',') ++end;
     StringValue token(reinterpret_cast<char*>(str_set.ptr) + start, end - 
start);
     if (str_sv.Eq(token)) return IntVal(token_index);
 

Reply via email to