Prevent a crash in folly::Symbolizer
[folly.git] / folly / experimental / symbolizer / Dwarf.cpp
index 7fc1516..c34b89b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 Facebook, Inc.
+ * Copyright 2017-present Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 #include <folly/experimental/symbolizer/Dwarf.h>
 
 #include <type_traits>
@@ -304,7 +303,11 @@ bool Dwarf::getSection(const char* name, folly::StringPiece* section) const {
   if (!elfSection) {
     return false;
   }
-
+#ifdef SHF_COMPRESSED
+  if (elfSection->sh_flags & SHF_COMPRESSED) {
+    return false;
+  }
+#endif
   *section = elf_->getSectionBody(*elfSection);
   return true;
 }
@@ -318,7 +321,6 @@ void Dwarf::init() {
     elf_ = nullptr;
     return;
   }
-  getSection(".debug_str", &strings_);
 
   // Optional: fast address range lookup. If missing .debug_info can
   // be used - but it's much slower (linear scan).