summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Kralevich2015-08-22 16:27:03 -0500
committerNick Kralevich2015-08-24 10:52:22 -0500
commit1f286989986a384e34d9de1acf8899439506695a (patch)
treeca15d9ff0bce7642a7b479002867cac5d0063b15 /libutils/VectorImpl.cpp
parent3b94cef1b75893f98ad3011a09582405bb32baf4 (diff)
downloadplatform-system-core-1f286989986a384e34d9de1acf8899439506695a.tar.gz
platform-system-core-1f286989986a384e34d9de1acf8899439506695a.tar.xz
platform-system-core-1f286989986a384e34d9de1acf8899439506695a.zip
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
Diffstat (limited to 'libutils/VectorImpl.cpp')
-rw-r--r--libutils/VectorImpl.cpp4
1 files changed, 4 insertions, 0 deletions
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
551 551
552ssize_t SortedVectorImpl::_indexOrderOf(const void* item, size_t* order) const 552ssize_t SortedVectorImpl::_indexOrderOf(const void* item, size_t* order) const
553{ 553{
554 if (order) *order = 0;
555 if (isEmpty()) {
556 return NAME_NOT_FOUND;
557 }
554 // binary search 558 // binary search
555 ssize_t err = NAME_NOT_FOUND; 559 ssize_t err = NAME_NOT_FOUND;
556 ssize_t l = 0; 560 ssize_t l = 0;