Introduce strterm(), hard-add terminating '\0' at end of buffer

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
Joachim Nilsson committed 2020-01-07 03:02:39 +01:00
1 parent 55c49a0bf0
commit 212083b922
3 files changed
+14 -6

No files matched your search

+7 -4
View File
@@ -92,7 +92,7 @@ static int do_start (char *buf, size_t len) { return call(start, buf, len); }
static int do_stop (char *buf, size_t len) { return call(stop, buf, len); }
static int do_restart(char *buf, size_t len) { return call(restart, buf, len); }
static char query_buf[367];
static char query_buf[368];
static int missing(char *job, char *id)
{
char buf[20];
@@ -234,9 +234,6 @@ static void api_cb(uev_t *w, void *arg, int events)
break;
}
/* Make sure no API using init_request::data can be abused */
rq.data_guard = 0;
if (rq.magic != INIT_MAGIC || len != sizeof(rq)) {
_e("Invalid initctl request");
break;
@@ -278,22 +275,26 @@ static void api_cb(uev_t *w, void *arg, int events)
case INIT_CMD_START_SVC:
_d("start %s", rq.data);
strterm(rq.data, sizeof(rq.data));
result = do_start(rq.data, sizeof(rq.data));
break;
case INIT_CMD_STOP_SVC:
_d("stop %s", rq.data);
strterm(rq.data, sizeof(rq.data));
result = do_stop(rq.data, sizeof(rq.data));
break;
case INIT_CMD_RESTART_SVC:
_d("restart %s", rq.data);
strterm(rq.data, sizeof(rq.data));
result = do_restart(rq.data, sizeof(rq.data));
break;
#ifdef INETD_ENABLED
case INIT_CMD_QUERY_INETD:
_d("query inetd");
strterm(rq.data, sizeof(rq.data));
result = do_query_inetd(rq.data, sizeof(rq.data));
break;
#endif
@@ -347,11 +348,13 @@ static void api_cb(uev_t *w, void *arg, int events)
case INIT_CMD_SVC_QUERY:
_d("svc query: %s", rq.data);
strterm(rq.data, sizeof(rq.data));
result = do_query(rq.data, sizeof(rq.data));
break;
case INIT_CMD_SVC_FIND:
_d("svc find: %s", rq.data);
strterm(rq.data, sizeof(rq.data));
send_svc(sd, do_find(rq.data, sizeof(rq.data)));
goto leave;
+1 -2
View File
@@ -90,8 +90,7 @@ struct init_request {
int cmd; /* What kind of request */
int runlevel; /* Runlevel to change to */
int sleeptime; /* Time between TERM and KILL */
char data[367];
char data_guard; /* Forced to '\0' by Finit */
char data[368];
};
extern int runlevel;
+6
View File
@@ -52,6 +52,12 @@ void screen_init (void);
void screen_exit (void);
int screen_width (void);
static inline char *strterm(char *str, size_t len)
{
str[len - 1] = 0;
return str;
}
#endif /* FINIT_UTIL_H_ */
/**