Commit Graph

91 Commits

Author SHA1 Message Date
Blake-Eryx
e1a7f56040 Fix spelling and punctuation errors in comments and documentation
Fix several occurrences of misspelling "trivial" as "trival"; use "from"
rather than "than"; add missing articles and commas.

Closes https://github.com/wxWidgets/wxWidgets/pull/874
2018-08-14 17:15:39 +02:00
Tobias Taschner
29f5eeb69d Fix ZIP64 creation with individual files larger 4GB
If single files larger than 4GB where added the recorded file sizes
in the local file header where not updated correctly. Additionally
recorded file sizes in the central directory where in the wrong order
making it impossible to extract.

To enable adding files with unknown size which might be larger than 4GB
the new method wxZipOutputStream::SetFormat() is added.

Additionally a check has been added in case a file larger 4GB has been
written without ZIP64 info.
2018-02-15 20:01:13 +01:00
Tobias Taschner
dd5d755bc2 Fix reading 64-bit values from ZIP headers
Specific values where not correctly converted because of
a signed/unsigned mismatch.
2018-02-15 20:01:05 +01:00
Vadim Zeitlin
8415d12c61 Fix signed integer overflow in ZIP reading code
Subtracting a huge negative offset from the current position could
overflow it, which was correctly detected as undefined behaviour by
UBSAN.

Credit to OSS-Fuzz: this solves its issue 4388.
2017-11-28 22:43:57 +01:00
Vadim Zeitlin
5195e788d4 Fix unsigned integer overflow in ZIP reading code
Blindly adding 4 to an unsigned length field could result in 0 and this
led to an infinite loop while iterating over all header fields.

Avoid this by promoting the length to int first, before adding 4 to it.

Credit to OSS-Fuzz: this solves its issue 4083.
2017-11-07 13:24:29 +01:00
Vadim Zeitlin
d83b144727 Fix integer overflow in ZIP reading code
Check for the record size before subtracting it from the end position:
the former must be smaller than the latter for all valid ZIP files and
not performing this check could result in an integer overflow error from
the undefined behaviour sanitizer for bad input.

Credit to OSS-Fuzz: this solves its issue 3828.
2017-10-28 15:02:12 +02:00
Tobias Taschner
fe77b2d593 Add support for UTF8 filenames in wxZipOutputStream
Zip filenames containing non ASCII characters will be marked with
bit 11 in the general purpose flags and will use UTF-8 encoding.

By only setting the flag when non ASCII characters are used the
created archives should be binary identical to previous versions.

The old behavior can be achieved by explicitly using wxConvLocal
with the constructor. This should also ensure that
existing code using a custom wxMBConv should work as before.
2017-10-27 20:27:44 +02:00
Vadim Zeitlin
8a4573223e Fix invalid memcpy() call when reading corrupted ZIP files
Skip memcpy() call if its source and destination would overlap: this is
not allowed and is correctly flagged as an error by address sanitizer
and is unnecessary anyhow as we're certainly not going to find the magic
value in fewer than 3 remaining bytes.

Credit to OSS-Fuzz: this solves its issue 3794.
2017-10-25 17:11:36 +02:00
Vadim Zeitlin
e48676cf4a Fix input buffer overflow in wxZip code
Don't crash when reading malformed ZIP files with incorrect field
lengths for the extra fields.

Closes #17947.
2017-09-13 14:46:11 +02:00
Paul Cornett
96826d80d2 Use wxString::clear() instead of assignment to wxEmptyString 2017-02-18 11:00:26 -08:00
Troels Knakkergaard
bbf9927e94 Minor simplification in wxZipEntry::GetName()
No real changes, just use wxString::Replace() instead of doing the replacement
manually.

Also use symbolic constants for [back]slashes.

See #16259.
2016-02-06 01:31:17 +01:00
Troels Knakkergaard
95fce84cf2 Accept backslashes in ZIP entries paths
Even although ZIP specification mandates (forward) slashes, some broken
programs still use backslashes in the paths, so make an effort to accommodate
them.

