[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