The branch, master has been updated via d7212df0 A little more safety in negotiate_checksum(). from a28bc3eb Promoting xxhash support.
https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit d7212df0f134ac82f9afb46d478ab3ac1511c61b Author: Wayne Davison <wa...@opencoder.net> Date: Fri May 22 19:26:30 2020 -0700 A little more safety in negotiate_checksum(). ----------------------------------------------------------------------- Summary of changes: checksum.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) Changeset truncated at 500 lines: diff --git a/checksum.c b/checksum.c index 17a9507a..a21222d4 100644 --- a/checksum.c +++ b/checksum.c @@ -187,21 +187,24 @@ void negotiate_checksum(int f_in, int f_out, const char *csum_list, int saw_fail if (saw_fail && !len) len = strlcpy(sumbuf, "FAIL", sizeof sumbuf); csum_list = sumbuf; - } else + } else { + memset(saw, 0, CSUM_SAW_BUFLEN); csum_list = NULL; + } if (!csum_list || !*csum_list) { struct csum_struct *cs; - for (tok = sumbuf, cs = valid_checksums, len = 0; cs->name; cs++) { + int cnt = 0; + for (cs = valid_checksums, len = 0; cs->name; cs++) { if (cs->num == CSUM_NONE) continue; - if (tok != sumbuf) - *tok++ = ' '; - tok += strlcpy(tok, cs->name, sizeof sumbuf - (tok - sumbuf)); - saw[cs->num] = ++len; + if (len) + sumbuf[len++]= ' '; + len += strlcpy(sumbuf+len, cs->name, sizeof sumbuf - len); + if (len >= (int)sizeof sumbuf - 1) + exit_cleanup(RERR_UNSUPPORTED); /* IMPOSSIBLE... */ + saw[cs->num] = ++cnt; } - *tok = '\0'; - len = tok - sumbuf; } /* Each side sends their list of valid checksum names to the other side and -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs