Commit d1c06c21 authored by Wayne Davison's avatar Wayne Davison

Fixing a problem with a NULL config_file pointer when accessing

a single-use daemon without no --config option specified.  Added
a test to ensure that this doesn't break in the future.
parent 800a4485
......@@ -864,6 +864,17 @@ static void send_listing(int fd)
io_printf(fd,"@RSYNCD: EXIT\n");
}
static int load_config(int globals_only)
{
if (!config_file) {
if (am_server && am_root <= 0)
config_file = RSYNCD_USERCONF;
else
config_file = RSYNCD_SYSCONF;
}
return lp_load(config_file, globals_only);
}
/* this is called when a connection is established to a client
and we want to start talking. The setup of the system is done from
here */
......@@ -879,7 +890,7 @@ int start_daemon(int f_in, int f_out)
* might cause log-file output to occur. This ensures that the
* "log file" param gets honored for the 2 non-forked use-cases
* (when rsync is run by init and run by a remote shell). */
if (!lp_load(config_file, 0))
if (!load_config(0))
exit_cleanup(RERR_SYNTAX);
addr = client_addr(f_in);
......@@ -988,13 +999,6 @@ static void become_daemon(void)
int daemon_main(void)
{
if (!config_file) {
if (am_server && am_root <= 0)
config_file = RSYNCD_USERCONF;
else
config_file = RSYNCD_SYSCONF;
}
if (is_a_socket(STDIN_FILENO)) {
int i;
......@@ -1009,7 +1013,7 @@ int daemon_main(void)
return start_daemon(STDIN_FILENO, STDIN_FILENO);
}
if (!lp_load(config_file, 1)) {
if (!load_config(1)) {
fprintf(stderr, "Failed to parse config file: %s\n", config_file);
exit_cleanup(RERR_SYNTAX);
}
......
......@@ -24,8 +24,29 @@
. "$suitedir/rsync.fns"
SSH="$scratchdir/pretend-ssh"
cat >"$SSH" <<'EOT'
while : ; do
case "$1" in
-*) shift ;;
localhost) shift; break ;;
*) exit 1 ;;
esac
done
eval "${@}"
EOT
chmod +x "$SSH"
build_rsyncd_conf
cd "$scratchdir"
ln -s test-rsyncd.conf rsyncd.conf
$RSYNC -ve $SSH --rsync-path="$RSYNC" localhost::
RSYNC_CONNECT_PROG="$RSYNC --config=$conf --daemon"
export RSYNC_CONNECT_PROG
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment