diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-02-11 04:42:56 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-02-11 04:42:56 +0000 |
commit | 1ff587ff28977d0f76bc2b25d58a1c8eaab3c5cf (patch) | |
tree | da7ce4f5ed1a0f8b9f7a57a0882c6ac103da6d05 | |
parent | 212c6698338a9c4eec5e3757b3049efbb2d1a606 (diff) | |
parent | 0c7df0e54f645e606e9ded01b996b423dc2513ae (diff) | |
download | gatekeeper-1ff587ff28977d0f76bc2b25d58a1c8eaab3c5cf.tar.gz |
Merge "Appease UB sanitizer on reading gatekeeper error codes." am: f1473a3ae3 am: 78adc89fcd am: 90de20218c am: 0c7df0e54f
Original change: https://android-review.googlesource.com/c/platform/system/gatekeeper/+/1553309
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I6b7cb809185bd477c713c2ba5655f6c4ff8ca87c
-rw-r--r-- | gatekeeper_messages.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/gatekeeper_messages.cpp b/gatekeeper_messages.cpp index 01f2f8c..3b78664 100644 --- a/gatekeeper_messages.cpp +++ b/gatekeeper_messages.cpp @@ -50,6 +50,22 @@ static inline void append_to_buffer(uint8_t **buffer, const SizedBuffer &to_appe } } +static inline gatekeeper_error_t readError(uint32_t code) { + switch (code) { + case ERROR_NONE: + return ERROR_NONE; + case ERROR_INVALID: + return ERROR_INVALID; + case ERROR_RETRY: + return ERROR_RETRY; + case ERROR_MEMORY_ALLOCATION_FAILED: + return ERROR_MEMORY_ALLOCATION_FAILED; + case ERROR_UNKNOWN: + default: + return ERROR_UNKNOWN; + } +} + static inline gatekeeper_error_t read_from_buffer(const uint8_t **buffer, const uint8_t *end, SizedBuffer *target) { if (target == nullptr) return ERROR_INVALID; @@ -119,7 +135,7 @@ uint32_t GateKeeperMessage::Serialize(uint8_t *buffer, const uint8_t *end) const gatekeeper_error_t GateKeeperMessage::Deserialize(const uint8_t *payload, const uint8_t *end) { if (!fitsBuffer(payload, end, sizeof(serial_header_t))) return ERROR_INVALID; const serial_header_t *header = reinterpret_cast<const serial_header_t *>(payload); - error = static_cast<gatekeeper_error_t>(header->error); + error = readError(header->error); user_id = header->user_id; payload += sizeof(*header); if (error == ERROR_NONE) { |