diff options
| author | David Härdeman <david@hardeman.nu> | 2020-06-21 21:39:15 +0200 | 
|---|---|---|
| committer | David Härdeman <david@hardeman.nu> | 2020-06-21 21:39:15 +0200 | 
| commit | 0ba4f18ea6981b4d2b4eded11b2da4b2a2192d5b (patch) | |
| tree | b10104c574b719cf78f10945526a21a9fd385d64 /rcon.c | |
| parent | 003159e92bb4526845a8a1a1a4627824e939cd4b (diff) | |
Finish up the assert conversion
Diffstat (limited to 'rcon.c')
| -rw-r--r-- | rcon.c | 67 | 
1 files changed, 44 insertions, 23 deletions
| @@ -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; | 
