From 29f27bfd0bd474bc3272fead14917a689c1825db Mon Sep 17 00:00:00 2001 From: Parveen Bhatia Date: Fri, 19 Oct 2018 15:37:00 -0400 Subject: [PATCH] Added safety checks when malloc returns nil in GPBDescriptor --- objectivec/GPBDescriptor.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/objectivec/GPBDescriptor.m b/objectivec/GPBDescriptor.m index ad46ef4f03..a349f87b99 100644 --- a/objectivec/GPBDescriptor.m +++ b/objectivec/GPBDescriptor.m @@ -819,6 +819,7 @@ uint32_t GPBFieldAlternateTag(GPBFieldDescriptor *self) { return; } uint32_t *offsets = malloc(valueCount_ * sizeof(uint32_t)); + if (!offsets) return; const char *scan = valueNames_; for (uint32_t i = 0; i < valueCount_; ++i) { offsets[i] = (uint32_t)(scan - valueNames_); @@ -851,6 +852,7 @@ uint32_t GPBFieldAlternateTag(GPBFieldDescriptor *self) { nameAsCStr += prefixLen; if (nameOffsets_ == NULL) [self calcValueNameOffsets]; + if (nameOffsets_ == NULL) return NO; // Find it. for (uint32_t i = 0; i < valueCount_; ++i) { @@ -867,6 +869,7 @@ uint32_t GPBFieldAlternateTag(GPBFieldDescriptor *self) { - (BOOL)getValue:(int32_t *)outValue forEnumTextFormatName:(NSString *)textFormatName { if (nameOffsets_ == NULL) [self calcValueNameOffsets]; + if (nameOffsets_ == NULL) return NO; for (uint32_t i = 0; i < valueCount_; ++i) { int32_t value = values_[i]; @@ -905,6 +908,7 @@ uint32_t GPBFieldAlternateTag(GPBFieldDescriptor *self) { - (NSString *)getEnumNameForIndex:(uint32_t)index { if (nameOffsets_ == NULL) [self calcValueNameOffsets]; + if (nameOffsets_ == NULL) return nil; if (index >= valueCount_) { return nil; @@ -916,6 +920,7 @@ uint32_t GPBFieldAlternateTag(GPBFieldDescriptor *self) { - (NSString *)getEnumTextFormatNameForIndex:(uint32_t)index { if (nameOffsets_ == NULL) [self calcValueNameOffsets]; + if (nameOffsets_ == NULL) return nil; if (index >= valueCount_) { return nil;