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;
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;
cmd = rsh_env;
if (!cmd)
cmd = RSYNC_RSH;
- cmd = strdup(cmd); /*MEMORY LEAK*/
+ cmd = need_to_free = strdup(cmd);
if (!cmd)
goto oom;
send_protected_args(*f_out_p, args);
}
+ if (need_to_free)
+ free(need_to_free);
+
return pid;
oom:
}
if (pid == 0) {
+ am_receiver = 1;
send_msgs_to_gen = am_server;
close(error_pipe[0]);