File fix-Command-Execution-in-ss-manager.patch of Package shadowsocks-libev.7462
diff -Nur shadowsocks-libev-2.5.6/src/manager.c shadowsocks-libev-2.5.6-new/src/manager.c
--- shadowsocks-libev-2.5.6/src/manager.c 2016-11-01 09:56:22.000000000 +0800
+++ shadowsocks-libev-2.5.6-new/src/manager.c 2017-10-31 10:57:27.836544193 +0800
@@ -93,7 +93,7 @@
#endif
static void
-build_config(char *prefix, struct server *server)
+build_config(char *prefix, struct manager_ctx *manager, struct server *server)
{
char *path = NULL;
int path_size = strlen(prefix) + strlen(server->port) + 20;
@@ -111,7 +111,7 @@
fprintf(f, "{\n");
fprintf(f, "\"server_port\":\"%s\",\n", server->port);
fprintf(f, "\"password\":\"%s\",\n", server->password);
- fprintf(f, "}\n");
+ fprintf(f, "\n}\n");
fclose(f);
ss_free(path);
}
@@ -121,14 +121,15 @@
{
static char cmd[BUF_SIZE];
int i;
+ int port;
- build_config(working_dir, server);
+ port = atoi(server->port);
+ build_config(working_dir, manager, server);
memset(cmd, 0, BUF_SIZE);
snprintf(cmd, BUF_SIZE,
- "%s -m %s --manager-address %s -f %s/.shadowsocks_%s.pid -c %s/.shadowsocks_%s.conf",
- executable, manager->method, manager->manager_address,
- working_dir, server->port, working_dir, server->port);
+ "%s --manager-address %s -f %s/.shadowsocks_%d.pid -c %s/.shadowsocks_%d.conf",
+ executable, manager->manager_address, working_dir, port, working_dir, port);
if (manager->acl != NULL) {
int len = strlen(cmd);