diff options
author | Vsevolod Stakhov <vsevolod@rspamd.com> | 2024-08-28 13:10:28 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rspamd.com> | 2024-08-28 13:10:28 +0100 |
commit | 8ebeb215dfbf602780c3ff16a33551c2f7fc66b8 (patch) | |
tree | 1f444a70ac9ffbd4d734f54bd7812069e9bc02da /src | |
parent | 1eddf1cc1cab2b88b211b3af92b4ba83d192937d (diff) | |
download | rspamd-8ebeb215dfbf602780c3ff16a33551c2f7fc66b8.tar.gz rspamd-8ebeb215dfbf602780c3ff16a33551c2f7fc66b8.zip |
[Fix] Another safe-guards for learning/classifying an empty message
Diffstat (limited to 'src')
-rw-r--r-- | src/libstat/stat_process.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libstat/stat_process.c b/src/libstat/stat_process.c index ad976e713..5db3af6ce 100644 --- a/src/libstat/stat_process.c +++ b/src/libstat/stat_process.c @@ -509,6 +509,14 @@ rspamd_stat_classify(struct rspamd_task *task, lua_State *L, unsigned int stage, return ret; } + if (task->message == NULL) { + ret = RSPAMD_STAT_PROCESS_ERROR; + msg_err_task("trying to classify empty message"); + + task->processed_stages |= stage; + return ret; + } + if (stage == RSPAMD_TASK_STAGE_CLASSIFIERS_PRE) { /* Preprocess tokens */ rspamd_stat_preprocess(st_ctx, task, FALSE, FALSE); @@ -892,6 +900,18 @@ rspamd_stat_learn(struct rspamd_task *task, return ret; } + + if (task->message == NULL) { + ret = RSPAMD_STAT_PROCESS_ERROR; + if (err && *err == NULL) { + g_set_error(err, rspamd_stat_quark(), 500, + "Trying to learn an empty message"); + } + + task->processed_stages |= stage; + return ret; + } + if (stage == RSPAMD_TASK_STAGE_LEARN_PRE) { /* Process classifiers */ rspamd_stat_preprocess(st_ctx, task, TRUE, spam); |