Index: mojo/public/cpp/bindings/lib/validation_util.cc |
diff --git a/mojo/public/cpp/bindings/lib/validation_util.cc b/mojo/public/cpp/bindings/lib/validation_util.cc |
index 4a7e30563ed16af98cc69174bee9b2220e044b21..4824477272e24d796d1c2303ea69a64b79de59ca 100644 |
--- a/mojo/public/cpp/bindings/lib/validation_util.cc |
+++ b/mojo/public/cpp/bindings/lib/validation_util.cc |
@@ -46,20 +46,17 @@ bool ValidateStructHeaderAndClaimMemory(const void* data, |
return true; |
} |
-bool ValidateUnionHeaderAndClaimMemory(const void* data, |
- bool inlined, |
- ValidationContext* validation_context) { |
+bool ValidateNonInlinedUnionHeaderAndClaimMemory( |
+ const void* data, |
+ ValidationContext* validation_context) { |
if (!IsAligned(data)) { |
ReportValidationError(validation_context, |
VALIDATION_ERROR_MISALIGNED_OBJECT); |
return false; |
} |
- // If the union is inlined in another structure its memory was already |
- // claimed. |
- // This ONLY applies to the union itself, NOT anything which the union points |
- // to. |
- if (!inlined && !validation_context->ClaimMemory(data, kUnionDataSize)) { |
+ if (!validation_context->ClaimMemory(data, kUnionDataSize) || |
+ *static_cast<const uint32_t*>(data) != kUnionDataSize) { |
ReportValidationError(validation_context, |
VALIDATION_ERROR_ILLEGAL_MEMORY_RANGE); |
return false; |