X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=audiod_command.c;h=2d5bb79917b760f117997d42a7752dba6da82da0;hp=d1e36490822c216da260003457a1fecfc3c02941;hb=ca9b84e496c63f8a016c042eb2a84916c6d385e1;hpb=505cfe0c6c8f9ef79d259ee64404ab40f2057081 diff --git a/audiod_command.c b/audiod_command.c index d1e36490..2d5bb799 100644 --- a/audiod_command.c +++ b/audiod_command.c @@ -350,7 +350,7 @@ err_out: return 1; } -int __noreturn com_term(int fd, __a_unused int argc, __a_unused char **argv) +__noreturn int com_term(int fd, __a_unused int argc, __a_unused char **argv) { close(fd); clean_exit(EXIT_SUCCESS, "terminating on user request"); @@ -426,6 +426,7 @@ int handle_connect(int accept_fd) int i, argc, ret, clifd = -1; char *cmd = NULL, *p, *buf = para_calloc(MAXLINE), **argv = NULL; struct sockaddr_un unix_addr; + uid_t uid; ret = para_accept(accept_fd, &unix_addr, sizeof(struct sockaddr_un)); if (ret < 0) @@ -434,8 +435,9 @@ int handle_connect(int accept_fd) ret = recv_cred_buffer(clifd, buf, MAXLINE - 1); if (ret < 0) goto out; + uid = ret; PARA_INFO_LOG("connection from user %i, buf: %s\n", ret, buf); - ret = check_perms(ret); + ret = check_perms(uid); if (ret < 0) goto out; ret = -E_INVALID_AUDIOD_CMD; @@ -520,6 +522,7 @@ void audiod_status_dump(void) old = stat_task->stat_item_values[SI_DECODER_FLAGS]; new = decoder_flags(); if (!old || strcmp(old, new)) { + free(old); stat_client_write(new, SI_DECODER_FLAGS); stat_task->stat_item_values[SI_DECODER_FLAGS] = new; } else