aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/descriptor.cc
diff options
context:
space:
mode:
authorGravatar John Millikin <jmillikin@stripe.com>2017-10-16 12:05:21 -0700
committerGravatar John Millikin <jmillikin@stripe.com>2017-10-16 12:05:21 -0700
commitaff10976fc7722b1174fc3dcce15bfe8ebdfcbcd (patch)
tree5c6a858ce30c8ed183dc4f88c6f55d758e0b3354 /src/google/protobuf/descriptor.cc
parentf850188e6e1021b4fe21ecb0aca548a54c272ce5 (diff)
Fix undefined memory management found by Clang's sanitizers.
Diffstat (limited to 'src/google/protobuf/descriptor.cc')
-rw-r--r--src/google/protobuf/descriptor.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc
index 58829560..3f54b848 100644
--- a/src/google/protobuf/descriptor.cc
+++ b/src/google/protobuf/descriptor.cc
@@ -4309,8 +4309,10 @@ FileDescriptor* DescriptorBuilder::BuildFileImpl(
result->dependencies_once_ = tables_->AllocateOnceDynamic();
result->dependencies_names_ =
tables_->AllocateArray<const string*>(proto.dependency_size());
- memset(result->dependencies_names_, 0,
- sizeof(*result->dependencies_names_) * proto.dependency_size());
+ if (proto.dependency_size() > 0) {
+ memset(result->dependencies_names_, 0,
+ sizeof(*result->dependencies_names_) * proto.dependency_size());
+ }
} else {
result->dependencies_once_ = NULL;
result->dependencies_names_ = NULL;