aboutsummaryrefslogtreecommitdiff
path: root/jim-zlib.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2016-08-29 09:30:34 +1000
committerSteve Bennett <steveb@workware.net.au>2016-08-29 09:43:07 +1000
commit9a3763207bf5fdc59022757f102841cd325bc9ce (patch)
treeec35ece691ae810b86db0b3a6c369e97e42c9ea3 /jim-zlib.c
parentcc6d59e7bb61f49c77bd89fbf49815279bcda11a (diff)
downloadjimtcl-9a3763207bf5fdc59022757f102841cd325bc9ce.zip
jimtcl-9a3763207bf5fdc59022757f102841cd325bc9ce.tar.gz
jimtcl-9a3763207bf5fdc59022757f102841cd325bc9ce.tar.bz2
zlib: Don't use PASTE for INTMAX error messages
Can lead to different results on different compilers. Reported-by: Danyil Bohdan <danyil.bohdan@gmail.com> Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-zlib.c')
-rw-r--r--jim-zlib.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/jim-zlib.c b/jim-zlib.c
index 6965d79..4bf88a4 100644
--- a/jim-zlib.c
+++ b/jim-zlib.c
@@ -37,13 +37,20 @@
#include <jim.h>
#include <jim-subcmd.h>
-#define _PASTE(x) # x
-#define PASTE(x) _PASTE(x)
-
#define WBITS_GZIP (MAX_WBITS | 16)
/* use small 64K chunks if no size was specified during decompression, to reduce memory consumption */
#define DEF_DECOMPRESS_BUFSIZ (64 * 1024)
+static int JimZlibCheckBufSize(Jim_Interp *interp, jim_wide bufsiz)
+{
+ if ((bufsiz <= 0) || (bufsiz > INT_MAX)) {
+ Jim_SetResultString(interp, "buffer size must be 0 to ", -1);
+ Jim_AppendObj(interp, Jim_GetResult(interp), Jim_NewIntObj(interp, INT_MAX));
+ return JIM_ERR;
+ }
+ return JIM_OK;
+}
+
static int Jim_Crc32(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
long init;
@@ -155,8 +162,7 @@ static int Jim_Decompress(Jim_Interp *interp, const char *in, int len, long bufs
Jim_Obj *out;
int ret;
- if ((bufsiz <= 0) || (bufsiz > INT_MAX)) {
- Jim_SetResultString(interp, "buffer size must be 0 to "PASTE(INT_MAX), -1);
+ if (JimZlibCheckBufSize(interp, bufsiz)) {
return JIM_ERR;
}
@@ -219,8 +225,7 @@ static int Jim_Inflate(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
return JIM_ERR;
}
- if ((bufsiz <= 0) || (bufsiz > INT_MAX)) {
- Jim_SetResultString(interp, "buffer size must be 0 to "PASTE(INT_MAX), -1);
+ if (JimZlibCheckBufSize(interp, bufsiz)) {
return JIM_ERR;
}
}