[PATCH] D31684: [sanitizer] Fix various issues reported by Clang Static Analyzer [NFC]

Kuba (Brecka) Mracek via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 4 16:06:25 PDT 2017


kubamracek created this revision.
kubamracek added a project: Sanitizers.

There's several issues reported by Clang Static Analyzer:  Some dead stores, some potential null-pointer dereferences, and a possible garbage value read.  They are all pretty straightforward, so this patch fixes them all at once.  NFC.


Repository:
  rL LLVM

https://reviews.llvm.org/D31684

Files:
  lib/asan/asan_descriptions.cc
  lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
  lib/sanitizer_common/sanitizer_symbolizer_mac.cc
  lib/tsan/rtl/tsan_stack_trace.cc
  lib/tsan/rtl/tsan_sync.cc


Index: lib/tsan/rtl/tsan_sync.cc
===================================================================
--- lib/tsan/rtl/tsan_sync.cc
+++ lib/tsan/rtl/tsan_sync.cc
@@ -79,6 +79,7 @@
 }
 
 bool MetaMap::FreeRange(Processor *proc, uptr p, uptr sz) {
+  CHECK(proc);
   bool has_something = false;
   u32 *meta = MemToMeta(p);
   u32 *end = MemToMeta(p + sz);
Index: lib/tsan/rtl/tsan_stack_trace.cc
===================================================================
--- lib/tsan/rtl/tsan_stack_trace.cc
+++ lib/tsan/rtl/tsan_stack_trace.cc
@@ -37,7 +37,9 @@
 }
 
 void VarSizeStackTrace::Init(const uptr *pcs, uptr cnt, uptr extra_top_pc) {
-  ResizeBuffer(cnt + !!extra_top_pc);
+  uptr new_size = cnt + !!extra_top_pc;
+  CHECK(new_size);
+  ResizeBuffer(new_size);
   internal_memcpy(trace_buffer, pcs, cnt * sizeof(trace_buffer[0]));
   if (extra_top_pc)
     trace_buffer[cnt] = extra_top_pc;
Index: lib/sanitizer_common/sanitizer_symbolizer_mac.cc
===================================================================
--- lib/sanitizer_common/sanitizer_symbolizer_mac.cc
+++ lib/sanitizer_common/sanitizer_symbolizer_mac.cc
@@ -111,12 +111,13 @@
     InternalFree(symbol_name);
   rest = ExtractTokenUpToDelimiter(rest, ") ", out_module);
 
+  if (line) *line = 0;
   if (rest[0] == '(') {
     if (out_file) {
       rest++;
       rest = ExtractTokenUpToDelimiter(rest, ":", out_file);
       char *extracted_line_number;
-      rest = ExtractTokenUpToDelimiter(rest, ")", &extracted_line_number);
+      ExtractTokenUpToDelimiter(rest, ")", &extracted_line_number);
       if (line) *line = (uptr)internal_atoll(extracted_line_number);
       InternalFree(extracted_line_number);
     }
Index: lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
===================================================================
--- lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
+++ lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
@@ -324,7 +324,7 @@
 void ParseSymbolizeDataOutput(const char *str, DataInfo *info) {
   str = ExtractToken(str, "\n", &info->name);
   str = ExtractUptr(str, " ", &info->start);
-  str = ExtractUptr(str, "\n", &info->size);
+  ExtractUptr(str, "\n", &info->size);
 }
 
 bool LLVMSymbolizer::SymbolizePC(uptr addr, SymbolizedStack *stack) {
Index: lib/asan/asan_descriptions.cc
===================================================================
--- lib/asan/asan_descriptions.cc
+++ lib/asan/asan_descriptions.cc
@@ -452,7 +452,7 @@
     return;
   }
   data.kind = kAddressKindWild;
-  addr = 0;
+  data.addr = 0;
 }
 
 void PrintAddressDescription(uptr addr, uptr access_size,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D31684.94134.patch
Type: text/x-patch
Size: 2612 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170404/b2817a0e/attachment.bin>


More information about the llvm-commits mailing list