diff options
author | Andrey Nazarov <skuller@skuller.net> | 2012-06-03 22:26:53 +0400 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2012-06-03 22:26:53 +0400 |
commit | 5fd65a89926162883c36a284a0b2141dcc8ad2df (patch) | |
tree | 5d7a620afcb1d0965ec13d39e7820c603da02334 /src/common.c | |
parent | c66d9a2794682aa4c8cb43af5ac5d996f3ff5583 (diff) |
Detect redirection buffer overflow in a safer way.
Diffstat (limited to 'src/common.c')
-rw-r--r-- | src/common.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/common.c b/src/common.c index cd0d947..0641989 100644 --- a/src/common.c +++ b/src/common.c @@ -125,7 +125,7 @@ static rdflush_t rd_flush; void Com_BeginRedirect(int target, char *buffer, size_t buffersize, rdflush_t flush) { - if (rd_target || !target || !buffer || buffersize < 1 || !flush) { + if (rd_target || !target || !buffer || !buffersize || !flush) { return; } rd_target = target; @@ -166,7 +166,7 @@ static void Com_Redirect(const char *msg, size_t total) if (length > rd_buffersize) { length = rd_buffersize; } - if (rd_length + length > rd_buffersize) { + if (rd_length > rd_buffersize - length) { rd_flush(rd_target, rd_buffer, rd_length); rd_length = 0; } |