Closes #16259.
2016-02-06 01:28:08 +01:00
Artur Wieczorek
231c9c7168 Really parse the extra field seeking for ZIP64 extended data
Extended ZIP64 data are stored in the field with Header ID = 1 and we need to
iterate over all fields to find it because it is not stated in the
documentation the it must be the first record in the collection. wxZipHeader
is designed to process standard 64-byte headers and it is safe to use it to
process data in the field with Header ID = 1 which can have up to 28 bytes.

Closes #17170.
2015-12-19 16:19:37 +01:00
Vadim Zeitlin
7f08dbbf78 Another work around for VC8 compiler bug after ZIP64 changes
Apply the same fix as in ba851346b5 in another
place where the same bug occurs.
2015-09-11 14:59:32 +02:00
Vadim Zeitlin
ba851346b5 Try to work around VC8 compiler bug after ZIP64 changes
Add an explicit cast to ensure that both branches of the ternary operator have
the same type.
2015-09-09 03:39:17 +02:00
Paul Cornett
63615e323a avoid GCC warning "enumeral and non-enumeral type in conditional expression" 2015-08-24 08:18:30 -07:00
Artur Wieczorek
b18f6ed10a Fix reading ZIP extra field content from local file header.
Extract extra data from buffer allocated for the local extra field.

This fixes regression after ZIP-64 additions which resulted in crashes while
running the test suite.

