X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/89d26123ff63a788e9cb7d07df3538f9e5d536d1..a1f99493b39610e2ea9deb4bb1c71ba63bce5834:/util.c diff --git a/util.c b/util.c index cde75717..234a61e8 100644 --- a/util.c +++ b/util.c @@ -120,7 +120,7 @@ void out_of_memory(char *str) exit_cleanup(RERR_MALLOC); } -void overflow(char *str) +void overflow_exit(char *str) { rprintf(FERROR, "ERROR: buffer overflow in %s\n", str); exit_cleanup(RERR_MALLOC); @@ -892,7 +892,7 @@ char *safe_fname(const char *fname) char *t; ndx = (ndx + 1) % MAX_SAFE_NAMES; - for (t = fbuf[ndx]; *fname && limit; fname++) { + for (t = fbuf[ndx]; *fname; fname++) { if (*fname == '\\') { if ((limit -= 2) < 0) break; @@ -904,7 +904,8 @@ char *safe_fname(const char *fname) sprintf(t, "\\%03o", *(uchar*)fname); t += 4; } else { - limit--; + if (--limit < 0) + break; *t++ = *fname; } }