Binary compatibility report for the ZipArchive library between 4.0.1 and 4.1.0 versions on x86
Test Info
Library Name | ZipArchive |
Version #1 | 4.0.1 |
Version #2 | 4.1.0 |
CPU Type | x86 |
GCC Version | 4.6.1 |
Test Results
Total Header Files | 1 |
Total Shared Libraries | 1 |
Total Symbols / Types | 370 / 158 |
Verdict | Incompatible (35.7%) |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 9 |
Removed Symbols | High | 5 |
Problems with Data Types | High | 3 |
Medium | 3 |
Low | 0 |
Problems with Symbols | High | 5 |
Medium | 0 |
Low | 2 |
Problems with Constants | Low | 0 |
Other Changes in Symbols | - | 1 |
Added Symbols (9)
ZipArchive.h,
libziparch.so
CZipArchive::ExtractFile ( WORD uIndex, LPCTSTR lpszPath, bool bFullPath, LPCTSTR lpszNewName, enum ZipPlatform::DeleteFileMode iOverwriteMode, DWORD nBufSize )
[symbol: _ZN11CZipArchive11ExtractFileEtPKcbS1_N11ZipPlatform14DeleteFileModeEj]
CZipArchive::OpenFrom ( CZipArchive& zip, CZipAbstractFile* pArchiveFile, bool bAllowNonReadOnly )
[symbol: _ZN11CZipArchive8OpenFromERS_P16CZipAbstractFileb]
ZipCentralDir.h,
libziparch.so
CZipCentralDir::Read ( )
[symbol: _ZN14CZipCentralDir4ReadEv]
CZipCentralDir::ReadHeaders ( )
[symbol: _ZN14CZipCentralDir11ReadHeadersEv]
ZipCompatibility.h,
libziparch.so
namespace ZipCompatibility
GetAsInternalAttributes ( DWORD uAttr, int iFromSystem )
[symbol: _ZN16ZipCompatibility23GetAsInternalAttributesEji]
NormalizePathSeparators ( CZipString& szFileName )
[symbol: _ZN16ZipCompatibility23NormalizePathSeparatorsER10CZipString]
ZipFile_stl.h,
libziparch.so
CZipFile::HasFilePath ( ) const
[symbol: _ZNK8CZipFile11HasFilePathEv]
ZipMemFile.h,
libziparch.so
CZipMemFile::HasFilePath ( ) const
[symbol: _ZNK11CZipMemFile11HasFilePathEv]
ZipPlatform.h,
libziparch.so
namespace ZipPlatform
RemoveFile ( LPCTSTR lpszFileName, bool bThrow, int iMode )
[symbol: _ZN11ZipPlatform10RemoveFileEPKcbi]
to the top
Removed Symbols (5)
ZipArchive.h,
libziparch.so
CZipArchive::ExtractFile ( WORD uIndex, LPCTSTR lpszPath, bool bFullPath, LPCTSTR lpszNewName, DWORD nBufSize )
[symbol: _ZN11CZipArchive11ExtractFileEtPKcbS1_j]
CZipArchive::OpenFrom ( CZipArchive& zip, CZipAbstractFile* pArchiveFile )
[symbol: _ZN11CZipArchive8OpenFromERS_P16CZipAbstractFile]
ZipCentralDir.h,
libziparch.so
CZipCentralDir::Read ( bool bExhaustiveRead )
[symbol: _ZN14CZipCentralDir4ReadEb]
CZipCentralDir::ReadHeaders ( bool bExhaustiveRead )
[symbol: _ZN14CZipCentralDir11ReadHeadersEb]
ZipPlatform.h,
libziparch.so
namespace ZipPlatform
RemoveFile ( LPCTSTR lpszFileName, bool bThrow )
[symbol: _ZN11ZipPlatform10RemoveFileEPKcb]
to the top
Problems with Data Types, High Severity (3)
ZipAbstractFile.h
[+] class CZipAbstractFile (1)
| Change |
Effect |
1 | Pure virtual method CZipAbstractFile::HasFilePath ( ) const has been added to this class. | 1) Applications will not provide the implementation for this pure virtual method and therefore cause a crash in the library trying to call this method. 2) The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications. |
[+] show v-table (old and new)
Offset | Virtual Table (Old) - 17 entries | Virtual Table (New) - 18 entries |
---|
0 |
(int (*)(...))0 |
(int (*)(...))0 |
4 |
(int (*)(...))(& typeinfo) |
(int (*)(...))(& typeinfo) |
8 |
CZipAbstractFile::Open |
CZipAbstractFile::Open |
12 |
__cxa_pure_virtual |
__cxa_pure_virtual |
16 |
__cxa_pure_virtual |
__cxa_pure_virtual |
20 |
__cxa_pure_virtual |
__cxa_pure_virtual |
24 |
__cxa_pure_virtual |
__cxa_pure_virtual |
28 |
__cxa_pure_virtual |
__cxa_pure_virtual |
32 |
__cxa_pure_virtual |
__cxa_pure_virtual |
36 |
CZipAbstractFile::SeekToBegin |
CZipAbstractFile::SeekToBegin |
40 |
CZipAbstractFile::SeekToEnd |
CZipAbstractFile::SeekToEnd |
44 |
__cxa_pure_virtual |
__cxa_pure_virtual |
48 |
__cxa_pure_virtual |
__cxa_pure_virtual |
52 |
__cxa_pure_virtual |
__cxa_pure_virtual |
56 |
__cxa_pure_virtual |
__cxa_pure_virtual |
60 |
~CZipAbstractFile |
__cxa_pure_virtual |
64 |
~CZipAbstractFile |
~CZipAbstractFile |
68 |
|
~CZipAbstractFile |
[+] affected symbols (14)
CZipAbstractFile::SeekToBegin ( )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::Open ( LPCTSTR p1, UINT p2, bool p3 )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::Read ( void* lpBuf, UINT nCount )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::Seek ( LONGLONG lOff, int nFrom )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::Close ( )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::Flush ( )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::Write ( void const* lpBuf, UINT nCount )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::SeekToEnd ( )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::SetLength ( ULONGLONG nNewLen )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::~CZipAbstractFile [in-charge] ( )This method is from 'CZipAbstractFile' class.
CZipAbstractFile::GetFilePath ( ) constThis method is from 'CZipAbstractFile' class.
CZipAbstractFile::GetPosition ( ) constThis method is from 'CZipAbstractFile' class.
...
ZipArchive.h
[+] class CZipArchive (1)
| Change |
Effect |
1 | Size of this class has been increased from 268 bytes to 272 bytes. | 1) An object of this class can be allocated by the applications and old size will be hardcoded at the compile time. Call of any exported constructor will break the memory of neighboring objects on the stack or heap. 2) The memory layout and size of subclasses will be changed. |
[+] affected symbols (70)
CZipArchive::AddNewFile ( LPCTSTR lpszFilePath, int iComprLevel, bool bFullPath, int iSmartLevel, unsigned long nBufSize )This method is from 'CZipArchive' class.
CZipArchive::AddNewFile ( LPCTSTR lpszFilePath, LPCTSTR lpszFileNameInZip, int iComprLevel, int iSmartLevel, unsigned long nBufSize )This method is from 'CZipArchive' class.
CZipArchive::AddNewFile ( CZipAbstractFile& af, LPCTSTR lpszFileNameInZip, int iComprLevel, int iSmartLevel, unsigned long nBufSize )This method is from 'CZipArchive' class.
CZipArchive::AddNewFile ( CZipAddNewFileInfo& info )This method is from 'CZipArchive' class.
CZipArchive::GetIndexes ( CZipStringArray const& aNames, CZipIndexesArray& aIndexes )This method is from 'CZipArchive' class.
CZipArchive::InitOnOpen ( int iArchiveSystCompatib, CZipCentralDir* pSource )This method is from 'CZipArchive' class.
CZipArchive::RemoveFile ( WORD uIndex, bool bRemoveData )This method is from 'CZipArchive' class.
CZipArchive::AddNewFiles ( LPCTSTR lpszPath, ZipArchiveLib::CFileFilter& filter, bool bRecursive, int iComprLevel, bool bSkipInitialPath, int iSmartLevel, unsigned long nBufSize )This method is from 'CZipArchive' class.
CZipArchive::CurrentFile ( )This method is from 'CZipArchive' class.
CZipArchive::ExtractFile ( WORD uIndex, CZipAbstractFile& af, bool bRewind, DWORD nBufSize )This method is from 'CZipArchive' class.
CZipArchive::FindMatches ( LPCTSTR lpszPattern, CZipIndexesArray& ar, bool bFullPath )This method is from 'CZipArchive' class.
CZipArchive::GetFileInfo ( WORD uIndex )This method is from 'CZipArchive' class.
...
ZipCentralDir.h
[+] class CZipCentralDir (1)
| Change |
Effect |
1 | Size of this class has been increased from 36 bytes to 40 bytes. | 1) An object of this class can be allocated by the applications and old size will be hardcoded at the compile time. Call of any exported constructor will break the memory of neighboring objects on the stack or heap. 2) The memory layout and size of subclasses will be changed. |
[+] affected symbols (106)
CZipArchive::AddNewFile ( LPCTSTR lpszFilePath, int iComprLevel, bool bFullPath, int iSmartLevel, unsigned long nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::AddNewFile ( LPCTSTR lpszFilePath, LPCTSTR lpszFileNameInZip, int iComprLevel, int iSmartLevel, unsigned long nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::AddNewFile ( CZipAbstractFile& af, LPCTSTR lpszFileNameInZip, int iComprLevel, int iSmartLevel, unsigned long nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::AddNewFile ( CZipAddNewFileInfo& info )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::GetIndexes ( CZipStringArray const& aNames, CZipIndexesArray& aIndexes )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::InitOnOpen ( int iArchiveSystCompatib, CZipCentralDir* pSource )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::RemoveFile ( WORD uIndex, bool bRemoveData )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::AddNewFiles ( LPCTSTR lpszPath, ZipArchiveLib::CFileFilter& filter, bool bRecursive, int iComprLevel, bool bSkipInitialPath, int iSmartLevel, unsigned long nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::CurrentFile ( )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::ExtractFile ( WORD uIndex, CZipAbstractFile& af, bool bRewind, DWORD nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::FindMatches ( LPCTSTR lpszPattern, CZipIndexesArray& ar, bool bFullPath )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::GetFileInfo ( WORD uIndex )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
...
to the top
Problems with Symbols, High Severity (5)
ZipArchive.h,
libziparch.so
[+] CZipArchive::ExtractFile ( WORD uIndex, LPCTSTR lpszPath, bool bFullPath, LPCTSTR lpszNewName, DWORD nBufSize ) (1)
changed to:CZipArchive::ExtractFile ( WORD uIndex, LPCTSTR lpszPath, bool bFullPath, LPCTSTR lpszNewName, enum DeleteFileMode iOverwriteMode, DWORD nBufSize )
[symbol: _ZN11CZipArchive11ExtractFileEtPKcbS1_j]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN11CZipArchive11ExtractFileEtPKcbS1_j to _ZN11CZipArchive11ExtractFileEtPKcbS1_N11ZipPlatform14DeleteFileModeEj. This may cause "undefined reference" linker error in old client applications. |
[+] CZipArchive::OpenFrom ( CZipArchive& zip, CZipAbstractFile* pArchiveFile ) (1)
changed to:CZipArchive::OpenFrom ( CZipArchive& zip, CZipAbstractFile* pArchiveFile, bool bAllowNonReadOnly )
[symbol: _ZN11CZipArchive8OpenFromERS_P16CZipAbstractFile]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN11CZipArchive8OpenFromERS_P16CZipAbstractFile to _ZN11CZipArchive8OpenFromERS_P16CZipAbstractFileb. This may cause "undefined reference" linker error in old client applications. |
ZipCentralDir.h,
libziparch.so
[+] CZipCentralDir::Read ( bool bExhaustiveRead ) (1)
changed to:CZipCentralDir::Read ( )
[symbol: _ZN14CZipCentralDir4ReadEb]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN14CZipCentralDir4ReadEb to _ZN14CZipCentralDir4ReadEv. This may cause "undefined reference" linker error in old client applications. |
[+] CZipCentralDir::ReadHeaders ( bool bExhaustiveRead ) (1)
changed to:CZipCentralDir::ReadHeaders ( )
[symbol: _ZN14CZipCentralDir11ReadHeadersEb]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN14CZipCentralDir11ReadHeadersEb to _ZN14CZipCentralDir11ReadHeadersEv. This may cause "undefined reference" linker error in old client applications. |
ZipPlatform.h,
libziparch.so
namespace ZipPlatform
[+] RemoveFile ( LPCTSTR lpszFileName, bool bThrow ) (1)
changed to:RemoveFile ( LPCTSTR lpszFileName, bool bThrow, int iMode )
[symbol: _ZN11ZipPlatform10RemoveFileEPKcb]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN11ZipPlatform10RemoveFileEPKcb to _ZN11ZipPlatform10RemoveFileEPKcbi. This may cause "undefined reference" linker error in old client applications. |
to the top
Problems with Data Types, Medium Severity (3)
ZipArchive.h
[+] class CZipArchive (2)
| Change |
Effect |
1 | Size of field m_centralDir has been changed from 36 bytes to 40 bytes. | 1) Size of the inclusive type has been changed. 2) Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken. |
2 | Field m_bExhaustiveRead has been removed from this type. | Applications will access incorrect memory when attempting to access this field. |
[+] affected symbols (70)
CZipArchive::AddNewFile ( LPCTSTR lpszFilePath, int iComprLevel, bool bFullPath, int iSmartLevel, unsigned long nBufSize )This method is from 'CZipArchive' class.
CZipArchive::AddNewFile ( LPCTSTR lpszFilePath, LPCTSTR lpszFileNameInZip, int iComprLevel, int iSmartLevel, unsigned long nBufSize )This method is from 'CZipArchive' class.
CZipArchive::AddNewFile ( CZipAbstractFile& af, LPCTSTR lpszFileNameInZip, int iComprLevel, int iSmartLevel, unsigned long nBufSize )This method is from 'CZipArchive' class.
CZipArchive::AddNewFile ( CZipAddNewFileInfo& info )This method is from 'CZipArchive' class.
CZipArchive::GetIndexes ( CZipStringArray const& aNames, CZipIndexesArray& aIndexes )This method is from 'CZipArchive' class.
CZipArchive::InitOnOpen ( int iArchiveSystCompatib, CZipCentralDir* pSource )This method is from 'CZipArchive' class.
CZipArchive::RemoveFile ( WORD uIndex, bool bRemoveData )This method is from 'CZipArchive' class.
CZipArchive::AddNewFiles ( LPCTSTR lpszPath, ZipArchiveLib::CFileFilter& filter, bool bRecursive, int iComprLevel, bool bSkipInitialPath, int iSmartLevel, unsigned long nBufSize )This method is from 'CZipArchive' class.
CZipArchive::CurrentFile ( )This method is from 'CZipArchive' class.
CZipArchive::ExtractFile ( WORD uIndex, CZipAbstractFile& af, bool bRewind, DWORD nBufSize )This method is from 'CZipArchive' class.
CZipArchive::FindMatches ( LPCTSTR lpszPattern, CZipIndexesArray& ar, bool bFullPath )This method is from 'CZipArchive' class.
CZipArchive::GetFileInfo ( WORD uIndex )This method is from 'CZipArchive' class.
...
ZipCentralDir.h
[+] class CZipCentralDir (1)
| Change |
Effect |
1 | Field m_specialFlags has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications. |
[+] affected symbols (106)
CZipArchive::AddNewFile ( LPCTSTR lpszFilePath, int iComprLevel, bool bFullPath, int iSmartLevel, unsigned long nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::AddNewFile ( LPCTSTR lpszFilePath, LPCTSTR lpszFileNameInZip, int iComprLevel, int iSmartLevel, unsigned long nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::AddNewFile ( CZipAbstractFile& af, LPCTSTR lpszFileNameInZip, int iComprLevel, int iSmartLevel, unsigned long nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::AddNewFile ( CZipAddNewFileInfo& info )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::GetIndexes ( CZipStringArray const& aNames, CZipIndexesArray& aIndexes )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::InitOnOpen ( int iArchiveSystCompatib, CZipCentralDir* pSource )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::RemoveFile ( WORD uIndex, bool bRemoveData )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::AddNewFiles ( LPCTSTR lpszPath, ZipArchiveLib::CFileFilter& filter, bool bRecursive, int iComprLevel, bool bSkipInitialPath, int iSmartLevel, unsigned long nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::CurrentFile ( )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::ExtractFile ( WORD uIndex, CZipAbstractFile& af, bool bRewind, DWORD nBufSize )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::FindMatches ( LPCTSTR lpszPattern, CZipIndexesArray& ar, bool bFullPath )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
CZipArchive::GetFileInfo ( WORD uIndex )Field 'this.m_centralDir' in the object of this method has type 'CZipCentralDir'.
...
to the top
Problems with Symbols, Low Severity (2)
ZipException.h,
libziparch.so
[+] CZipException::CZipException [in-charge] ( int iCause, LPCTSTR lpszZipName ) (1)
[symbol: _ZN13CZipExceptionC1EiPKc]
| Change | Effect |
---|
1 | The default argument of 1st parameter iCause has been changed from 100 to 200. | Applications will pass an old default (compile-time) argument that may not be properly handled anymore. This may result in crash or incorrect behavior of applications. |
[+] CZipException::CZipException [not-in-charge] ( int iCause, LPCTSTR lpszZipName ) (1)
[symbol: _ZN13CZipExceptionC2EiPKc]
| Change | Effect |
---|
1 | The default argument of 1st parameter iCause has been changed from 100 to 200. | Applications will pass an old default (compile-time) argument that may not be properly handled anymore. This may result in crash or incorrect behavior of applications. |
to the top
Other Changes in Symbols (1)
ZipStorage.h,
libziparch.so
[+] CZipStorage::Close ( bool bWrite, bool bGetLastVolumeName ) (1)
[symbol: _ZN11CZipStorage5CloseEbb]
| Change | Effect |
---|
1 | The default argument false of 2nd parameter bGetLastVolumeName has been added. | No effect. |
to the top
Header Files (1)
ZipArchive.h
to the top
Shared Libraries (1)
libziparch.so
to the top