]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix one corner case
authorVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 28 Sep 2023 13:41:22 +0000 (14:41 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 28 Sep 2023 13:46:16 +0000 (14:46 +0100)
lualib/lua_content/pdf.lua

index a8b6e984a7ec973e2a2930a09ceb5b9566e72b9b..f6d5c0bc0d46d53e6ae0644806bb5d2ca21aaa59 100644 (file)
@@ -428,18 +428,23 @@ local function maybe_extract_object_stream(obj, pdf, task)
   if dict.Length and type(obj.stream) == 'table' then
     local len = math.min(obj.stream.len,
         tonumber(maybe_dereference_object(dict.Length, pdf, task)) or 0)
-    local real_stream = obj.stream.data:span(1, len)
+    if len > 0 then
+      local real_stream = obj.stream.data:span(1, len)
 
-    local uncompressed, filter_err = maybe_apply_filter(dict, real_stream, pdf, task)
+      local uncompressed, filter_err = maybe_apply_filter(dict, real_stream, pdf, task)
 
-    if uncompressed then
-      obj.uncompressed = uncompressed
-      lua_util.debugm(N, task, 'extracted object %s:%s: (%s -> %s)',
-          obj.major, obj.minor, len, uncompressed:len())
-      return obj.uncompressed
+      if uncompressed then
+        obj.uncompressed = uncompressed
+        lua_util.debugm(N, task, 'extracted object %s:%s: (%s -> %s)',
+            obj.major, obj.minor, len, uncompressed:len())
+        return obj.uncompressed
+      else
+        lua_util.debugm(N, task, 'cannot extract object %s:%s; len = %s; filter = %s: %s',
+            obj.major, obj.minor, len, dict.Filter, filter_err)
+      end
     else
-      lua_util.debugm(N, task, 'cannot extract object %s:%s; len = %s; filter = %s: %s',
-          obj.major, obj.minor, len, dict.Filter, filter_err)
+      lua_util.debugm(N, task, 'cannot extract object %s:%s; len = %s',
+          obj.major, obj.minor, len)
     end
   end
 end