From 99ad8a443fc39837da033eb2edc998461845baa6 Mon Sep 17 00:00:00 2001 From: Evgeniy Savelev Date: Thu, 26 Oct 2023 18:21:28 +0700 Subject: [PATCH] match xls formats: biff5,biff8(11),biff8(12) --- matchers/document.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/matchers/document.go b/matchers/document.go index 2724f00..dcaa6a6 100644 --- a/matchers/document.go +++ b/matchers/document.go @@ -64,14 +64,17 @@ func Docx(buf []byte) bool { func Xls(buf []byte) bool { if len(buf) > 513 { - return buf[0] == 0xD0 && buf[1] == 0xCF && - buf[2] == 0x11 && buf[3] == 0xE0 && - buf[512] == 0x09 && buf[513] == 0x08 - } else { - return len(buf) > 3 && - buf[0] == 0xD0 && buf[1] == 0xCF && - buf[2] == 0x11 && buf[3] == 0xE0 + isMSOfficeBFF := buf[0] == 0xD0 && buf[1] == 0xCF && buf[2] == 0x11 && buf[3] == 0xE0 + + switch { + case isMSOfficeBFF && buf[512] == 0x09 && buf[513] == 0x08: // BIFF5 && BIFF12(12) + return true + case isMSOfficeBFF && buf[512] == 0xFD && buf[513] == 0xFF: // BIFF12(11) + return true + } } + + return false } func Xlsx(buf []byte) bool {