When comparing message, require them to have the same descriptor.

This will cover someone subclassing the message, and also handles
something crazy like someone comparing to a raw NSObject.
pull/3839/head
Thomas Van Lenten 7 years ago
parent cbe250591f
commit 1f57e540ac
  1. 7
      objectivec/GPBMessage.m

@ -2591,13 +2591,14 @@ static void MergeRepeatedNotPackedFieldFromCodedInputStream(
if (other == self) {
return YES;
}
if (![other isKindOfClass:[self class]] &&
![self isKindOfClass:[other class]]) {
if (![other isKindOfClass:[GPBMessage class]]) {
return NO;
}
GPBMessage *otherMsg = other;
GPBDescriptor *descriptor = [[self class] descriptor];
if ([[otherMsg class] descriptor] != descriptor) {
return NO;
}
uint8_t *selfStorage = (uint8_t *)messageStorage_;
uint8_t *otherStorage = (uint8_t *)otherMsg->messageStorage_;

Loading…
Cancel
Save