diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2023-11-01 21:36:50 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2023-11-01 21:36:50 (GMT) |
commit | ce33112cf8c913635402cb8b6d127f9ac9f2b6b5 (patch) | |
tree | 731eaf0f50df1cc8033decbfce879b51ce5757e9 /src/analysis/scan/exprs/literal.c | |
parent | 4eebf4a8752464691053fa3706ea6be9413676fa (diff) |
Fix various memory leaks.
Diffstat (limited to 'src/analysis/scan/exprs/literal.c')
-rw-r--r-- | src/analysis/scan/exprs/literal.c | 21 |
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)); } |