From 0ba4f18ea6981b4d2b4eded11b2da4b2a2192d5b Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Sun, 21 Jun 2020 21:39:15 +0200 Subject: Finish up the assert conversion --- rcon.c | 67 +++++++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 23 deletions(-) (limited to 'rcon.c') diff --git a/rcon.c b/rcon.c index 1a57b89..dc29364 100644 --- a/rcon.c +++ b/rcon.c @@ -27,6 +27,8 @@ rcon_free(struct uring_task *task) { struct rcon *rcon = container_of(task, struct rcon, task); + assert_return(task); + debug(DBG_RCON, "task %p, idle %p", task, rcon); rcon->server->rcon = NULL; xfree(rcon); @@ -35,8 +37,7 @@ rcon_free(struct uring_task *task) void rcon_refdump(struct rcon *rcon) { - if (!rcon) - return; + assert_return_silent(rcon); uring_task_refdump(&rcon->task); } @@ -44,13 +45,10 @@ rcon_refdump(struct rcon *rcon) void rcon_delete(struct cfg *cfg, struct server *server) { - struct rcon *rcon = server->rcon; - - if (!rcon) - return; + assert_return_silent(server->rcon); - debug(DBG_RCON, "closing fd %i", rcon->task.fd); - uring_task_destroy(cfg, &rcon->task); + debug(DBG_RCON, "closing fd %i", server->rcon->task.fd); + uring_task_destroy(cfg, &server->rcon->task); server->rcon = NULL; } @@ -58,11 +56,14 @@ static int32_t read_int(char **pos, size_t *len) { uint32_t val; - char *p = *pos; + char *p; + + assert_return(pos && *pos, 0); if (len && *len < 4) return 0; + p = *pos; val = ((uint8_t)p[0] << 0); val += ((uint8_t)p[1] << 8); val += ((uint8_t)p[2] << 16); @@ -79,8 +80,11 @@ static void write_int(char **pos, size_t *len, int32_t orig) { uint32_t val = (uint32_t)orig; - char *p = *pos; + char *p; + + assert_return(pos && *pos); + p = *pos; p[0] = (val >> 0) & 0xff; p[1] = (val >> 8) & 0xff; p[2] = (val >> 16) & 0xff; @@ -94,8 +98,11 @@ write_int(char **pos, size_t *len, int32_t orig) static void write_str(char **pos, size_t *len, const char *str) { - size_t towrite = strlen(str); + size_t towrite; + assert_return(pos && *pos && !empty_str(str)); + + towrite = strlen(str); memcpy(*pos, str, towrite); *pos += towrite; if (len) @@ -105,8 +112,11 @@ write_str(char **pos, size_t *len, const char *str) static void write_end(char **pos, size_t *len) { - char *p = *pos; + char *p; + + assert_return(pos && *pos); + p = *pos; p[0] = 0x00; p[1] = 0x00; @@ -127,9 +137,12 @@ static void create_packet(struct cfg *cfg, struct rcon *rcon, int32_t reqid, enum rcon_packet_type type, const char *msg) { - char *pos = &rcon->tbuf.buf[4]; + char *pos; + + assert_return(cfg && rcon && !empty_str(msg)); /* Body */ + pos = &rcon->tbuf.buf[4]; rcon->tbuf.len = 4; write_int(&pos, &rcon->tbuf.len, reqid); write_int(&pos, &rcon->tbuf.len, type); @@ -148,12 +161,15 @@ create_packet(struct cfg *cfg, struct rcon *rcon, int32_t reqid, static int packet_complete(struct cfg *cfg, struct uring_task *task, int res) { - char *pos = task->tbuf->buf; - size_t len = task->tbuf->len; + char *pos; + size_t len; int32_t plen; + assert_return(cfg && task, 0); assert_task_alive_or(DBG_RCON, task, return -EINTR); + pos = task->tbuf->buf; + len = task->tbuf->len; if (task->tbuf->len < 14) return 0; @@ -171,10 +187,14 @@ static bool rcon_read_packet(struct cfg *cfg, struct rcon *rcon, int32_t *id, int32_t *type, char **rmsg) { - char *pos = rcon->tbuf.buf; - size_t len = rcon->tbuf.len; + char *pos; + size_t len; int32_t plen; + assert_return(cfg && rcon && id && type && rmsg, false); + + pos = rcon->tbuf.buf; + len = rcon->tbuf.len; plen = read_int(&pos, &len); *id = read_int(&pos, &len); *type = read_int(&pos, &len); @@ -216,6 +236,7 @@ rcon_stop_reply(struct cfg *cfg, struct uring_task *task, int res) int32_t type; char *msg; + assert_return(cfg && task); assert_task_alive(DBG_RCON, task); if (res < 0) { @@ -245,6 +266,7 @@ rcon_stop_sent(struct cfg *cfg, struct uring_task *task, int res) { struct rcon *rcon = container_of(task, struct rcon, task); + assert_return(cfg && task); assert_task_alive(DBG_RCON, task); if (res < 0) { @@ -265,6 +287,7 @@ rcon_login_reply(struct cfg *cfg, struct uring_task *task, int res) int32_t type; char *msg; + assert_return(cfg && task); assert_task_alive(DBG_RCON, task); if (res < 0) { @@ -300,6 +323,7 @@ rcon_login_sent(struct cfg *cfg, struct uring_task *task, int res) { struct rcon *rcon = container_of(task, struct rcon, task); + assert_return(cfg && task); assert_task_alive(DBG_RCON, task); if (res < 0) { @@ -317,6 +341,7 @@ rcon_connected_cb(struct cfg *cfg, struct connection *conn, bool connected) { struct rcon *rcon = container_of(conn, struct rcon, conn); + assert_return(cfg && conn); assert_task_alive(DBG_RCON, &rcon->task); if (!connected) { @@ -335,17 +360,13 @@ rcon_init(struct cfg *cfg, struct server *server) { struct rcon *rcon; - if (!server) - return; - - if (list_empty(&server->rcons) || !server->rcon_password) - return; + assert_return(cfg && server && !list_empty(&server->rcons) && !empty_str(server->rcon_password)); rcon = zmalloc(sizeof(*rcon)); if (!rcon) die("malloc: %m"); - uring_task_init(&rcon->task, "rcon", &server->task, rcon_free); + uring_task_init(cfg, &rcon->task, "rcon", &server->task, rcon_free); uring_task_set_buf(&rcon->task, &rcon->tbuf); rcon->server = server; server->rcon = rcon; -- cgit v1.2.3