X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/9baed7609ca497814e6ad3ea6e4b315caca2bb4e..dcbae65444a82532d9a0e5caf5b3861ed1e6f95f:/log.c diff --git a/log.c b/log.c index 148d6b15..c6d2fc81 100644 --- a/log.c +++ b/log.c @@ -369,7 +369,7 @@ static void log_formatted(enum logcode code, char *format, char *op, n = fmt + 1; if (*p == '-') *n++ = *p++; - while (isdigit(*(uchar*)p) && n - fmt < 16) + while (isdigit(*(uchar*)p) && n - fmt < (int)(sizeof fmt) - 8) *n++ = *p++; *n = '\0'; n = NULL; @@ -397,7 +397,10 @@ static void log_formatted(enum logcode code, char *format, char *op, file->dir.root, n); /* The buffer from safe_fname() has more * room than MAXPATHLEN, so this is safe. */ - strcpy(n, buf2); + if (fmt[1]) + strcpy(n, buf2); + else + n = buf2; } clean_fname(n, 0); if (*n == '/') @@ -456,7 +459,7 @@ static void log_formatted(enum logcode code, char *format, char *op, n = "*deleting"; break; } - n = buf2; + n = buf2 + MAXPATHLEN - 32; n[0] = iflags & ITEM_LOCAL_CHANGE ? iflags & ITEM_XNAME_FOLLOWS ? 'h' : 'c' : !(iflags & ITEM_TRANSFER) ? '.'