aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2020-01-15 17:30:20 -0800
committerVitaly Buka <vitalybuka@gmail.com>2020-01-16 11:03:22 -0800
commit9eaf063427ffb3a48ef4f69ffc99496a766e99e6 (patch)
tree964835c2cb0c2a4730732799774c57bcc4fd14a6
parentad520b3444534f6d1d03744ac430167c4988e185 (diff)
downloadlibprotobuf-mutator-9eaf063427ffb3a48ef4f69ffc99496a766e99e6.tar.gz
Log message when IsInitialized assert fail
-rw-r--r--src/mutator.cc10
-rw-r--r--src/mutator.h1
2 files changed, 9 insertions, 2 deletions
diff --git a/src/mutator.cc b/src/mutator.cc
index 53ef68e..b3e61cf 100644
--- a/src/mutator.cc
+++ b/src/mutator.cc
@@ -455,7 +455,7 @@ void Mutator::Mutate(Message* message, size_t size_increase_hint) {
MutateImpl(message, size_increase_hint);
InitializeAndTrim(message, kMaxInitializeDepth);
- assert(!keep_initialized_ || message->IsInitialized());
+ assert(IsInitialized(*message));
if (!post_processors_.empty()) {
ApplyPostProcessing(message);
@@ -533,7 +533,7 @@ void Mutator::CrossOver(const protobuf::Message& message1,
CrossOverImpl(message1, message2);
InitializeAndTrim(message2, kMaxInitializeDepth);
- assert(!keep_initialized_ || message2->IsInitialized());
+ assert(IsInitialized(*message2));
if (!post_processors_.empty()) {
ApplyPostProcessing(message2);
@@ -711,4 +711,10 @@ std::string Mutator::MutateUtf8String(const std::string& value,
return str;
}
+bool Mutator::IsInitialized(const Message& message) const {
+ if (!keep_initialized_ || message.IsInitialized()) return true;
+ std::cerr << "Uninitialized: " << message.DebugString() << "\n";
+ return false;
+}
+
} // namespace protobuf_mutator
diff --git a/src/mutator.h b/src/mutator.h
index a60c8bb..c5c3af5 100644
--- a/src/mutator.h
+++ b/src/mutator.h
@@ -101,6 +101,7 @@ class Mutator {
std::string MutateUtf8String(const std::string& value,
size_t size_increase_hint);
void ApplyPostProcessing(protobuf::Message* message);
+ bool IsInitialized(const protobuf::Message& message) const;
bool keep_initialized_ = true;
size_t random_to_default_ratio_ = 100;
RandomEngine random_;