diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2024-12-08 22:36:02 +0100 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2024-12-08 22:37:12 +0100 |
commit | 019c4302ad86fd6981e8abc90cd8cb58003b662c (patch) | |
tree | d628782319eda36507fb5f5abcf6225ce9ac631a | |
parent | 189bf940342ebf23b15c7f2dfd27d8a4692b34fc (diff) | |
download | hex-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.
-rw-r--r-- | plugins/elf.lua | 2 | ||||
-rw-r--r-- | plugins/gzip.lua | 2 | ||||
-rw-r--r-- | plugins/pcap.lua | 6 | ||||
-rw-r--r-- | plugins/pdf.lua | 2 | ||||
-rw-r--r-- | plugins/vdi.lua | 3 | ||||
-rw-r--r-- | plugins/xcursor.lua | 2 |
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 |