summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2017-11-18 10:15:48 +0200
committerSergey Poznyakoff <gray@gnu.org>2017-11-18 10:33:01 +0200
commitb330af9008e4c9168b379867b854f5900a539ad7 (patch)
tree04489101e06aca6c4c94069e34d2e4f99cfd8428
parent696754b9332922a00e977903d6df3def6ddb3fb6 (diff)
downloadmailutils-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.y3
-rw-r--r--libmu_sieve/sieve-lex.l1
-rw-r--r--libmu_sieve/util.c1
-rw-r--r--mh/mh_alias_lex.l1
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;

Return to:

Send suggestions and report system problems to the System administrator.