[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