|
From: <lab...@us...> - 2019-08-24 01:04:53
|
Revision: 1588
http://sourceforge.net/p/opengtoolkit/svn/1588
Author: labviewer
Date: 2019-08-24 01:04:51 +0000 (Sat, 24 Aug 2019)
Log Message:
-----------
minor improvements trying to protect access to possible NULL pointers
Modified Paths:
--------------
trunk/lvzip/c_source/crypt.c
trunk/lvzip/c_source/iomem.c
trunk/lvzip/c_source/lvapi.c
trunk/lvzip/c_source/lvapi.h
trunk/lvzip/c_source/lvutil.c
trunk/lvzip/c_source/zlib.rc
Modified: trunk/lvzip/c_source/crypt.c
===================================================================
--- trunk/lvzip/c_source/crypt.c 2019-08-24 00:36:58 UTC (rev 1587)
+++ trunk/lvzip/c_source/crypt.c 2019-08-24 01:04:51 UTC (rev 1588)
@@ -36,6 +36,7 @@
# include <stdio.h>
# include <stdlib.h>
# include <sys/stat.h>
+# include <time.h>
# include <fcntl.h>
# include <unistd.h>
# include <dlfcn.h>
Modified: trunk/lvzip/c_source/iomem.c
===================================================================
--- trunk/lvzip/c_source/iomem.c 2019-08-24 00:36:58 UTC (rev 1587)
+++ trunk/lvzip/c_source/iomem.c 2019-08-24 01:04:51 UTC (rev 1588)
@@ -89,7 +89,7 @@
memio->error = 0;
if (opaque && !(mode & ZLIB_FILEFUNC_MODE_CREATE))
- memio->pos = LStrLen(*(LStrHandle)opaque);
+ memio->pos = LStrLenH((LStrHandle)opaque);
}
return memio;
}
@@ -115,8 +115,8 @@
if (mem->pos + size > 0x7FFFFFFF)
size = (uint32_t)(0x7FFFFFFF - mem->pos);
- if (mem->pos + size > (uint64_t)LStrLen(*(LStrHandle)opaque))
- size = (uint32_t)(LStrLen(*(LStrHandle)opaque) - mem->pos);
+ if (mem->pos + size > (uint64_t)LStrLenH((LStrHandle)opaque))
+ size = (uint32_t)(LStrLenH((LStrHandle)opaque) - mem->pos);
zmemcpy(buf, LStrBuf(*(LStrHandle)opaque) + mem->pos, size);
mem->pos += size;
@@ -206,9 +206,8 @@
start = mem->pos;
break;
case ZLIB_FILEFUNC_SEEK_END :
- if (opaque)
- start = LStrLen(*(LStrHandle)opaque);
- /* no break */
+ start = LStrLenH((LStrHandle)opaque);
+ /* no break */
case ZLIB_FILEFUNC_SEEK_SET :
break;
default:
Modified: trunk/lvzip/c_source/lvapi.c
===================================================================
--- trunk/lvzip/c_source/lvapi.c 2019-08-24 00:36:58 UTC (rev 1587)
+++ trunk/lvzip/c_source/lvapi.c 2019-08-24 01:04:51 UTC (rev 1588)
@@ -247,16 +247,19 @@
if (!err && comment)
{
int32 len = (int32)strlen(comment);
- err = NumericArrayResize(uB, 1, (UHandle*)globalcomment, len);
- if (!err)
+ if (len > 0)
{
- MoveBlock((ConstUPtr)comment, LStrBuf(**globalcomment), len);
- LStrLen(**globalcomment) = len;
+ err = NumericArrayResize(uB, 1, (UHandle*)globalcomment, len);
+ if (!err)
+ {
+ MoveBlock((ConstUPtr)comment, LStrBuf(**globalcomment), len);
+ LStrLen(**globalcomment) = len;
+ }
+ else
+ {
+ lvzlibDisposeRefnum(refnum, NULL, ZipMagic);
+ }
}
- else
- {
- lvzlibDisposeRefnum(refnum, NULL, ZipMagic);
- }
}
if (err)
{
@@ -319,13 +322,18 @@
LibAPI(MgErr) lvzlib_zipWriteInFileInZip(LVRefNum *refnum, const LStrHandle buffer)
{
- zipFile node;
- MgErr err = lvzlibGetRefnum(refnum, &node, ZipMagic);
- if (!err)
+ MgErr err = mgNoErr;
+ int32 len = LStrLenH(buffer);
+ if (len > 0)
{
- int retval = zipWriteInFileInZip(node, LStrBuf(*buffer), LStrLen(*buffer));
- if (retval < 0)
- return LibToMgErr(retval);
+ zipFile node;
+ err = lvzlibGetRefnum(refnum, &node, ZipMagic);
+ if (!err)
+ {
+ int retval = zipWriteInFileInZip(node, LStrBuf(*buffer), len);
+ if (retval < 0)
+ return LibToMgErr(retval);
+ }
}
return err;
}
@@ -442,16 +450,22 @@
err = LibToMgErr(unzGetGlobalInfo(node, &pglobal_info));
if (!err)
{
- err = NumericArrayResize(uB, 1, (UHandle*)comment, pglobal_info.size_comment);
- if (!err)
+ if (pglobal_info.size_comment)
{
- err = LibToMgErr(unzGetGlobalComment(node, (char*)LStrBuf(**comment), pglobal_info.size_comment));
+ err = NumericArrayResize(uB, 1, (UHandle*)comment, pglobal_info.size_comment + 1);
if (!err)
{
- LStrLen(**comment) = pglobal_info.size_comment;
- *nEntry = pglobal_info.number_entry;
+ err = LibToMgErr(unzGetGlobalComment(node, (char*)LStrBuf(**comment), pglobal_info.size_comment + 1));
}
}
+ if (*comment)
+ {
+ LStrLen(**comment) = pglobal_info.size_comment;
+ }
+ if (!err)
+ {
+ *nEntry = pglobal_info.number_entry;
+ }
}
}
return err;
@@ -467,21 +481,54 @@
err = LibToMgErr(unzGetGlobalInfo64(node, &pglobal_info));
if (!err)
{
- err = NumericArrayResize(uB, 1, (UHandle*)comment, pglobal_info.size_comment);
- if (!err)
+ if (pglobal_info.size_comment)
{
- err = LibToMgErr(unzGetGlobalComment(node, (char*)LStrBuf(**comment), pglobal_info.size_comment));
+ err = NumericArrayResize(uB, 1, (UHandle*)comment, pglobal_info.size_comment);
if (!err)
{
- LStrLen(**comment) = pglobal_info.size_comment;
- *nEntry = pglobal_info.number_entry;
+ err = LibToMgErr(unzGetGlobalComment(node, (char*)LStrBuf(**comment), pglobal_info.size_comment));
}
}
+ if (*comment)
+ {
+ LStrLen(**comment) = pglobal_info.size_comment;
+ }
+ if (!err)
+ {
+ *nEntry = pglobal_info.number_entry;
+ }
}
}
return err;
}
+static MgErr RetrieveFileInfo(unzFile node, unz_file_info *pfile_info, LStrHandle *fileName, uint16_t sizeFileName, LStrHandle *extraField, uint16_t sizeExtraField, LStrHandle *comment, uint16_t sizeComment)
+{
+ MgErr err = NumericArrayResize(uB, 1, (UHandle*)extraField, sizeExtraField + 1);
+ if (!err)
+ {
+ err = NumericArrayResize(uB, 1, (UHandle*)fileName, sizeFileName + 1);
+ if (!err)
+ {
+ err = NumericArrayResize(uB, 1, (UHandle*)comment, sizeComment + 1);
+ if (!err)
+ {
+ err = LibToMgErr(unzGetCurrentFileInfo(node, pfile_info, (char*)LStrBufH(*fileName), sizeFileName + 1, LStrBufH(*extraField), sizeExtraField + 1, (char*)LStrBufH(*comment), sizeComment + 1));
+ if (!err)
+ {
+ if (*extraField)
+ LStrLen(**extraField) = sizeExtraField;
+ if (*fileName)
+ LStrLen(**fileName) = sizeFileName;
+ if (*comment)
+ LStrLen(**comment) = sizeComment;
+ }
+ }
+ }
+ }
+ return err;
+}
+
/****************************************************************************************************
*
* Position the current file pointer to the file with fileName
@@ -557,25 +604,37 @@
return err;
}
-static MgErr RetrieveFileInfo(unzFile node, unz_file_info *pfile_info, LStrHandle *fileName, uint16_t sizeFileName, LStrHandle *extraField, uint16_t sizeExtraField, LStrHandle *comment, uint16_t sizeComment)
+MgErr lvzlib_unzLocateFile2_64(LVRefNum *refnum, unz_file_info64 *pfile_info, LStrHandle *fileName, LStrHandle *extraField, LStrHandle *comment, int iCaseSensitivity)
{
- MgErr err = NumericArrayResize(uB, 1, (UHandle*)extraField, sizeExtraField);
+ unzFile node;
+ MgErr err = lvzlibGetRefnum(refnum, &node, UnzMagic);
if (!err)
{
- err = NumericArrayResize(uB, 1, (UHandle*)fileName, sizeFileName);
+ err = ZeroTerminateLString(fileName);
if (!err)
{
- err = NumericArrayResize(uB, 1, (UHandle*)comment, sizeComment);
+ unzFileNameComparer filename_compare_func = NULL;
+ if (
+#if Mac || MSWin || VxWorks
+ !iCaseSensitivity ||
+#endif
+ iCaseSensitivity == 2)
+ {
+ filename_compare_func = caseInsensitiveNameComparer;
+ }
+ else
+ {
+ filename_compare_func = caseSensitiveNameComparer;
+ }
+ err = LibToMgErr(unzLocateFile(node, (const char*)LStrBufH(*fileName), filename_compare_func));
if (!err)
{
- err = LibToMgErr(unzGetCurrentFileInfo(node, pfile_info, (char*)LStrBuf(**fileName), sizeFileName, LStrBuf(**extraField), sizeExtraField, (char*)LStrBuf(**comment), sizeComment));
+ err = LibToMgErr(unzGetCurrentFileInfo64(node, pfile_info, NULL, 0, NULL, 0, NULL, 0));
if (!err)
{
- LStrLen(**extraField) = sizeExtraField;
- LStrLen(**fileName) = sizeFileName;
- LStrLen(**comment) = sizeComment;
+ err = RetrieveFileInfo(node, NULL, fileName, pfile_info->size_filename, extraField, pfile_info->size_file_extra, comment, pfile_info->size_file_comment);
}
- }
+ }
}
}
return err;
@@ -673,13 +732,15 @@
err = NumericArrayResize(uB, 1, (UHandle*)extra, len);
if (!err)
{
- err = LibToMgErr(unzGetLocalExtrafield(node, LStrBuf(**extra), len));
- if (!err)
- LStrLen(**extra) = len;
+ LStrLen(**extra) = unzGetLocalExtrafield(node, LStrBuf(**extra), len);
}
- return err;
}
- err = LibToMgErr(len);
+ else
+ {
+ err = LibToMgErr(len);
+ }
+ if (*extra)
+ LStrLen(**extra) = 0;
}
return err;
}
@@ -698,7 +759,7 @@
{
unzFile node;
MgErr err = lvzlibGetRefnum(refnum, &node, UnzMagic);
- if (!err)
+ if (!err && buffer)
{
int retval = unzReadCurrentFile(node, LStrBuf(*buffer), LStrLen(*buffer));
if (retval < 0)
Modified: trunk/lvzip/c_source/lvapi.h
===================================================================
--- trunk/lvzip/c_source/lvapi.h 2019-08-24 00:36:58 UTC (rev 1587)
+++ trunk/lvzip/c_source/lvapi.h 2019-08-24 01:04:51 UTC (rev 1588)
@@ -52,6 +52,7 @@
LibAPI(MgErr) lvzlib_unzGetGlobalInfo32(LVRefNum *refnum, LStrHandle *comment, uInt32 *nEntry);
LibAPI(MgErr) lvzlib_unzGetGlobalInfo64(LVRefNum *refnum, LStrHandle *comment, uInt64 *nEntry);
LibAPI(MgErr) lvzlib_unzLocateFile(LVRefNum *refnum, LStrHandle fileName, int iCaseSensitivity);
+LibAPI(MgErr) lvzlib_unzLocateFile2_64(LVRefNum *refnum, unz_file_info64 *pfile_info, LStrHandle *fileName, LStrHandle *extraField, LStrHandle *comment, int iCaseSensitivity);
LibAPI(MgErr) lvzlib_unzGetCurrentFileInfo32(LVRefNum *refnum, unz_file_info *pfile_info, LStrHandle *fileName, LStrHandle *extraField, LStrHandle *comment);
LibAPI(MgErr) lvzlib_unzGetCurrentFileInfo64(LVRefNum *refnum, unz_file_info64 *pfile_info, LStrHandle *fileName, LStrHandle *extraField, LStrHandle *comment);
LibAPI(MgErr) lvzlib_unzOpenCurrentFile(LVRefNum *refnum, int32* method, int32* level, int16 raw, const char* password);
Modified: trunk/lvzip/c_source/lvutil.c
===================================================================
--- trunk/lvzip/c_source/lvutil.c 2019-08-24 00:36:58 UTC (rev 1587)
+++ trunk/lvzip/c_source/lvutil.c 2019-08-24 01:04:51 UTC (rev 1588)
@@ -1373,7 +1373,7 @@
{
DEBUGPRINTF(("FSSetCatalogInfo: err = %ld", err));
}
- else if (LStrLen(*comment) > 0)
+ else if (LStrLenH(comment) > 0)
{
/* Ignore error for getting Desktop comments */
ret = OSErrToLVErr(PBDTGetPath(&dtpb));
@@ -1629,7 +1629,7 @@
LStrHandle hfsPath = NULL;
/* Convert the posix path to an HFS path */
err = ConvertFromPosixPath(str, len, CP_ACP, &hfsPath, CP_ACP, '?', NULL, isDir);
- if (!err)
+ if (!err && hsfPath)
{
err = FTextToPath(LStrBuf(*hfsPath), LStrLen(*hfsPath), path);
}
@@ -2817,7 +2817,7 @@
LibAPI(MgErr) ConvertCString(ConstCStr src, int32 srclen, uInt32 srccp, LStrHandle *dest, uInt32 destcp, char defaultChar, LVBoolean *defUsed)
{
- MgErr err;
+ MgErr err = noErr;
if (srccp != destcp)
{
UStrHandle ustr = NULL;
@@ -2833,12 +2833,15 @@
{
if (srclen == -1)
srclen = StrLen(src);
- err = NumericArrayResize(uB, 1, (UHandle*)dest, srclen);
- if (!err)
+ if (srclen > 0)
{
- MoveBlock(src, LStrBuf(**dest), srclen);
- LStrLen(**dest) = srclen;
- return err;
+ err = NumericArrayResize(uB, 1, (UHandle*)dest, srclen);
+ if (!err)
+ {
+ MoveBlock(src, LStrBuf(**dest), srclen);
+ LStrLen(**dest) = srclen;
+ return err;
+ }
}
}
if (*dest)
@@ -2853,7 +2856,7 @@
#if usesWinPath
Unused(isDir);
err = ConvertCString(src, srclen, srccp, dest, destcp, defaultChar, defUsed);
- if (!err)
+ if (!err && *dest)
{
int32 len = LStrLen(**dest);
UPtr buf = LStrBuf(**dest);
@@ -2979,7 +2982,7 @@
#if usesWinPath
Unused(isDir);
err = ConvertLString(src, srccp, dest, destcp, defaultChar, defUsed);
- if (!err)
+ if (!err && *dest)
{
int32 len = LStrLen(**dest);
UPtr buf = LStrBuf(**dest);
@@ -3340,7 +3343,7 @@
LibAPI(MgErr) ZeroTerminateLString(LStrHandle *dest)
{
- int32 size = dest ? LStrLen(**dest) : 0;
+ int32 size = LStrLenH(*dest);
MgErr err = NumericArrayResize(uB, 1, (UHandle*)dest, size + 1);
if (!err)
LStrBuf(**dest)[size] = 0;
Modified: trunk/lvzip/c_source/zlib.rc
===================================================================
--- trunk/lvzip/c_source/zlib.rc 2019-08-24 00:36:58 UTC (rev 1587)
+++ trunk/lvzip/c_source/zlib.rc 2019-08-24 01:04:51 UTC (rev 1588)
@@ -2,8 +2,8 @@
#define IDR_VERSION1 1
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
- FILEVERSION 4,1,0
- PRODUCTVERSION 4,1,0
+ FILEVERSION 4,2,0
+ PRODUCTVERSION 4,2,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@
BEGIN
VALUE "FileDescription", "LabVIEW zlib data compression library\0"
- VALUE "FileVersion", "4.1.0.LV7\0"
+ VALUE "FileVersion", "4.2.0.LV7\0"
VALUE "InternalName", "lvzlib\0"
VALUE "OriginalFilename", "lvzlib.dll\0"
VALUE "ProductName", "LVZLib.DLL\0"
- VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\r\nZIP support by Gilles Vollant\r\nLabVIEW support by Rolf Kalbermatter\r\nBased on zlib 1.2.8 and minizip 1.1\0"
- VALUE "LegalCopyright", "(C) 1995-2014 Jean-loup Gailly & Mark Adler\0"
+ VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\r\nZIP support by Gilles Vollant\r\nLabVIEW support by Rolf Kalbermatter\r\nBased on zlib 1.2.11 and minizip 1.2\0"
+ VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
END
END
BLOCK "VarFileInfo"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|