X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/7d0fe4da7028cae3c4521139fa706d26924b977b..9b594a530ffdac3a7ec919fe891bda154fd297b0:/main.c diff --git a/main.c b/main.c index ebfadd24..4f3729e8 100644 --- a/main.c +++ b/main.c @@ -94,7 +94,8 @@ extern filter_rule_list daemon_filter_list; uid_t our_uid; gid_t our_gid; -int am_generator = 0; +int am_receiver = 0; /* Only set to 1 after the receiver/generator fork. */ +int am_generator = 0; /* Only set to 1 after the receiver/generator fork. */ int local_server = 0; int daemon_over_rsh = 0; mode_t orig_umask = 0; @@ -395,7 +396,7 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char **remote_argv, in int *f_in_p, int *f_out_p) { int i, argc = 0; - char *args[MAX_ARGS]; + char *args[MAX_ARGS], *need_to_free = NULL; pid_t pid; int dash_l_set = 0; @@ -406,7 +407,7 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char **remote_argv, in cmd = rsh_env; if (!cmd) cmd = RSYNC_RSH; - cmd = strdup(cmd); /*MEMORY LEAK*/ + cmd = need_to_free = strdup(cmd); if (!cmd) goto oom; @@ -538,6 +539,9 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char **remote_argv, in send_protected_args(*f_out_p, args); } + if (need_to_free) + free(need_to_free); + return pid; oom: @@ -848,6 +852,7 @@ static int do_recv(int f_in, int f_out, char *local_name) } if (pid == 0) { + am_receiver = 1; send_msgs_to_gen = am_server; close(error_pipe[0]);