File libpano-invalid-write.patch of Package libpano
--- filter.c
+++ filter.c
@@ -1281,22 +1281,22 @@
}
/* ENDIAN aware file i/o funtions. Used for reading and writing photoshop files */
-Boolean panoWriteUCHAR(file_spec fnum, UCHAR theChar )
+Boolean panoWriteUCHAR(nfile_spec fnum, UCHAR theChar )
{
- return write( fnum, 1, &theChar ) == 1;
+ return write( fnum, &theChar, 1 ) == 1;
}
-Boolean panoWriteSHORT(file_spec fnum, USHORT theShort )
+Boolean panoWriteSHORT(nfile_spec fnum, USHORT theShort )
{
char data[2], *d;
d = data;
assert(sizeof(USHORT) == 2);
SHORTNUMBER( theShort, d );
- return write( fnum, 2, data ) == 2;
+ return write( fnum, data, 2 ) == 2;
}
-Boolean panoWriteINT32(file_spec fnum, ULONG theLong )
+Boolean panoWriteINT32(nfile_spec fnum, ULONG theLong )
{
size_t count = 4;
char data[4], *d;
@@ -1306,19 +1306,19 @@
LONGNUMBER( theLong, d );
- return write( fnum, 4, data ) == 4;
+ return write( fnum, data, 4 ) == 4;
}
-Boolean panoReadUCHAR(file_spec fnum, UCHAR *pChar )
+Boolean panoReadUCHAR(nfile_spec fnum, UCHAR *pChar )
{
- return read( fnum, 1, pChar )== 1;
+ return read( fnum, pChar, 1 )== 1;
}
-Boolean panoReadSHORT(file_spec fnum, USHORT *pShort )
+Boolean panoReadSHORT(nfile_spec fnum, USHORT *pShort )
{
char data[2];
char *d;
- if (read( fnum, 2, data ) != 2) {
+ if (read( fnum, data, 2 ) != 2) {
return FALSE;
}
@@ -1329,10 +1329,10 @@
return TRUE;
}
-Boolean panoReadINT32(file_spec fnum, ULONG *pLong )
+Boolean panoReadINT32(nfile_spec fnum, ULONG *pLong )
{
char data[4], *d;
- if (read( fnum, 4, data )!= 4) {
+ if (read( fnum, data, 4 )!= 4) {
return FALSE;
}
d = data;
--- filter.h
+++ filter.h
@@ -947,6 +947,7 @@
#include "sys_mac.h"
#define file_spec short
+ #define nfile_spec short
#define myopen( path, perm, fspec ) ( FSpOpenDF( path, perm, &fspec ) != noErr )
#define mywrite( fspec, count, data ) FSWrite (fspec, &count, data)
#define myread( fspec, count, data ) FSRead (fspec, &count, data)
@@ -962,6 +963,7 @@
#else // __Mac__, use ANSI-filefunctions
#define file_spec FILE*
+ #define nfile_spec int
#define myopen( path, perm, fspec ) ( (fspec = fopen( (path)->name, perm )) == NULL)
#define mywrite( fspec, count, data ) count = fwrite( data, 1, count, fspec)
#define myread( fspec, count, data ) count = fread( data, 1, count, fspec )
@@ -988,12 +990,12 @@
#endif
/* ENDIAN aware file i/o funtions. Used for reading and writing photoshop files */
-Boolean panoWriteUCHAR(file_spec fnum, UCHAR theChar );
-Boolean panoWriteSHORT(file_spec fnum, USHORT theShort );
-Boolean panoWriteINT32(file_spec fnum, ULONG theLong );
-Boolean panoReadUCHAR (file_spec fnum, UCHAR *pChar );
-Boolean panoReadSHORT (file_spec fnum, USHORT *pShort );
-Boolean panoReadINT32 (file_spec fnum, ULONG *pLong );
+Boolean panoWriteUCHAR(nfile_spec fnum, UCHAR theChar );
+Boolean panoWriteSHORT(nfile_spec fnum, USHORT theShort );
+Boolean panoWriteINT32(nfile_spec fnum, ULONG theLong );
+Boolean panoReadUCHAR (nfile_spec fnum, UCHAR *pChar );
+Boolean panoReadSHORT (nfile_spec fnum, USHORT *pShort );
+Boolean panoReadINT32 (nfile_spec fnum, ULONG *pLong );
#define PANO_DEFAULT_PIXELS_PER_RESOLUTION 150.0