diff options
author | Nick Mathewson <nickm@torproject.org> | 2006-11-14 01:07:52 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2006-11-14 01:07:52 +0000 |
commit | 9243e5417704656dbfee91d2b6e06ae19f70aa24 (patch) | |
tree | 4a1957e97e4c4d36e0af0e74da1a5162fd60b1dc /src/common/torgzip.c | |
parent | 0f6402f17b9d4017aec608b10cb031512c543bc5 (diff) | |
download | tor-9243e5417704656dbfee91d2b6e06ae19f70aa24.tar.gz tor-9243e5417704656dbfee91d2b6e06ae19f70aa24.zip |
r9313@totoro: nickm | 2006-11-13 20:07:41 -0500
Try to compile with fewer warnings on irix64's MIPSpro compiler /
environment, which apparently believes that:
- off_t can be bigger than size_t.
- only mean kids assign things they do not subsequently inspect.
I don't try to fix the "error" that makes it say:
cc-3970 cc: WARNING File = main.c, Line = 1277
conversion from pointer to same-sized integral type (potential portability
problem)
uintptr_t sig = (uintptr_t)arg;
Because really, what can you do about a compiler that claims to be c99
but doesn't understand that void* x = NULL; uintptr_t y = (uintptr_t) x;
is safe?
svn:r8948
Diffstat (limited to 'src/common/torgzip.c')
-rw-r--r-- | src/common/torgzip.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/common/torgzip.c b/src/common/torgzip.c index 83438462a2..badd45be87 100644 --- a/src/common/torgzip.c +++ b/src/common/torgzip.c @@ -121,7 +121,12 @@ tor_gzip_compress(char **out, size_t *out_len, out_size *= 2; *out = tor_realloc(*out, out_size); stream->next_out = (unsigned char*)(*out + offset); - stream->avail_out = out_size - offset; + if (out_size - offset > UINT_MAX) { + log_warn(LD_BUG, "Ran over unsigned int limit of zlib while " + "uncompressing."); + goto err; + } + stream->avail_out = (unsigned int)(out_size - offset); break; default: log_warn(LD_GENERAL, "Gzip compression didn't finish: %s", @@ -238,7 +243,12 @@ tor_gzip_uncompress(char **out, size_t *out_len, out_size *= 2; *out = tor_realloc(*out, out_size); stream->next_out = (unsigned char*)(*out + offset); - stream->avail_out = out_size - offset; + if (out_size - offset > UINT_MAX) { + log_warn(LD_BUG, "Ran over unsigned int limit of zlib while " + "uncompressing."); + goto err; + } + stream->avail_out = (unsigned int)(out_size - offset); break; default: log_warn(LD_GENERAL, "Gzip decompression returned an error: %s", |