diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2017-11-18 10:15:48 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2017-11-18 10:33:01 +0200 |
commit | b330af9008e4c9168b379867b854f5900a539ad7 (patch) | |
tree | 04489101e06aca6c4c94069e34d2e4f99cfd8428 | |
parent | 696754b9332922a00e977903d6df3def6ddb3fb6 (diff) | |
download | mailutils-b330af9008e4c9168b379867b854f5900a539ad7.tar.gz mailutils-b330af9008e4c9168b379867b854f5900a539ad7.tar.bz2 |
Fix the use of uninitialized memory
* mh/mh_alias_lex.l (push_source): Initialize locus range prior to copying
to it.
* libmailutils/cfg/parser.y (mu_cfg_tree_create_node): Likewise.
* libmu_sieve/util.c: (mu_sieve_value_create): Likewise.
-rw-r--r-- | libmailutils/cfg/parser.y | 3 | ||||
-rw-r--r-- | libmu_sieve/sieve-lex.l | 1 | ||||
-rw-r--r-- | libmu_sieve/util.c | 1 | ||||
-rw-r--r-- | mh/mh_alias_lex.l | 1 |
4 files changed, 4 insertions, 2 deletions
diff --git a/libmailutils/cfg/parser.y b/libmailutils/cfg/parser.y index 4503c7781..3436b8d90 100644 --- a/libmailutils/cfg/parser.y +++ b/libmailutils/cfg/parser.y @@ -1134,10 +1134,9 @@ mu_cfg_tree_create_node (struct mu_cfg_tree *tree, np = mu_alloc (size); np->type = type; + mu_locus_range_init (&np->locus); if (loc) mu_locus_range_copy (&np->locus, loc); - else - memset (&np->locus, 0, sizeof np->locus); p = (char*) (np + 1); np->tag = p; strcpy (p, tag); diff --git a/libmu_sieve/sieve-lex.l b/libmu_sieve/sieve-lex.l index fd145bfe1..f14e80194 100644 --- a/libmu_sieve/sieve-lex.l +++ b/libmu_sieve/sieve-lex.l @@ -190,6 +190,7 @@ push_source (const char *name) { ctx = mu_sieve_malloc (mu_sieve_machine, sizeof (*ctx)); ctx->trk = trk; + mu_locus_range_init (&ctx->incl_range); mu_locus_range_copy (&ctx->incl_range, &yylloc); ctx->i_node = sieve_source_inode; ctx->input = input_stream; diff --git a/libmu_sieve/util.c b/libmu_sieve/util.c index 8d62a60c2..7d71b5509 100644 --- a/libmu_sieve/util.c +++ b/libmu_sieve/util.c @@ -55,6 +55,7 @@ mu_sieve_value_create (mu_sieve_machine_t mach, mu_sieve_data_type type, val->locus.end.mu_line = locus->end.mu_line; val->locus.end.mu_col = locus->end.mu_col; + mu_locus_range_init (&val->locus); mu_locus_range_copy (&val->locus, locus); switch (type) { diff --git a/mh/mh_alias_lex.l b/mh/mh_alias_lex.l index 371353ed3..b97264b38 100644 --- a/mh/mh_alias_lex.l +++ b/mh/mh_alias_lex.l @@ -167,6 +167,7 @@ push_source (const char *name, int fail) { ctx = mu_alloc (sizeof (*ctx)); ctx->trk = trk; + mu_locus_range_init (&ctx->incl_range); mu_locus_range_copy (&ctx->incl_range, &yylloc); ctx->exec_p = exec_p; ctx->i_node = ali_source_inode; |