X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/1a7f3d99c5d4bcb5f38e2143bfb99fdf571fab69..a27463a9a2ea8c2bfbd4059be95924909ff1c8ed:/options.c diff --git a/options.c b/options.c index a568643f..5a3b2463 100644 --- a/options.c +++ b/options.c @@ -613,8 +613,9 @@ static char err_buf[200]; void option_error(void) { if (!err_buf[0]) { - strcpy(err_buf, "Error parsing options: " - "option may be supported on client but not on server?\n"); + strlcpy(err_buf, "Error parsing options: option may " + "be supported on client but not on server?\n", + sizeof err_buf); } rprintf(FERROR, RSYNC_NAME ": %s", err_buf); @@ -832,7 +833,9 @@ int parse_arguments(int *argc, const char ***argv, int frommain) case OPT_DAEMON: if (am_daemon) { - strcpy(err_buf, "Attempt to hack rsync thwarted!\n"); + strlcpy(err_buf, + "Attempt to hack rsync thwarted!\n", + sizeof err_buf); return 0; } poptFreeContext(pc); @@ -1391,7 +1394,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain) clean_fname(partial_dir, 1); if (!*partial_dir || strcmp(partial_dir, ".") == 0) partial_dir = NULL; - else if (*partial_dir != '/') { + else if (*partial_dir != '/' && !am_server) { parse_rule(&filter_list, partial_dir, MATCHFLG_NO_PREFIXES|MATCHFLG_DIRECTORY, 0); } @@ -1499,7 +1502,7 @@ void server_options(char **args,int *argc) argstr[x++] = 'n'; if (preserve_links) argstr[x++] = 'l'; - if (xfer_dirs > (recurse || !delete_mode || !am_sender)) + if (xfer_dirs > (recurse || !delete_mode || !am_sender ? 1 : 0)) argstr[x++] = 'd'; if (am_sender) { if (keep_dirlinks)