diff --git a/groupcheck.c b/groupcheck.c index 4d2d989..7a75935 100644 --- a/groupcheck.c +++ b/groupcheck.c @@ -350,9 +350,10 @@ static int parse_subject(sd_bus_message *m, struct subject *subject) return r; if (strlen(value) >= MAX_NAME_SIZE) - return r; + return -EINVAL; strncpy(subject->data.s.session_id, value, MAX_NAME_SIZE); + subject->data.s.session_id[MAX_NAME_SIZE-1] = '\0'; r = sd_bus_message_exit_container(m); if (r < 0) @@ -375,6 +376,7 @@ static int parse_subject(sd_bus_message *m, struct subject *subject) return -EINVAL; strncpy(subject->data.s.session_id, value, MAX_NAME_SIZE); + subject->data.s.session_id[MAX_NAME_SIZE-1] = '\0'; r = sd_bus_message_exit_container(m); if (r < 0) diff --git a/test_bus.c b/test_bus.c index 006c373..403d0bb 100644 --- a/test_bus.c +++ b/test_bus.c @@ -31,7 +31,7 @@ int main(int argc, char *argv[]) int r = -1, i; const char *action_id; const char *name = NULL; - bool *allowed; + bool *allowed = false; gid_t supplementary_groups[argc]; if (argc < 2) { @@ -92,7 +92,7 @@ int main(int argc, char *argv[]) r = sd_bus_message_open_container(msg, SD_BUS_TYPE_ARRAY, "{sv}"); if (r < 0) goto end; - + r = sd_bus_message_open_container(msg, SD_BUS_TYPE_DICT_ENTRY, "sv"); if (r < 0) goto end; @@ -100,16 +100,16 @@ int main(int argc, char *argv[]) r = sd_bus_message_append(msg, "s", "name"); if (r < 0) goto end; - + r = sd_bus_message_append(msg, "v", "s", name); if (r < 0) goto end; - + /* dict entry */ r = sd_bus_message_close_container(msg); if (r < 0) goto end; - + /* array */ r = sd_bus_message_close_container(msg); if (r < 0) @@ -135,7 +135,7 @@ int main(int argc, char *argv[]) r = sd_bus_message_append(msg, "s", ""); if (r < 0) goto end; - + r = sd_bus_call(bus, msg, 0, NULL, &reply); if (r < 0) { fprintf(stderr, "D-Bus method call failed: %s\n", strerror(-r));