Closes https://github.com/wxWidgets/wxWidgets/pull/78
2015-08-24 14:41:50 +02:00
Vadim Zeitlin
e691cfe83d Fix ZIP64 code compilation under 64 bit Unix platforms.
Calling wxDataOutputStream::Write64() with a wxFileOffset argument is
ambiguous as wxFileOffset is neither wxInt64 nor wxUint64, so cast it to one
of them (it doesn't matter which) explicitly.
2015-08-14 17:15:40 +02:00
Tobias Taschner
b9d46f0719 Add ZIP64 support to wxZipInputStream and wxZipOutputStream.
Zip archives with sizes larger 4GB or containing files larger than 4GB or more
than 65k files are saved in ZIP64 format which adds a few additional footers
and extra fields to allow to exceed these limits.

This implements the PKWARE specification available at:
https://www.pkware.com/support/zip-app-note

It has been tested for compatibility with Windows internal ZIP folders, OSX
Archive Utility and 7-zip.

Closes https://github.com/wxWidgets/wxWidgets/pull/72
2015-08-14 15:39:45 +02:00
Tobias Taschner
0f39ea0963 Add support for UTF8 filenames in wxZipInputstream.
Zip files may mark filenames and comments via bit 11 in the general purpose
flags. If this flag is set use wxConvUTF8 instead of the default wxConv.
2015-08-14 15:38:50 +02:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Dimitri Schoolwerth
0e6af4ac39 No code changes, fix some typos.
Change several occurrences of "it's" where "its" is meant, as well as a few other minor typos.



git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2015-02-15 17:11:44 +00:00
Vadim Zeitlin
33ad33d447 Add wxOVERRIDE and use it in common and wxOSX code.
Make overriding virtual methods more explicit and enable additional checks
provided by C++11 compilers when "override" is used.

Closes #16100.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-20 13:26:28 +00:00
Paul Cornett
967a94c91a remove WXWIN_COMPATIBILITY_2_6, add WXWIN_COMPATIBILITY_3_0
closes #15792

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-01-04 20:07:33 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Dimitri Schoolwerth
a1b806b982 Replaced Ok() occurrences with IsOk() throughout trunk.
Additionally renamed wxOSX' private wxNativePrinterDC::Ok() function to IsOk().

Didn't deprecate the various Ok() functions: given the amount of changes already introduced in 3.0 a trivial one like this seems more suitable for after 3.0.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-05-03 16:29:04 +00:00
Dimitri Schoolwerth
4c51a665c6 Fixed various typos.
Applied patch by snowleopard2 fixing a bunch of typos such as misspellings and double words in the documentation. Combined the patch with some local queued typos waiting to be committed as well as adding new typo fixes inspired by the patch.

Function names with American spelling were not changed nor was third-party code touched. The only code changes involve some changes in strings that are translated ("Can not" -> "Cannot").

Closes #13063 (again).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-22 14:17:38 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Vadim Zeitlin
43b2d5e7c3 Put braces around all calls to wxLogFunctions() inside an if statement.
This suppresses all the remaining g++ -Wparentheses warnings and uses consistent style everywhere.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-20 16:47:54 +00:00
Vadim Zeitlin
af58844636 Add information about the log message generation location to wxLog.
This means that wxLog::DoLogRecord() can now retrieve the file name, line
number and the function where the message was logged.

An unfortunate consequence of this change is that now

	if ( condition )
		wxLogError("Whatever");

results in a warning from g++ 4.x with -Wparentehses, so extra parentheses had
to be added in many places.

Finally, also allow storing arbitrary attributes in wxLogRecordInfo. This had
to be added to implement our own overloaded wxLogStatus() and wxLogSysError()
and will probably be useful for the others as well.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-09 20:26:34 +00:00
Vadim Zeitlin
4b6a582bef replace more __WXDEBUG__ occurrences with wxDEBUG_LEVEL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-22 12:53:48 +00:00
Vadim Zeitlin
c0c133e13b add wx-prefixed and semicolon-requiring versions of DECLARE_NO_{COPY,ASSIGN}_CLASS macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 11:45:59 +00:00
Vadim Zeitlin
664e13143e renamed wx/ptr_shrd.h to wx/sharedptr.h; split wx/ptr_scpd.h in wx/scopedptr.h and wx/scopedarray.h; extracted common parts into new wx/checkeddelete.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58634 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-03 12:01:46 +00:00
Francesco Montorsi
7d7b3f69f2 do not export private symbols in wx shared libraries
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58351 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-24 13:40:46 +00:00
Vadim Zeitlin
5c33522fca replace wx_{const,static,reinterpret}_cast with their standard C++ equivalents
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-02 02:39:52 +00:00
Michael Wetherell
dd0af4bb63 Always write end record unless one has already been written.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51008 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-01-03 17:09:10 +00:00
Vadim Zeitlin
9d59b50a9f allow creating empty ZIP archives (patch 1861030)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50992 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-01-02 20:31:31 +00:00
Václav Slavík
8650108199 don't use implicit wxString->char*/wchar_t* conversion, it will not be available in wxUSE_STL build in the future
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-10 17:42:41 +00:00
Paul Cornett
ca2261d33f restore declaration inline specifier, and make definition match
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44087 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-01-01 22:27:42 +00:00
Paul Cornett
ffdbfc4a76 remove inline from declaration of functions which are not inline
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44083 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-01-01 19:49:10 +00:00
Michael Wetherell
5c80cef4bf wxArchiveFSHandler switches on simulated seeking for compatibility with
previous versions. Still overridden by wxFS_SEEKABLE.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-11-19 02:11:40 +00:00
Michael Wetherell
489a164c1c Rename wxSTREAM_FILEEXTENSION to wxSTREAM_FILEEXT.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42621 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-10-29 16:47:20 +00:00
Michael Wetherell
5410f5728d Tidy up includes and #if wxUSE statements.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42543 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-10-27 22:03:29 +00:00
Michael Wetherell
8fc574b40c Implement new features for finding class factories. Put seek inside 2.6 compat ifdef.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-10-27 09:54:39 +00:00
Michael Wetherell
076e07b60b Improve the error messages slightly.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-09-24 13:59:57 +00:00
Michael Wetherell
08f30494b0 Fix alignment issue.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-06-05 19:07:26 +00:00
Włodzimierz Skiba
de6185e212 Include wx/utils.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38972 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-02 10:39:23 +00:00
Włodzimierz Skiba
8898456df4 wx/wxprec.h already includes wx/defs.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38787 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-18 07:24:35 +00:00
Vadim Zeitlin
d0914b9d8d build fixes for wxUSE_LOG==0 (modified patch 1450207)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38766 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-16 22:29:47 +00:00
Włodzimierz Skiba
bb2955b339 Warning fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38293 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-03-23 09:57:59 +00:00