From 09bab5d38c0d64facabfa3ec2894faaefbe9670e Mon Sep 17 00:00:00 2001 From: Matteo Cafasso Date: Tue, 25 Apr 2017 23:03:02 +0300 Subject: [PATCH] New API: yara_destroy The yara_destroy API allows to claim resources back via the removal of the previously loaded Yara rules. Signed-off-by: Matteo Cafasso --- daemon/yara.c | 14 ++++++++++++++ generator/actions_yara.ml | 8 ++++++++ generator/proc_nr.ml | 1 + lib/MAX_PROC_NR | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/daemon/yara.c b/daemon/yara.c index a1e3aa878..56eec74ad 100644 --- a/daemon/yara.c +++ b/daemon/yara.c @@ -111,6 +111,20 @@ do_yara_load (void) return (r == ERROR_SUCCESS) ? 0 : -1; } +int +do_yara_destroy (void) +{ + if (rules == NULL) { + reply_with_error ("no yara rules loaded"); + return -1; + } + + yr_rules_destroy (rules); + rules = NULL; + + return 0; +} + /* Compile source code rules and load them. * Return ERROR_SUCCESS on success, Yara error code type on error. */ diff --git a/generator/actions_yara.ml b/generator/actions_yara.ml index 2542d8f00..388954f25 100644 --- a/generator/actions_yara.ml +++ b/generator/actions_yara.ml @@ -45,4 +45,12 @@ it is recommended to compile them first. Previously loaded rules will be destroyed." }; + { defaults with + name = "yara_destroy"; added = (1, 37, 13); + style = RErr, [], []; + optional = Some "libyara"; + shortdesc = "destroy previously loaded yara rules"; + longdesc = "\ +Destroy previously loaded Yara rules in order to free libguestfs resources." }; + ] diff --git a/generator/proc_nr.ml b/generator/proc_nr.ml index d50cc9efa..d471b1a83 100644 --- a/generator/proc_nr.ml +++ b/generator/proc_nr.ml @@ -480,6 +480,7 @@ let proc_nr = [ 470, "internal_find_inode"; 471, "mksquashfs"; 472, "yara_load"; +473, "yara_destroy"; ] (* End of list. If adding a new entry, add it at the end of the list diff --git a/lib/MAX_PROC_NR b/lib/MAX_PROC_NR index 68cfb10d1..8410b8b89 100644 --- a/lib/MAX_PROC_NR +++ b/lib/MAX_PROC_NR @@ -1 +1 @@ -472 +473