From c85b72b952756a38e43df5163bc34b20e341a4a3 Mon Sep 17 00:00:00 2001 From: Thad House Date: Wed, 1 Jun 2016 20:12:50 -0700 Subject: [PATCH] Fixes a few bugs in the initial handle implementation (#94) Failure to check for invalid type on handle creation, and handle type check was broken. --- hal/lib/athena/handles/HandlesInternal.cpp | 1 + hal/lib/athena/handles/HandlesInternal.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hal/lib/athena/handles/HandlesInternal.cpp b/hal/lib/athena/handles/HandlesInternal.cpp index d2d1bf52c0..b1ff98282d 100644 --- a/hal/lib/athena/handles/HandlesInternal.cpp +++ b/hal/lib/athena/handles/HandlesInternal.cpp @@ -13,6 +13,7 @@ namespace hal { HalHandle createHandle(int16_t index, HalHandleEnum handleType) { if (index < 0) return HAL_HANDLE_NEGATIVE_INDEX; + if (handleType <= 0 || handleType > 127) return HAL_HANDLE_INVALID_TYPE; // set last 8 bits, then shift to first 8 bits HalHandle handle = handleType; handle = handle << 24; diff --git a/hal/lib/athena/handles/HandlesInternal.h b/hal/lib/athena/handles/HandlesInternal.h index 086831ce05..8717dc85d4 100644 --- a/hal/lib/athena/handles/HandlesInternal.h +++ b/hal/lib/athena/handles/HandlesInternal.h @@ -31,7 +31,7 @@ static inline HalHandleEnum getHandleType(HalHandle handle) { return (HalHandleEnum)((handle >> 24) & 0xff); } static inline bool isHandleType(HalHandle handle, HalHandleEnum handleType) { - return handleType == getHandleType(handleType); + return handleType == getHandleType(handle); } static inline int16_t getHandleTypedIndex(HalHandle handle, HalHandleEnum enumType) {