From 1f286989986a384e34d9de1acf8899439506695a Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Sat, 22 Aug 2015 14:27:03 -0700 Subject: libutils: cleanups for -fsanitize=integer * Hashing functions rely on integer overflow behavior. Mark those functions as safe. * abort() if a passed in size_t value is greater than UINT32_MAX. This can occur on 64 bit builds where size_t is larger than uint32_t. * Special case the index lookup for an empty sorted vector. Without the special case, size() == 0, and size()-1 underflows. Change-Id: I343a14b589fc8f0d221c1998ae5d6f0b9e2781f8 --- libutils/VectorImpl.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libutils/VectorImpl.cpp') diff --git a/libutils/VectorImpl.cpp b/libutils/VectorImpl.cpp index 30ca6635e..bdb54b14a 100644 --- a/libutils/VectorImpl.cpp +++ b/libutils/VectorImpl.cpp @@ -551,6 +551,10 @@ size_t SortedVectorImpl::orderOf(const void* item) const ssize_t SortedVectorImpl::_indexOrderOf(const void* item, size_t* order) const { + if (order) *order = 0; + if (isEmpty()) { + return NAME_NOT_FOUND; + } // binary search ssize_t err = NAME_NOT_FOUND; ssize_t l = 0; -- cgit v1.2.3