aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2024-12-08 22:36:02 +0100
committerPřemysl Eric Janouch <p@janouch.name>2024-12-08 22:37:12 +0100
commit019c4302ad86fd6981e8abc90cd8cb58003b662c (patch)
treed628782319eda36507fb5f5abcf6225ce9ac631a /plugins
parent189bf940342ebf23b15c7f2dfd27d8a4692b34fc (diff)
downloadhex-019c4302ad86fd6981e8abc90cd8cb58003b662c.tar.gz
hex-019c4302ad86fd6981e8abc90cd8cb58003b662c.tar.xz
hex-019c4302ad86fd6981e8abc90cd8cb58003b662c.zip
Handle tiny files gracefullyHEADorigin/mastermaster
Lua detection functions used to cause fatal errors on failure to read. We could also reconsider treating detection errors as fatal.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/elf.lua2
-rw-r--r--plugins/gzip.lua2
-rw-r--r--plugins/pcap.lua6
-rw-r--r--plugins/pdf.lua2
-rw-r--r--plugins/vdi.lua3
-rw-r--r--plugins/xcursor.lua2
6 files changed, 13 insertions, 4 deletions
diff --git a/plugins/elf.lua b/plugins/elf.lua
index 439c112..bf8095f 100644
--- a/plugins/elf.lua
+++ b/plugins/elf.lua
@@ -18,7 +18,7 @@
-- See man 5 elf, /usr/include/elf.h and /usr/include/llvm/Support/ELF.h
local detect = function (c)
- return c:read (4) == "\x7FELF"
+ return #c >= 4 and c:read (4) == "\x7FELF"
end
local ph_type_table = {
diff --git a/plugins/gzip.lua b/plugins/gzip.lua
index 4d8bf15..ae5ccb6 100644
--- a/plugins/gzip.lua
+++ b/plugins/gzip.lua
@@ -16,7 +16,7 @@
--
local detect = function (c)
- return c:read (2) == "\x1f\x8b"
+ return #c >= 2 and c:read (2) == "\x1f\x8b"
end
local function latin1_to_utf8 (s)
diff --git a/plugins/pcap.lua b/plugins/pcap.lua
index a02fc8f..7ad6606 100644
--- a/plugins/pcap.lua
+++ b/plugins/pcap.lua
@@ -16,11 +16,17 @@
--
local detect = function (c)
+ if #c < 4 then
+ return false
+ end
local magic = c:u32 ()
return magic == 0xa1b2c3d4 or magic == 0xd4c3b2a1
end
local detect_ng = function (c)
+ if #c < 8 then
+ return false
+ end
local magic = c (9):u32 ()
return c:u32 () == 0x0a0d0d0a
and (magic == 0x1a2b3c4d or magic == 0x4d3c2b1a)
diff --git a/plugins/pdf.lua b/plugins/pdf.lua
index d4c7f26..9703f2d 100644
--- a/plugins/pdf.lua
+++ b/plugins/pdf.lua
@@ -335,7 +335,7 @@ end
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
local detect = function (c)
- return c:read (5) == "%PDF-"
+ return #c >= 5 and c:read (5) == "%PDF-"
end
local decode_xref_subsection = function (lex, start, count, result)
diff --git a/plugins/vdi.lua b/plugins/vdi.lua
index 6124e43..a35c139 100644
--- a/plugins/vdi.lua
+++ b/plugins/vdi.lua
@@ -16,6 +16,9 @@
--
local detect = function (c)
+ if #c < 68 then
+ return false
+ end
c.position = 65
return c:read (4) == "\x7F\x10\xDA\xBE"
end
diff --git a/plugins/xcursor.lua b/plugins/xcursor.lua
index 740736f..3350d34 100644
--- a/plugins/xcursor.lua
+++ b/plugins/xcursor.lua
@@ -16,7 +16,7 @@
--
local detect = function (c)
- return c:read (4) == "Xcur"
+ return #c >= 4 and c:read (4) == "Xcur"
end
-- https://www.x.org/releases/current/doc/man/man3/Xcursor.3.xhtml