Snap for 7140885 from 0c7df0e54f645e606e9ded01b996b423dc2513ae to sc-v2-release

Change-Id: I1ed51f0d7ddc7ea46b5337c89906019c760500de
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 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 @@
 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) {