From c4d1c422f3fa9303e879dd60134394097cc7c8b0 Mon Sep 17 00:00:00 2001 From: "Evgeny Grin (Karlson2k)" Date: Sat, 18 May 2019 13:44:07 +0300 Subject: http_chunked_compression: fixed for non-64bit systems --- src/examples/http_chunked_compression.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/examples') diff --git a/src/examples/http_chunked_compression.c b/src/examples/http_chunked_compression.c index 6c55ef5f..9c3f629f 100644 --- a/src/examples/http_chunked_compression.c +++ b/src/examples/http_chunked_compression.c @@ -25,6 +25,22 @@ #include "platform.h" #include #include +#ifdef HAVE_LIMITS_H +#include +#endif /* HAVE_LIMITS_H */ +#include + +#ifndef SSIZE_MAX +#ifdef __SSIZE_MAX__ +#define SSIZE_MAX __SSIZE_MAX__ +#elif defined(PTRDIFF_MAX) +#define SSIZE_MAX PTRDIFF_MAX +#elif defined(INTPTR_MAX) +#define SSIZE_MAX INTPTR_MAX +#else +#define SSIZE_MAX ((ssize_t)(((size_t)-1)>>1)) +#endif +#endif /* ! SSIZE_MAX */ #define CHUNK 16384 @@ -89,6 +105,10 @@ read_cb (void *cls, uint64_t pos, char *mem, size_t size) void *src; void *buf; ssize_t ret; + size_t offset; + if (pos > SSIZE_MAX) + return MHD_CONTENT_READER_END_WITH_ERROR; + offset = (size_t) pos; src = malloc (size); if (NULL == src) return MHD_CONTENT_READER_END_WITH_ERROR; @@ -103,7 +123,7 @@ read_cb (void *cls, uint64_t pos, char *mem, size_t size) ret = MHD_CONTENT_READER_END_OF_STREAM; goto done; } - if (MHD_YES != compress_buf (&holder->stream, src, ret, &pos, &buf, &size, holder->buf)) + if (MHD_YES != compress_buf (&holder->stream, src, ret, &offset, &buf, &size, holder->buf)) ret = MHD_CONTENT_READER_END_WITH_ERROR; else { -- cgit v1.2.3