From: Nick Mathewson Date: Tue, 30 Nov 2004 06:15:06 +0000 (+0000) Subject: clarify why strlcpy is safe in truncated log messages X-Git-Tag: tor-0.0.9rc5~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a3477223de716134745656503a6dc6645c92f967;p=thirdparty%2Ftor.git clarify why strlcpy is safe in truncated log messages svn:r3032 --- diff --git a/src/common/log.c b/src/common/log.c index 4e5a69f1a6..3a4f32e176 100644 --- a/src/common/log.c +++ b/src/common/log.c @@ -143,15 +143,14 @@ static INLINE char *format_msg(char *buf, size_t buf_len, /* The message was too long; overwrite the end of the buffer with * "[...truncated]" */ if (buf_len >= TRUNCATED_STR_LEN) { - /* This is safe, since we have an extra character after buf_len - to hold the \0. */ - strlcpy(buf+buf_len-TRUNCATED_STR_LEN, TRUNCATED_STR, - buf_len-(buf_len-TRUNCATED_STR_LEN-1)); + int offset = buf_len-TRUNCATED_STR_LEN; + /* We have an extra 2 characters after buf_len to hold the \n\0, + * so it's safe to add 1 to the size here. */ + strlcpy(buf+offset, TRUNCATED_STR, buf_len-offset+1); } /* Set 'n' to the end of the buffer, where we'll be writing \n\0. * Since we already subtracted 2 from buf_len, this is safe.*/ n = buf_len; - } else { n += r; }