From fdfefdd3015f86bc69bc442644b8241c72a30120 Mon Sep 17 00:00:00 2001 From: Dhanu Saputra <35093673+dhanusaputra@users.noreply.github.com> Date: Wed, 23 Feb 2022 23:30:00 +0700 Subject: [PATCH] More accurate detection for Shapefile (#253) More accurate detection for Shapefile --- internal/magic/geo.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/internal/magic/geo.go b/internal/magic/geo.go index 6df419e..f077e16 100644 --- a/internal/magic/geo.go +++ b/internal/magic/geo.go @@ -11,6 +11,17 @@ func Shp(raw []byte, limit uint32) bool { if len(raw) < 112 { return false } + + if !(binary.BigEndian.Uint32(raw[0:4]) == 9994 && + binary.BigEndian.Uint32(raw[4:8]) == 0 && + binary.BigEndian.Uint32(raw[8:12]) == 0 && + binary.BigEndian.Uint32(raw[12:16]) == 0 && + binary.BigEndian.Uint32(raw[16:20]) == 0 && + binary.BigEndian.Uint32(raw[20:24]) == 0 && + binary.LittleEndian.Uint32(raw[28:32]) == 1000) { + return false + } + shapeTypes := []int{ 0, // Null shape 1, // Point