summaryrefslogtreecommitdiff
path: root/rcon.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-06-21 21:39:15 +0200
committerDavid Härdeman <david@hardeman.nu>2020-06-21 21:39:15 +0200
commit0ba4f18ea6981b4d2b4eded11b2da4b2a2192d5b (patch)
treeb10104c574b719cf78f10945526a21a9fd385d64 /rcon.c
parent003159e92bb4526845a8a1a1a4627824e939cd4b (diff)
Finish up the assert conversion
Diffstat (limited to 'rcon.c')
-rw-r--r--rcon.c67
1 files changed, 44 insertions, 23 deletions
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;