From 148dac678849e6478d3e524be2ce42ad3927a04f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20=C4=8Euri=C5=A1?= Date: Wed, 22 Mar 2023 09:50:15 +0100 Subject: [PATCH] Return YR_UNDEFINED when offset is not valid (#1881) --- libyara/modules/pe/pe.c | 2 ++ ...02700ed6f1604e803ca8867277d852e8971efded0650 | Bin 0 -> 27512 bytes tests/test-pe.c | 12 ++++++++++++ 3 files changed, 14 insertions(+) create mode 100644 tests/data/05cd06e6a202e12be22a02700ed6f1604e803ca8867277d852e8971efded0650 diff --git a/libyara/modules/pe/pe.c b/libyara/modules/pe/pe.c index 06e44fbf..24590cac 100644 --- a/libyara/modules/pe/pe.c +++ b/libyara/modules/pe/pe.c @@ -1622,6 +1622,8 @@ static void pe_parse_exports(PE* pe) } else { + if (offset < 0) + offset = YR_UNDEFINED; yr_set_integer(offset, pe->object, "export_details[%i].offset", exp_sz); } diff --git a/tests/data/05cd06e6a202e12be22a02700ed6f1604e803ca8867277d852e8971efded0650 b/tests/data/05cd06e6a202e12be22a02700ed6f1604e803ca8867277d852e8971efded0650 new file mode 100644 index 0000000000000000000000000000000000000000..bade2845fb41b1019c94ffede533d95e29b3510a GIT binary patch literal 27512 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