diff options
author | Fergus Henderson <fergus@google.com> | 2024-04-25 11:18:57 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-04-25 11:20:03 -0700 |
commit | d3b1c7bbd2ece5755aaa58e9d8366a419b036fb5 (patch) | |
tree | cd7d93e66a81e4576dbb9ff2054d53894c2770e3 /absl/strings | |
parent | 8a3ae1b6f5fb8a034408cc665f4ce1bf7a5e190d (diff) | |
download | abseil-d3b1c7bbd2ece5755aaa58e9d8366a419b036fb5.tar.gz abseil-d3b1c7bbd2ece5755aaa58e9d8366a419b036fb5.tar.bz2 abseil-d3b1c7bbd2ece5755aaa58e9d8366a419b036fb5.zip |
Guard against null pointer dereference in DumpNode.
PiperOrigin-RevId: 628134930
Change-Id: I6b9763f2a87a9259963f00815c6953927f8add73
Diffstat (limited to 'absl/strings')
-rw-r--r-- | absl/strings/cord.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/absl/strings/cord.cc b/absl/strings/cord.cc index 025904c1..f0f4f31a 100644 --- a/absl/strings/cord.cc +++ b/absl/strings/cord.cc @@ -75,7 +75,7 @@ using ::absl::cord_internal::kMinFlatLength; using ::absl::cord_internal::kInlinedVectorSize; using ::absl::cord_internal::kMaxBytesToCopy; -static void DumpNode(absl::Nonnull<CordRep*> rep, bool include_data, +static void DumpNode(absl::Nonnull<CordRep*> nonnull_rep, bool include_data, absl::Nonnull<std::ostream*> os, int indent = 0); static bool VerifyNode(absl::Nonnull<CordRep*> root, absl::Nonnull<CordRep*> start_node); @@ -1457,12 +1457,13 @@ absl::string_view Cord::FlattenSlowPath() { } } -static void DumpNode(absl::Nonnull<CordRep*> rep, bool include_data, +static void DumpNode(absl::Nonnull<CordRep*> nonnull_rep, bool include_data, absl::Nonnull<std::ostream*> os, int indent) { + CordRep* rep = nonnull_rep; const int kIndentStep = 1; for (;;) { - *os << std::setw(3) << rep->refcount.Get(); - *os << " " << std::setw(7) << rep->length; + *os << std::setw(3) << (rep == nullptr ? 0 : rep->refcount.Get()); + *os << " " << std::setw(7) << (rep == nullptr ? 0 : rep->length); *os << " ["; if (include_data) *os << static_cast<void*>(rep); *os << "]"; |