diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-01-15 20:23:35 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-01-15 20:23:35 +0000 |
commit | 0e270dbe709e743ec840999c05e35f4d63be69b4 (patch) | |
tree | 810753d3258d55c35efc599f279d560accb6fe40 /src/controller.c | |
parent | e0446369d13269d07cecb5711fbab7d7bc64398a (diff) | |
download | rspamd-0e270dbe709e743ec840999c05e35f4d63be69b4.tar.gz rspamd-0e270dbe709e743ec840999c05e35f4d63be69b4.zip |
[Fix] Fix couple of issues
Found by: Coverity
Diffstat (limited to 'src/controller.c')
-rw-r--r-- | src/controller.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/controller.c b/src/controller.c index 25eb54db8..48c89c408 100644 --- a/src/controller.c +++ b/src/controller.c @@ -1276,7 +1276,7 @@ rspamd_controller_handle_graph ( k = 0; /* Create window */ - step = (rrd_result->rra_rows / desired_points + 0.5); + step = ceil (((gdouble)rrd_result->rra_rows) / desired_points); g_assert (step >= 1); acc = g_malloc0 (sizeof (double) * rrd_result->ds_count * step); @@ -1996,15 +1996,22 @@ rspamd_controller_handle_saveactions ( } parser = ucl_parser_new (0); - ucl_parser_add_chunk (parser, msg->body_buf.begin, msg->body_buf.len); + if (!ucl_parser_add_chunk (parser, msg->body_buf.begin, msg->body_buf.len)) { + if ((error = ucl_parser_get_error (parser)) != NULL) { + msg_err_session ("cannot parse input: %s", error); + rspamd_controller_send_error (conn_ent, 400, "Cannot parse input"); + ucl_parser_free (parser); + return 0; + } - if ((error = ucl_parser_get_error (parser)) != NULL) { - msg_err_session ("cannot parse input: %s", error); + msg_err_session ("cannot parse input: unknown error"); rspamd_controller_send_error (conn_ent, 400, "Cannot parse input"); ucl_parser_free (parser); return 0; } + + obj = ucl_parser_get_object (parser); ucl_parser_free (parser); @@ -2110,10 +2117,15 @@ rspamd_controller_handle_savesymbols ( } parser = ucl_parser_new (0); - ucl_parser_add_chunk (parser, msg->body_buf.begin, msg->body_buf.len); + if (!ucl_parser_add_chunk (parser, msg->body_buf.begin, msg->body_buf.len)) { + if ((error = ucl_parser_get_error (parser)) != NULL) { + msg_err_session ("cannot parse input: %s", error); + rspamd_controller_send_error (conn_ent, 400, "Cannot parse input"); + ucl_parser_free (parser); + return 0; + } - if ((error = ucl_parser_get_error (parser)) != NULL) { - msg_err_session ("cannot parse input: %s", error); + msg_err_session ("cannot parse input: unknown error"); rspamd_controller_send_error (conn_ent, 400, "Cannot parse input"); ucl_parser_free (parser); return 0; |