summaryrefslogtreecommitdiff
path: root/src/analysis/scan/exprs/literal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/scan/exprs/literal.c')
-rw-r--r--src/analysis/scan/exprs/literal.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/analysis/scan/exprs/literal.c b/src/analysis/scan/exprs/literal.c
index b1a094c..b7aed5b 100644
--- a/src/analysis/scan/exprs/literal.c
+++ b/src/analysis/scan/exprs/literal.c
@@ -124,6 +124,8 @@ static void g_scan_literal_expression_init(GScanLiteralExpression *expr)
{
G_SCAN_EXPRESSION(expr)->state = SRS_REDUCED;
+ memset(&expr->value, 0, sizeof(expr->value));
+
}
@@ -160,6 +162,25 @@ static void g_scan_literal_expression_dispose(GScanLiteralExpression *expr)
static void g_scan_literal_expression_finalize(GScanLiteralExpression *expr)
{
+ switch (expr->value_type)
+ {
+ case LVT_STRING:
+ exit_szstr(&expr->value.string);
+ break;
+
+ case LVT_REG_EXPR:
+ if (expr->value.regex != NULL)
+ {
+ free(expr->value.regex);
+ regfree(&expr->value.preg);
+ }
+ break;
+
+ default:
+ break;
+
+ }
+
G_OBJECT_CLASS(g_scan_literal_expression_parent_class)->finalize(G_OBJECT(expr));
}