[CABMAN]
authorDavid Quintana <gigaherz@gmail.com>
Mon, 24 Jul 2017 18:37:25 +0000 (18:37 +0000)
committerDavid Quintana <gigaherz@gmail.com>
Mon, 24 Jul 2017 18:37:25 +0000 (18:37 +0000)
Fix pointer math ('unsigned long' will truncate the pointer).

[MKISOFS/SCHILY TOOLS]
Fix the invalid assumption that a 'long' variable can hold pointers. Will be sent upstream.

With this the whole of reactos and rostests builds on x64. Rosapps still has issues.

svn path=/trunk/; revision=75399

reactos/sdk/tools/cabman/mszip.cxx
reactos/sdk/tools/mkisofs/schilytools/include/schily/schily.h
reactos/sdk/tools/mkisofs/schilytools/libschily/format.c
reactos/sdk/tools/mkisofs/schilytools/libschily/jsprintf.c
reactos/sdk/tools/mkisofs/schilytools/libschily/jssnprintf.c

index 159dee2..acb9ba0 100644 (file)
@@ -74,7 +74,7 @@ ULONG CMSZipCodec::Compress(void* OutputBuffer,
 
     ZStream.next_in   = (unsigned char*)InputBuffer;
     ZStream.avail_in  = InputLength;
-    ZStream.next_out  = (unsigned char*)((unsigned long)OutputBuffer + 2);
+    ZStream.next_out  = ((unsigned char *)OutputBuffer + 2);
     ZStream.avail_out = CAB_BLOCKSIZE + 12;
 
     /* WindowBits is passed < 0 to tell that there is no zlib header */
@@ -137,7 +137,7 @@ ULONG CMSZipCodec::Uncompress(void* OutputBuffer,
         return CS_BADSTREAM;
     }
 
-    ZStream.next_in   = (unsigned char*)((unsigned long)InputBuffer + 2);
+    ZStream.next_in   = ((unsigned char*)InputBuffer + 2);
     ZStream.avail_in  = InputLength - 2;
     ZStream.next_out  = (unsigned char*)OutputBuffer;
     ZStream.avail_out = CAB_BLOCKSIZE + 12;
index d48abbe..3f94439 100644 (file)
@@ -47,6 +47,9 @@
 #ifndef _SCHILY_CCOMDEFS_H
 #include <schily/ccomdefs.h>
 #endif
+#ifndef _SCHILY_STDINT_H
+#include <schily/stdint.h>
+#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -464,12 +467,12 @@ extern    size_t  wcslcatl __PR((wchar_t *, size_t, ...));
 extern int     wcseql __PR((const wchar_t *, const wchar_t *));
 #endif
 #ifdef va_arg
-extern int     format __PR((void (*)(char, long), long, const char *,
+extern int     format __PR((void (*)(char, intptr_t), intptr_t, const char *,
                                                        va_list));
-extern int     fprformat __PR((long, const char *, va_list));
+extern int     fprformat __PR((intptr_t, const char *, va_list));
 #else
-extern int     format __PR((void (*)(char, long), long, const char *, void *));
-extern int     fprformat __PR((long, const char *, void *));
+extern int     format __PR((void (*)(char, intptr_t), intptr_t, const char *, void *));
+extern int     fprformat __PR((intptr_t, const char *, void *));
 #endif
 
 extern int     ftoes __PR((char *, double, int, int));
index ca98ba0..62aa138 100644 (file)
@@ -138,9 +138,9 @@ typedef struct f_args {
        char    *ptr;                   /* Current ptr in buf           */
        int     cnt;                    /* Free char count in buf       */
 #else
-       void  (*outf)__PR((char, long)); /* Func from format(fun, arg)  */
+       void  (*outf)__PR((char, intptr_t)); /* Func from format(fun, arg)      */
 #endif
-       long    farg;                   /* Arg from format (fun, arg)   */
+       intptr_t        farg;                   /* Arg from format (fun, arg)   */
        int     minusflag;              /* Fieldwidth is negative       */
        int     flags;                  /* General flags (+-#)          */
        int     fldwidth;               /* Field width as in %3d        */
@@ -227,7 +227,7 @@ xflsbuf(c, ap)
 #define        FORMAT_FUNC_NAME        format
 #define        FORMAT_FUNC_PARM
 
-#define        FORMAT_FUNC_PROTO_DECL  void (*fun)(char, long),
+#define        FORMAT_FUNC_PROTO_DECL  void (*fun)(char, intptr_t),
 #define        FORMAT_FUNC_KR_DECL     register void (*fun)();
 #define        FORMAT_FUNC_KR_ARGS     fun,
 
@@ -243,14 +243,14 @@ xflsbuf(c, ap)
 #ifdef PROTOTYPES
 EXPORT int
 FORMAT_FUNC_NAME(FORMAT_FUNC_PROTO_DECL
-                       long farg,
+                       intptr_t farg,
                        const char *fmt,
                        va_list oargs)
 #else
 EXPORT int
 FORMAT_FUNC_NAME(FORMAT_FUNC_KR_ARGS farg, fmt, oargs)
        FORMAT_FUNC_KR_DECL
-       register long   farg;
+       register intptr_t       farg;
        register char   *fmt;
        va_list         oargs;
 #endif
@@ -292,7 +292,7 @@ FORMAT_FUNC_NAME(FORMAT_FUNC_KR_ARGS farg, fmt, oargs)
                fa.ptr  = fa.iobuf;
                fa.fp   = (FILE *)farg;
                fa.err  = 0;
-               farg    = fa.farg = (long)&fa;
+               farg    = fa.farg = (intptr_t)&fa;
        } else {                        /* recursion            */
                farg &= ~1;
        }
@@ -1023,7 +1023,7 @@ error sizeof (ptrdiff_t) is unknown
        }
 out:
 #ifdef FORMAT_BUFFER
-       if (farg == (long)&fa) {        /* Top level call, flush buffer */
+       if (farg == (intptr_t)&fa) {    /* Top level call, flush buffer */
                if (fa.err)
                        return (EOF);
                if ((fa.ptr != fa.iobuf) &&
@@ -1208,9 +1208,9 @@ prbuf(s, fa)
 {
        register int diff;
        register int rfillc;
-       register long arg                       = fa->farg;
+       register intptr_t arg                   = fa->farg;
 #ifdef FORMAT_FUNC_PARM
-       register void (*fun) __PR((char, long)) = fa->outf;
+       register void (*fun) __PR((char, intptr_t))     = fa->outf;
 #endif
        register int count;
        register int lzero = 0;
@@ -1274,9 +1274,9 @@ prc(c, fa)
 {
        register int diff;
        register int rfillc;
-       register long arg                       = fa->farg;
+       register intptr_t arg                   = fa->farg;
 #ifdef FORMAT_FUNC_PARM
-       register void (*fun) __PR((char, long)) = fa->outf;
+       register void (*fun) __PR((char, intptr_t))     = fa->outf;
 #endif
        register int count;
 
index e9192aa..da9b1a0 100644 (file)
@@ -57,7 +57,7 @@ js_printf(form, va_alist)
 #else
        va_start(args);
 #endif
-       ret = fprformat((long)stdout, form, args);
+       ret = fprformat((intptr_t)stdout, form, args);
        va_end(args);
        return (ret);
 }
@@ -82,7 +82,7 @@ js_fprintf(file, form, va_alist)
 #else
        va_start(args);
 #endif
-       ret = fprformat((long)file, form, args);
+       ret = fprformat((intptr_t)file, form, args);
        va_end(args);
        return (ret);
 }
@@ -103,7 +103,7 @@ typedef struct {
 } *BUF, _BUF;
 
 LOCAL  void    _bflush         __PR((BUF));
-LOCAL  void    _bput           __PR((char, long));
+LOCAL  void    _bput           __PR((char, intptr_t));
 EXPORT int     js_fprintf      __PR((FILE *, const char *, ...));
 EXPORT int     js_printf       __PR((const char *, ...));
 
@@ -120,12 +120,12 @@ _bflush(bp)
 
 #ifdef PROTOTYPES
 LOCAL void
-_bput(char c, long l)
+_bput(char c, intptr_t l)
 #else
 LOCAL void
 _bput(c, l)
                char    c;
-               long    l;
+               intptr_t        l;
 #endif
 {
        register BUF    bp = (BUF)l;
@@ -158,7 +158,7 @@ js_printf(form, va_alist)
 #else
        va_start(args);
 #endif
-       format(_bput, (long)&bb, form, args);
+       format(_bput, (intptr_t)&bb, form, args);
        va_end(args);
        if (bb.cnt < BFSIZ)
                _bflush(&bb);
@@ -189,7 +189,7 @@ js_fprintf(file, form, va_alist)
 #else
        va_start(args);
 #endif
-       format(_bput, (long)&bb, form, args);
+       format(_bput, (intptr_t)&bb, form, args);
        va_end(args);
        if (bb.cnt < BFSIZ)
                _bflush(&bb);
index 37f756e..80c71d6 100644 (file)
@@ -33,12 +33,12 @@ typedef struct {
 
 #ifdef PROTOTYPES
 static void
-_cput(char c, long l)
+_cput(char c, intptr_t l)
 #else
 static void
 _cput(c, l)
        char    c;
-       long    l;
+       intptr_t        l;
 #endif
 {
        register BUF    bp = (BUF)l;
@@ -78,7 +78,7 @@ js_snprintf(buf, maxcnt, form, va_alist)
 #else
        va_start(args);
 #endif
-       cnt = format(_cput, (long)&bb, form,  args);
+       cnt = format(_cput, (intptr_t)&bb, form,  args);
        va_end(args);
        if (maxcnt > 0)
                *(bb.ptr) = '\0';