[Forensics-changes] [yara] 240/407: fix issue #206

Hilko Bengen bengen at moszumanska.debian.org
Sat Jul 1 10:28:30 UTC 2017


This is an automated email from the git hooks/post-receive script.

bengen pushed a commit to annotated tag v3.3.0
in repository yara.

commit 2773c9b1aaabc869d7d58154e6176ccb307c026d
Author: pozdnychev <guillaume at bk.ru>
Date:   Mon Dec 1 16:56:55 2014 +0100

    fix issue #206
    
    Change the prototype of a non-exported function (re.c:_yr_re_fiber_sync) so that it
    tells its caller if an error occurred.
---
 libyara/re.c | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/libyara/re.c b/libyara/re.c
index 2f225d5..6a30c17 100644
--- a/libyara/re.c
+++ b/libyara/re.c
@@ -1411,7 +1411,7 @@ void _yr_re_fiber_kill_all(
 // also synced.
 //
 
-void _yr_re_fiber_sync(
+int _yr_re_fiber_sync(
     RE_FIBER_LIST* fiber_list,
     RE_FIBER_LIST* fiber_pool,
     RE_FIBER* fiber_to_sync)
@@ -1431,12 +1431,18 @@ void _yr_re_fiber_sync(
     {
       case RE_OPCODE_SPLIT_A:
         new_fiber = _yr_re_fiber_split(fiber, fiber_list, fiber_pool);
+        if (! new_fiber)
+          return -1;
+
         new_fiber->ip += *(int16_t*)(fiber->ip + 1);
         fiber->ip += 3;
         break;
 
       case RE_OPCODE_SPLIT_B:
         new_fiber = _yr_re_fiber_split(fiber, fiber_list, fiber_pool);
+        if (! new_fiber)
+          return -1;
+
         new_fiber->ip += 3;
         fiber->ip += *(int16_t*)(fiber->ip + 1);
         break;
@@ -1470,6 +1476,7 @@ void _yr_re_fiber_sync(
           fiber = fiber->next;
     }
   }
+  return 0;
 }
 
 
@@ -1556,7 +1563,8 @@ int yr_re_exec(
   fibers.head = fiber;
   fibers.tail = fiber;
 
-  _yr_re_fiber_sync(&fibers, &storage->fiber_pool, fiber);
+  if (_yr_re_fiber_sync(&fibers, &storage->fiber_pool, fiber) < 0)
+    return -2;
 
   while (fibers.head != NULL)
   {
@@ -1746,12 +1754,14 @@ int yr_re_exec(
 
         case ACTION_CONTINUE:
           fiber->ip += 1;
-          _yr_re_fiber_sync(&fibers, &storage->fiber_pool, fiber);
+          if (_yr_re_fiber_sync(&fibers, &storage->fiber_pool, fiber) < 0)
+            return -2;
           break;
 
         default:
           next_fiber = fiber->next;
-          _yr_re_fiber_sync(&fibers, &storage->fiber_pool, fiber);
+          if (_yr_re_fiber_sync(&fibers, &storage->fiber_pool, fiber) < 0)
+            return -2;
           fiber = next_fiber;
       }
     }
@@ -1772,7 +1782,8 @@ int yr_re_exec(
       fiber->ip = re_code;
 
       _yr_re_fiber_append(&fibers, fiber);
-      _yr_re_fiber_sync(&fibers, &storage->fiber_pool, fiber);
+      if (_yr_re_fiber_sync(&fibers, &storage->fiber_pool, fiber) < 0)
+        return -2;
     }
   }
 

-- 
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