Use "use warnings" rather than -w on the #! line.
[rsync/rsync-patches.git] / remote-option.diff
index 481361a..481390d 100644 (file)
@@ -25,7 +25,7 @@ diff --git a/options.c b/options.c
  int verbose = 0;
  int quiet = 0;
  int output_motd = 1;
-@@ -387,6 +391,7 @@ void usage(enum logcode F)
+@@ -388,6 +392,7 @@ void usage(enum logcode F)
    rprintf(F,"     --timeout=SECONDS       set I/O timeout in seconds\n");
    rprintf(F,"     --contimeout=SECONDS    set daemon connection timeout in seconds\n");
    rprintf(F," -I, --ignore-times          don't skip files that match in size and mod-time\n");
@@ -33,7 +33,7 @@ diff --git a/options.c b/options.c
    rprintf(F,"     --size-only             skip files that match in size\n");
    rprintf(F,"     --modify-window=NUM     compare mod-times with reduced accuracy\n");
    rprintf(F," -T, --temp-dir=DIR          create temporary files in directory DIR\n");
-@@ -645,6 +650,7 @@ static struct poptOption long_options[] = {
+@@ -646,6 +651,7 @@ static struct poptOption long_options[] = {
    {"password-file",    0,  POPT_ARG_STRING, &password_file, 0, 0, 0 },
    {"blocking-io",      0,  POPT_ARG_VAL,    &blocking_io, 1, 0, 0 },
    {"no-blocking-io",   0,  POPT_ARG_VAL,    &blocking_io, 0, 0, 0 },
@@ -41,7 +41,7 @@ diff --git a/options.c b/options.c
    {"protocol",         0,  POPT_ARG_INT,    &protocol_version, 0, 0, 0 },
    {"checksum-seed",    0,  POPT_ARG_INT,    &checksum_seed, 0, 0, 0 },
    {"server",           0,  POPT_ARG_NONE,   0, OPT_SERVER, 0, 0 },
-@@ -1140,6 +1146,26 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1141,6 +1147,26 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        }
                        break;
  
@@ -52,7 +52,7 @@ diff --git a/options.c b/options.c
 +                                      "Remote option must start with a dash: %s\n", arg);
 +                              return 0;
 +                      }
-+                      if (remote_option_cnt+3 > remote_option_alloc) {
++                      if (remote_option_cnt+2 >= remote_option_alloc) {
 +                              remote_option_alloc += 16;
 +                              remote_options = realloc_array(remote_options,
 +                                                      const char *, remote_option_alloc);
@@ -68,27 +68,10 @@ diff --git a/options.c b/options.c
                case OPT_WRITE_BATCH:
                        /* batch_name is already set */
                        write_batch = 1;
-@@ -1826,6 +1852,11 @@ void server_options(char **args, int *argc_p)
- #endif
-       argstr[x] = '\0';
-+      if (x > (int)sizeof argstr) { /* Not possible... */
-+              rprintf(FERROR, "argstr overflow in server_options().\n");
-+              exit_cleanup(RERR_MALLOC);
-+      }
-+
-       args[ac++] = argstr;
- #ifdef ICONV_OPTION
-@@ -2048,6 +2079,21 @@ void server_options(char **args, int *argc_p)
+@@ -2063,6 +2089,16 @@ void server_options(char **args, int *argc_p)
        else if (remove_source_files)
                args[ac++] = "--remove-sent-files";
  
-+      if (ac > MAX_SERVER_ARGS) { /* Not possible... */
-+              rprintf(FERROR, "argc overflow in server_options().\n");
-+              exit_cleanup(RERR_MALLOC);
-+      }
-+
 +      if (remote_option_cnt) {
 +              int j;
 +              if (ac + remote_option_cnt > MAX_SERVER_ARGS) {
@@ -99,9 +82,9 @@ diff --git a/options.c b/options.c
 +                      args[ac++] = (char*)remote_options[j];
 +      }
 +
-       *argc_p = ac;
-       return;
+       if (ac > MAX_SERVER_ARGS) { /* Not possible... */
+               rprintf(FERROR, "argc overflow in server_options().\n");
+               exit_cleanup(RERR_MALLOC);
 diff --git a/pipe.c b/pipe.c
 --- a/pipe.c
 +++ b/pipe.c
@@ -133,7 +116,7 @@ diff --git a/pipe.c b/pipe.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -412,6 +412,7 @@ to the detailed description below for a complete description.  verb(
+@@ -416,6 +416,7 @@ to the detailed description below for a complete description.  verb(
       --progress              show progress during transfer
   -P                          same as --partial --progress
   -i, --itemize-changes       output a change-summary for all updates
@@ -141,7 +124,7 @@ diff --git a/rsync.yo b/rsync.yo
       --out-format=FORMAT     output updates using the specified FORMAT
       --log-file=FILE         log what we're doing to the specified FILE
       --log-file-format=FMT   log updates using the specified FMT
-@@ -1026,16 +1027,16 @@ This is a good way to backup data without using a super-user, and to store
+@@ -1030,16 +1031,16 @@ This is a good way to backup data without using a super-user, and to store
  ACLs from incompatible systems.
  
  The bf(--fake-super) option only affects the side where the option is used.
@@ -166,7 +149,7 @@ diff --git a/rsync.yo b/rsync.yo
  
  This option is overridden by both bf(--super) and bf(--no-super).
  
-@@ -1281,6 +1282,36 @@ machine for use with the bf(--relative) option.  For instance:
+@@ -1292,6 +1293,36 @@ machine for use with the bf(--relative) option.  For instance:
  
  quote(tt(    rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/))
  
@@ -203,7 +186,7 @@ diff --git a/rsync.yo b/rsync.yo
  dit(bf(-C, --cvs-exclude)) This is a useful shorthand for excluding a
  broad range of files that you often don't want to transfer between
  systems. It uses a similar algorithm to CVS to determine if
-@@ -1752,7 +1783,7 @@ option if you wish to override this.
+@@ -1768,7 +1799,7 @@ option if you wish to override this.
  Here's a example command that requests the remote side to log what is
  happening: