Kaydet (Commit) 64be0b4a authored tarafından Guido van Rossum's avatar Guido van Rossum

When the number of bytes written to the malloc'ed buffer is larger

than the argument string size, copy as many bytes as will fit
(including a terminating '\0'), rather than not copying anything.
This to make it satisfy the C99 spec.
üst 82285dad
......@@ -40,11 +40,11 @@ int myvsnprintf(char *str, size_t size, const char *format, va_list va)
assert(len >= 0);
if ((size_t)len > size + 512)
Py_FatalError("Buffer overflow in PyOS_snprintf/PyOS_vsnprintf");
if ((size_t)len > size) {
PyMem_Free(buffer);
return len - 1;
}
memcpy(str, buffer, len);
if ((size_t)len > size)
buffer[size-1] = '\0';
else
size = len;
memcpy(str, buffer, size);
PyMem_Free(buffer);
return len - 1;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment