[Forensics-changes] [yara] 117/192: Fix dead code and reduce number of return points in _pe_iterate_resources
Hilko Bengen
bengen at moszumanska.debian.org
Sat Jul 1 10:31:54 UTC 2017
This is an automated email from the git hooks/post-receive script.
bengen pushed a commit to annotated tag v3.6.0
in repository yara.
commit f07af4bd7c67189938c2bf23e5a6502cb1f0a64a
Author: plusvic <plusvic at gmail.com>
Date: Wed Mar 15 17:37:29 2017 +0100
Fix dead code and reduce number of return points in _pe_iterate_resources
---
libyara/modules/pe.c | 76 +++++++++++++++++++++++++++-------------------------
1 file changed, 39 insertions(+), 37 deletions(-)
diff --git a/libyara/modules/pe.c b/libyara/modules/pe.c
index b409c11..8ddc126 100644
--- a/libyara/modules/pe.c
+++ b/libyara/modules/pe.c
@@ -328,7 +328,8 @@ int _pe_iterate_resources(
{
if (!struct_fits_in_pe(pe, entry, IMAGE_RESOURCE_DIRECTORY_ENTRY))
{
- return RESOURCE_ITERATOR_ABORTED;
+ result = RESOURCE_ITERATOR_ABORTED;
+ break;
}
switch(rsrc_tree_level)
@@ -352,59 +353,60 @@ int _pe_iterate_resources(
PIMAGE_RESOURCE_DIRECTORY directory = (PIMAGE_RESOURCE_DIRECTORY) \
(rsrc_data + RESOURCE_OFFSET(entry));
- if (!struct_fits_in_pe(pe, directory, IMAGE_RESOURCE_DIRECTORY))
+ if (struct_fits_in_pe(pe, directory, IMAGE_RESOURCE_DIRECTORY))
{
- return RESOURCE_ITERATOR_ABORTED;
+ result = _pe_iterate_resources(
+ pe,
+ directory,
+ rsrc_data,
+ rsrc_tree_level + 1,
+ type,
+ id,
+ language,
+ type_string,
+ name_string,
+ lang_string,
+ callback,
+ callback_data);
+ }
+ else
+ {
+ result = RESOURCE_ITERATOR_ABORTED;
}
-
- result = _pe_iterate_resources(
- pe,
- directory,
- rsrc_data,
- rsrc_tree_level + 1,
- type,
- id,
- language,
- type_string,
- name_string,
- lang_string,
- callback,
- callback_data);
-
- if (result == RESOURCE_ITERATOR_ABORTED)
- return RESOURCE_ITERATOR_ABORTED;
}
else
{
PIMAGE_RESOURCE_DATA_ENTRY data_entry = (PIMAGE_RESOURCE_DATA_ENTRY) \
(rsrc_data + RESOURCE_OFFSET(entry));
- if (!struct_fits_in_pe(pe, data_entry, IMAGE_RESOURCE_DATA_ENTRY))
+ if (struct_fits_in_pe(pe, data_entry, IMAGE_RESOURCE_DATA_ENTRY))
{
- return RESOURCE_ITERATOR_ABORTED;
+ if (callback(
+ data_entry,
+ *type,
+ *id,
+ *language,
+ type_string,
+ name_string,
+ lang_string,
+ callback_data) == RESOURCE_CALLBACK_ABORT)
+ {
+ result = RESOURCE_ITERATOR_ABORTED;
+ }
+ }
+ else
+ {
+ result = RESOURCE_ITERATOR_ABORTED;
}
-
- result = callback(
- data_entry,
- *type,
- *id,
- *language,
- type_string,
- name_string,
- lang_string,
- callback_data);
-
- if (result == RESOURCE_CALLBACK_ABORT)
- return RESOURCE_ITERATOR_ABORTED;
}
if (result == RESOURCE_ITERATOR_ABORTED)
- return result;
+ break;
entry++;
}
- return RESOURCE_ITERATOR_FINISHED;
+ return result;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/forensics/yara.git
More information about the forensics-changes
mailing list