[gs-commits] mupdf 1.16.1.65 Avoid comparing EOF to unsigned values wh
[email protected] (Sebastian Rasmussen) Tue, 1 Oct 2019 14:55:52 +0000 (UTC)
| Newsgroups | gmane.comp.printing.ghostscript.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit f715fc1d18bf8a7cd136ca36a57194904ab0507b Author: Sebastian Rasmussen <[email protected]> Date: Fri Sep 27 18:15:41 2019 +0200 Avoid comparing EOF to unsigned values when reading streams. diff --git a/source/fitz/stream-read.c b/source/fitz/stream-read.c index 90c968a..dcb42e0 100644 --- a/source/fitz/stream-read.c +++ b/source/fitz/stream-read.c @@ -276,100 +276,94 @@ fz_read_file(fz_context *ctx, const char *filename) */ uint16_t fz_read_uint16(fz_context *ctx, fz_stream *stm) { - uint32_t a = fz_read_byte(ctx, stm); - uint32_t b = fz_read_byte(ctx, stm); - uint32_t x = (a<<8) | (b); + int a = fz_read_byte(ctx, stm); + int b = fz_read_byte(ctx, stm); if (a == EOF || b == EOF) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end of file in int16"); - return x; + return ((uint16_t)a<<8) | ((uint16_t)b); } uint32_t fz_read_uint24(fz_context *ctx, fz_stream *stm) { - uint32_t a = fz_read_byte(ctx, stm); - uint32_t b = fz_read_byte(ctx, stm); - uint32_t c = fz_read_byte(ctx, stm); - uint32_t x = (a<<16) | (b<<8) | (c); + int a = fz_read_byte(ctx, stm); + int b = fz_read_byte(ctx, stm); + int c = fz_read_byte(ctx, stm); if (a == EOF || b == EOF || c == EOF) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end of file in int24"); - return x; + return ((uint32_t)a<<16) | ((uint32_t)b<<8) | ((uint32_t)c); } uint32_t fz_read_uint32(fz_context *ctx, fz_stream *stm) { - uint32_t a = fz_read_byte(ctx, stm); - uint32_t b = fz_read_byte(ctx, stm); - uint32_t c = fz_read_byte(ctx, stm); - uint32_t d = fz_read_byte(ctx, stm); - uint32_t x = (a<<24) | (b<<16) | (c<<8) | (d); + int a = fz_read_byte(ctx, stm); + int b = fz_read_byte(ctx, stm); + int c = fz_read_byte(ctx, stm); + int d = fz_read_byte(ctx, stm); if (a == EOF || b == EOF || c == EOF || d == EOF) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end of file in int32"); - return x; + return ((uint32_t)a<<24) | ((uint32_t)b<<16) | ((uint32_t)c<<8) | ((uint32_t)d); } uint64_t fz_read_uint64(fz_context *ctx, fz_stream *stm) { - uint64_t a = fz_read_byte(ctx, stm); - uint64_t b = fz_read_byte(ctx, stm); - uint64_t c = fz_read_byte(ctx, stm); - uint64_t d = fz_read_byte(ctx, stm); - uint64_t e = fz_read_byte(ctx, stm); - uint64_t f = fz_read_byte(ctx, stm); - uint64_t g = fz_read_byte(ctx, stm); - uint64_t h = fz_read_byte(ctx, stm); - uint64_t x = (a<<56) | (b<<48) | (c<<40) | (d<<32) | (e<<24) | (f<<16) | (g<<8) | (h); + int a = fz_read_byte(ctx, stm); + int b = fz_read_byte(ctx, stm); + int c = fz_read_byte(ctx, stm); + int d = fz_read_byte(ctx, stm); + int e = fz_read_byte(ctx, stm); + int f = fz_read_byte(ctx, stm); + int g = fz_read_byte(ctx, stm); + int h = fz_read_byte(ctx, stm); if (a == EOF || b == EOF || c == EOF || d == EOF || e == EOF || f == EOF || g == EOF || h == EOF) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end of file in int64"); - return x; + return ((uint64_t)a<<56) | ((uint64_t)b<<48) | ((uint64_t)c<<40) | ((uint64_t)d<<32) + | ((uint64_t)e<<24) | ((uint64_t)f<<16) | ((uint64_t)g<<8) | ((uint64_t)h); } uint16_t fz_read_uint16_le(fz_context *ctx, fz_stream *stm) { - uint32_t a = fz_read_byte(ctx, stm); - uint32_t b = fz_read_byte(ctx, stm); - uint32_t x = (a) | (b<<8); + int a = fz_read_byte(ctx, stm); + int b = fz_read_byte(ctx, stm); if (a == EOF || b == EOF) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end of file in int16"); - return x; + return ((uint16_t)a) | ((uint16_t)b<<8); } uint32_t fz_read_uint24_le(fz_context *ctx, fz_stream *stm) { - uint32_t a = fz_read_byte(ctx, stm); - uint32_t b = fz_read_byte(ctx, stm); - uint32_t c = fz_read_byte(ctx, stm); - uint32_t x = (a) | (b<<8) | (c<<16); + int a = fz_read_byte(ctx, stm); + int b = fz_read_byte(ctx, stm); + int c = fz_read_byte(ctx, stm); if (a == EOF || b == EOF || c == EOF) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end of file in int24"); - return x; + return ((uint32_t)a) | ((uint32_t)b<<8) | ((uint32_t)c<<16); } uint32_t fz_read_uint32_le(fz_context *ctx, fz_stream *stm) { - uint32_t a = fz_read_byte(ctx, stm); - uint32_t b = fz_read_byte(ctx, stm); - uint32_t c = fz_read_byte(ctx, stm); - uint32_t d = fz_read_byte(ctx, stm); - uint32_t x = (a) | (b<<8) | (c<<16) | (d<<24); + int a = fz_read_byte(ctx, stm); + int b = fz_read_byte(ctx, stm); + int c = fz_read_byte(ctx, stm); + int d = fz_read_byte(ctx, stm); if (a == EOF || b == EOF || c == EOF || d == EOF) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end of file in int32"); - return x; + return ((uint32_t)a) | ((uint32_t)b<<8) | ((uint32_t)c<<16) | ((uint32_t)d<<24); } uint64_t fz_read_uint64_le(fz_context *ctx, fz_stream *stm) { - uint64_t a = fz_read_byte(ctx, stm); - uint64_t b = fz_read_byte(ctx, stm); - uint64_t c = fz_read_byte(ctx, stm); - uint64_t d = fz_read_byte(ctx, stm); - uint64_t e = fz_read_byte(ctx, stm); - uint64_t f = fz_read_byte(ctx, stm); - uint64_t g = fz_read_byte(ctx, stm); - uint64_t h = fz_read_byte(ctx, stm); - uint64_t x = (a) | (b<<8) | (c<<16) | (d<<24) | (e<<32) | (f<<40) | (g<<48) | (h<<56); + int a = fz_read_byte(ctx, stm); + int b = fz_read_byte(ctx, stm); + int c = fz_read_byte(ctx, stm); + int d = fz_read_byte(ctx, stm); + int e = fz_read_byte(ctx, stm); + int f = fz_read_byte(ctx, stm); + int g = fz_read_byte(ctx, stm); + int h = fz_read_byte(ctx, stm); if (a == EOF || b == EOF || c == EOF || d == EOF || e == EOF || f == EOF || g == EOF || h == EOF) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end of file in int64"); - return x; + return ((uint64_t)a) | ((uint64_t)b<<8) | ((uint64_t)c<<16) | ((uint64_t)d<<24) + | ((uint64_t)e<<32) | ((uint64_t)f<<40) | ((uint64_t)g<<48) | ((uint64_t)h<<56); } int16_t fz_read_int16(fz_context *ctx, fz_stream *stm) { return (int16_t)fz_read_uint16(ctx, stm); } http://git.ghostscript.com/?p=mupdf.git;a=commit;h=f715fc1d18bf8a7cd136ca36a57194904ab0507b -- MuPDF library Artifex Software, Inc.