diff options
author | Phil Sutter <phil@nwl.cc> | 2017-10-04 15:59:32 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-10-06 14:30:56 +0200 |
commit | 881fad86fa4942571c74cdfa89831a2cd25dbe16 (patch) | |
tree | 8ddd4a0fde3e6306ad63884c691f02641b1dd255 /src/erec.c | |
parent | b873a1731d2481851c57eab3dcf3e719e9d45b50 (diff) |
evaluate: Fix debug output
When introducing output_fp, debug output in src/evaluate.c was not
adjusted and therefore broke.
This patch restores eval debug output by applying the following changes:
- Change erec_print() and erec_print_list() to take a struct output_ctx
pointer as first argument and use output_fp field as destination to
print to.
- Drop octx_debug_dummy variable and instead use octx pointer from
struct eval_ctx for debug output.
- Add missing calls to erec_destroy() in eval debug output which should
eliminate another mem leak.
Fixes: 2535ba7006f22 ("src: get rid of printf")
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/erec.c')
-rw-r--r-- | src/erec.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -69,7 +69,7 @@ void erec_add_location(struct error_record *erec, const struct location *loc) erec->num_locations++; } -static void erec_destroy(struct error_record *erec) +void erec_destroy(struct error_record *erec) { unsigned int i; @@ -112,7 +112,7 @@ struct error_record *erec_create(enum error_record_types type, return erec; } -void erec_print(FILE *f, const struct error_record *erec, +void erec_print(struct output_ctx *octx, const struct error_record *erec, unsigned int debug_mask) { const struct location *loc = erec->locations, *iloc; @@ -123,6 +123,10 @@ void erec_print(FILE *f, const struct error_record *erec, unsigned int i, end; int l, ret; off_t orig_offset = 0; + FILE *f = octx->output_fp; + + if (!f) + return; switch (indesc->type) { case INDESC_BUFFER: @@ -202,13 +206,14 @@ void erec_print(FILE *f, const struct error_record *erec, fprintf(f, "\n"); } -void erec_print_list(FILE *f, struct list_head *list, unsigned int debug_mask) +void erec_print_list(struct output_ctx *octx, struct list_head *list, + unsigned int debug_mask) { struct error_record *erec, *next; list_for_each_entry_safe(erec, next, list, list) { list_del(&erec->list); - erec_print(f, erec, debug_mask); + erec_print(octx, erec, debug_mask); erec_destroy(erec); } } |