From: Vsevolod Stakhov Date: Thu, 6 Feb 2020 15:39:47 +0000 (+0000) Subject: [Fix] Avoid strdup usage for symbols options X-Git-Tag: 2.4~99 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d17a92c24e9d231bb1efe13d4e91280158301b7b;p=thirdparty%2Frspamd.git [Fix] Avoid strdup usage for symbols options --- diff --git a/src/libmime/scan_result.c b/src/libmime/scan_result.c index 671e99a9b0..b9eb882b20 100644 --- a/src/libmime/scan_result.c +++ b/src/libmime/scan_result.c @@ -550,17 +550,18 @@ rspamd_task_add_result_option (struct rspamd_task *task, k = kh_get (rspamd_options_hash, s->options, &srch); if (k == kh_end (s->options)) { - opt = rspamd_mempool_alloc0 (task->task_pool, sizeof (*opt)); + gchar *dst_cpy; - if (opt_cpy == NULL) { - opt_cpy = rspamd_mempool_strdup (task->task_pool, val); - } + opt = rspamd_mempool_alloc0 (task->task_pool, + sizeof (*opt) + vlen + 1); + dst_cpy = ((gchar *)opt) + sizeof (*opt); + memcpy (dst_cpy, val, vlen); + dst_cpy[vlen] = '\0'; opt->optlen = vlen; - opt->option = opt_cpy; + opt->option = dst_cpy; - k = kh_put (rspamd_options_hash, s->options, opt, &r); - opt->option = opt_cpy; + kh_put (rspamd_options_hash, s->options, opt, &r); DL_APPEND (s->opts_head, opt); ret = TRUE;