Fix a potential overflow of binary search
authorjianghua.yjh <jianghua.yjh@alibaba-inc.com>
Tue, 8 Sep 2015 14:50:27 +0000 (07:50 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 8 Sep 2015 14:50:49 +0000 (14:50 +0000)
BUG=

Review URL: https://codereview.chromium.org/1314253006

Cr-Commit-Position: refs/heads/master@{#30638}

src/list-inl.h
src/objects-inl.h

index 94ef14d..5a247d5 100644 (file)
@@ -250,7 +250,7 @@ int SortedListBSearch(const List<T>& list, P cmp) {
   int low = 0;
   int high = list.length() - 1;
   while (low <= high) {
-    int mid = (low + high) / 2;
+    int mid = low + (high - low) / 2;
     T mid_elem = list[mid];
 
     if (cmp(&mid_elem) > 0) {
index ce8cfe7..42e8354 100644 (file)
@@ -2793,7 +2793,7 @@ int BinarySearch(T* array, Name* name, int low, int high, int valid_entries,
   DCHECK(low <= high);
 
   while (low != high) {
-    int mid = (low + high) / 2;
+    int mid = low + (high - low) / 2;
     Name* mid_name = array->GetSortedKey(mid);
     uint32_t mid_hash = mid_name->Hash();