Skip to content

Commit 148dac6

Browse files
authored
Return YR_UNDEFINED when offset is not valid (#1881)
1 parent c78e5aa commit 148dac6

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

libyara/modules/pe/pe.c

+2
Original file line numberDiff line numberDiff line change
@@ -1622,6 +1622,8 @@ static void pe_parse_exports(PE* pe)
16221622
}
16231623
else
16241624
{
1625+
if (offset < 0)
1626+
offset = YR_UNDEFINED;
16251627
yr_set_integer(offset, pe->object, "export_details[%i].offset", exp_sz);
16261628
}
16271629

Binary file not shown.

tests/test-pe.c

+12
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,18 @@ int main(int argc, char** argv)
913913
}",
914914
"tests/data/c6f9709feccf42f2d9e22057182fe185f177fb9daaa2649b4669a24f2ee7e3ba_0h_410h");
915915

916+
assert_true_rule_file(
917+
"import \"pe\" \
918+
rule invalid_offset { \
919+
condition: \
920+
not defined pe.export_details[0].offset and \
921+
not defined pe.export_details[7].offset and \
922+
not defined pe.export_details[15].offset and \
923+
not defined pe.export_details[21].offset \
924+
}",
925+
"tests/data/"
926+
"05cd06e6a202e12be22a02700ed6f1604e803ca8867277d852e8971efded0650");
927+
916928
yr_finalize();
917929

918930
YR_DEBUG_FPRINTF(

0 commit comments

Comments
 (0)