From 93cb46c7361f826917678a60954745a553ec1cca Mon Sep 17 00:00:00 2001 From: zhangmengrou Date: Fri, 30 Apr 2021 15:27:41 +0800 Subject: [PATCH 1/4] add exe&dll filetype --- fixtures/sample.dll | Bin 0 -> 48640 bytes fixtures/sample.exe | Bin 0 -> 69120 bytes match_test.go | 15 ++++++++ matchers/archive.go | 83 ++++++++++++++++++++++++++++++++++++++------ 4 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 fixtures/sample.dll create mode 100644 fixtures/sample.exe diff --git a/fixtures/sample.dll b/fixtures/sample.dll new file mode 100644 index 0000000000000000000000000000000000000000..7de32a7b96889b0a98516d723b9cfb2268c983a5 GIT binary patch literal 48640 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 &w&EF{?lA@{>}}z@<{2~jMbRZ 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 Date: Fri, 30 Apr 2021 15:37:23 +0800 Subject: [PATCH 2/4] fix go fmt --- matchers/archive.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/matchers/archive.go b/matchers/archive.go index 41ed68f..052537a 100644 --- a/matchers/archive.go +++ b/matchers/archive.go @@ -207,14 +207,14 @@ func Zst(buf []byte) bool { return true } else { // skippable frames - if len(buf) < 8 { - return false - } - if binary.LittleEndian.Uint32(buf[:4])&ZstdMagicSkippableMask == ZstdMagicSkippableStart { - userDataLength := binary.LittleEndian.Uint32(buf[4:8]) - if len(buf) < 8+int(userDataLength) { - return false - } + if len(buf) < 8 { + return false + } + if binary.LittleEndian.Uint32(buf[:4]) & ZstdMagicSkippableMask == ZstdMagicSkippableStart { + userDataLength := binary.LittleEndian.Uint32(buf[4:8]) + if len(buf) < 8 + int(userDataLength) { + return false + } nextFrame := buf[8+userDataLength:] return Zst(nextFrame) } From cbfa8e499832bc6a877dbe327b84b25746567ee1 Mon Sep 17 00:00:00 2001 From: zhangmengrou Date: Fri, 30 Apr 2021 15:39:57 +0800 Subject: [PATCH 3/4] fix go fmt --- matchers/archive.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/matchers/archive.go b/matchers/archive.go index 052537a..b97369c 100644 --- a/matchers/archive.go +++ b/matchers/archive.go @@ -203,10 +203,10 @@ func MachO(buf []byte) bool { // There are two frame formats defined by Zstandard: Zstandard frames and Skippable frames. // See more details from https://tools.ietf.org/id/draft-kucherawy-dispatch-zstd-00.html#rfc.section.2 func Zst(buf []byte) bool { - if compareBytes(buf, zstdMagic, 0) { - return true - } else { - // skippable frames + if compareBytes(buf, zstdMagic, 0) { + return true + } else { + // skippable frames if len(buf) < 8 { return false } @@ -215,11 +215,11 @@ func Zst(buf []byte) bool { if len(buf) < 8 + int(userDataLength) { return false } - nextFrame := buf[8+userDataLength:] - return Zst(nextFrame) - } - return false - } + nextFrame := buf[8+userDataLength:] + return Zst(nextFrame) + } + return false + } } func Exe(buf []byte) bool { From db8981ae1b41a01f467e46b73810774247d97fb3 Mon Sep 17 00:00:00 2001 From: zhangmengrou Date: Fri, 30 Apr 2021 15:41:21 +0800 Subject: [PATCH 4/4] fix go fmt --- matchers/archive.go | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/matchers/archive.go b/matchers/archive.go index b97369c..41ed68f 100644 --- a/matchers/archive.go +++ b/matchers/archive.go @@ -203,23 +203,23 @@ func MachO(buf []byte) bool { // There are two frame formats defined by Zstandard: Zstandard frames and Skippable frames. // See more details from https://tools.ietf.org/id/draft-kucherawy-dispatch-zstd-00.html#rfc.section.2 func Zst(buf []byte) bool { - if compareBytes(buf, zstdMagic, 0) { - return true - } else { - // skippable frames - if len(buf) < 8 { - return false - } - if binary.LittleEndian.Uint32(buf[:4]) & ZstdMagicSkippableMask == ZstdMagicSkippableStart { - userDataLength := binary.LittleEndian.Uint32(buf[4:8]) - if len(buf) < 8 + int(userDataLength) { - return false - } - nextFrame := buf[8+userDataLength:] - return Zst(nextFrame) - } - return false - } + if compareBytes(buf, zstdMagic, 0) { + return true + } else { + // skippable frames + if len(buf) < 8 { + return false + } + if binary.LittleEndian.Uint32(buf[:4])&ZstdMagicSkippableMask == ZstdMagicSkippableStart { + userDataLength := binary.LittleEndian.Uint32(buf[4:8]) + if len(buf) < 8+int(userDataLength) { + return false + } + nextFrame := buf[8+userDataLength:] + return Zst(nextFrame) + } + return false + } } func Exe(buf []byte) bool {