Fixed that seed wouldn't close on exec

This commit is contained in:
buffet 2018-11-08 22:02:03 +01:00
parent 15384083a0
commit bdfbf4bebe
3 changed files with 14 additions and 4 deletions

View file

@ -57,7 +57,7 @@ init_socket(void)
#define CMDIS(c) (strcmp(command, (c)) == 0) #define CMDIS(c) (strcmp(command, (c)) == 0)
void void
handle_ipc_event(char *msg) handle_ipc_event(FILE *client, char *msg)
{ {
char *command = strtok(msg, " "); char *command = strtok(msg, " ");
@ -67,6 +67,7 @@ handle_ipc_event(char *msg)
exec_config(); exec_config();
} else if (CMDIS("exec")) { } else if (CMDIS("exec")) {
char *command = strtok(NULL, ""); char *command = strtok(NULL, "");
fclose(client);
execl("/bin/sh", "/bin/sh", "-c", command, NULL); execl("/bin/sh", "/bin/sh", "-c", command, NULL);
g_is_about_to_quit = true; g_is_about_to_quit = true;
} else { } else {

View file

@ -8,8 +8,10 @@
#ifndef IPC_H #ifndef IPC_H
#define IPC_H #define IPC_H
#include <stdio.h>
void init_socket(void); void init_socket(void);
void handle_ipc_event(char *msg); void handle_ipc_event(FILE *client, char *msg);
extern int g_sock_fd; extern int g_sock_fd;

View file

@ -117,8 +117,15 @@ main(int argc, char *argv[])
if (!(client_fd < 0) && (msg_len = read(client_fd, msg, sizeof(msg) - 1)) > 0) { if (!(client_fd < 0) && (msg_len = read(client_fd, msg, sizeof(msg) - 1)) > 0) {
// client sent something // client sent something
msg[msg_len] = '\0'; msg[msg_len] = '\0';
handle_ipc_event(msg);
close(client_fd); FILE *file = fdopen(client_fd, "w");
if (!file) {
warn("failed to open client as file\n");
close(client_fd);
} else {
handle_ipc_event(file, msg);
fclose(file);
}
} }
} }