X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ad1a09a509b0920872f714fcdb8ccfcc1272d267..54bf456e8584eac5b0afdf8f7e003c79aa87ffe8:/options.c diff --git a/options.c b/options.c index b2ffa07f..d719a4d6 100644 --- a/options.c +++ b/options.c @@ -124,6 +124,7 @@ int quiet = 0; int always_checksum = 0; int list_only = 0; +#define MAX_BATCH_PREFIX_LEN 256 /* Must be less than MAXPATHLEN-13 */ char *batch_prefix = NULL; static int modify_window_set; @@ -602,6 +603,17 @@ int parse_arguments(int *argc, const char ***argv, int frommain) "write-batch and read-batch can not be used together\n"); exit_cleanup(RERR_SYNTAX); } + if (batch_prefix && strlen(batch_prefix) > MAX_BATCH_PREFIX_LEN) { + rprintf(FERROR, + "the batch-file prefix must be %d characters or less.\n", + MAX_BATCH_PREFIX_LEN); + exit_cleanup(RERR_SYNTAX); + } + + if (tmpdir && strlen(tmpdir) >= MAXPATHLEN - 10) { + rprintf(FERROR, "the --temp-dir path is WAY too long.\n"); + exit_cleanup(RERR_SYNTAX); + } if (do_compression && (write_batch || read_batch)) { rprintf(FERROR, @@ -707,7 +719,7 @@ void server_options(char **args,int *argc) static char mwindow[30]; static char bw[50]; /* Leave room for ``--(write|read)-batch='' */ - static char fext[MAXPATHLEN + 15]; + static char fext[MAX_BATCH_PREFIX_LEN + 15]; int i, x;