mirror of
https://github.com/git/git.git
synced 2024-11-28 20:44:04 +08:00
receive-pack: convert strncpy to xsnprintf
This strncpy is pointless; we pass the strlen() of the src string, meaning that it works just like a memcpy. Worse, though, is that the size has no relation to the destination buffer, meaning it is a potential overflow. In practice, it's not. We pass only short constant strings like "warning: " and "error: ", which are much smaller than the destination buffer. We can make this much simpler by just using xsnprintf, which will check for overflow and return the size for our next vsnprintf, without us having to run a separate strlen(). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0cc4142859
commit
b7115a350b
@ -280,10 +280,10 @@ static void rp_warning(const char *err, ...) __attribute__((format (printf, 1, 2
|
||||
|
||||
static void report_message(const char *prefix, const char *err, va_list params)
|
||||
{
|
||||
int sz = strlen(prefix);
|
||||
int sz;
|
||||
char msg[4096];
|
||||
|
||||
strncpy(msg, prefix, sz);
|
||||
sz = xsnprintf(msg, sizeof(msg), "%s", prefix);
|
||||
sz += vsnprintf(msg + sz, sizeof(msg) - sz, err, params);
|
||||
if (sz > (sizeof(msg) - 1))
|
||||
sz = sizeof(msg) - 1;
|
||||
|
Loading…
Reference in New Issue
Block a user