]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commitdiff
rocksdb: don't call LZ4_loadDictHC with null dictionary
authorLucian Grijincu <lucian@fb.com>
Mon, 9 Aug 2021 23:04:26 +0000 (16:04 -0700)
committerAndrew Kryczka <andrewkr@fb.com>
Mon, 9 Aug 2021 23:13:49 +0000 (16:13 -0700)
Summary: UBSAN revealed a pointer underflow when `LZ4HC_init_internal` is called with a null `start`.

Reviewed By: ajkr

Differential Revision: D30181874

fbshipit-source-id: ca9bbac1a85c58782871d7f153af733b000cc66c

util/compression.h

index 5ce419c9c2dbfe9f15414fba8186cc4ffdf18860..207f9949ef3795e99b0ec48f839d2f689fc6b893 100644 (file)
@@ -1224,8 +1224,10 @@ inline bool LZ4HC_Compress(const CompressionInfo& info,
   const char* compression_dict_data =
       compression_dict.size() > 0 ? compression_dict.data() : nullptr;
   size_t compression_dict_size = compression_dict.size();
-  LZ4_loadDictHC(stream, compression_dict_data,
-                 static_cast<int>(compression_dict_size));
+  if (compression_dict_data != nullptr) {
+    LZ4_loadDictHC(stream, compression_dict_data,
+                  static_cast<int>(compression_dict_size));
+  }
 
 #if LZ4_VERSION_NUMBER >= 10700  // r129+
   outlen =