[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kdecore/io
From: David Faure <faure () kde ! org>
Date: 2010-10-15 22:44:00
Message-ID: 20101015224400.5FB03AC896 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1186343 by dfaure:
Fix handling of large .zip files, the size determination ended up negative because of \
the implicit sign expansion when doing ... | (uchar)buffer[3] << 24 (int is \
implicitely used). Tested in isolation, but not with .zip files.
Raphael: please re-test and if this fixes all issues I'll backport and close the bug.
CCBUG: 216672
M +6 -6 kzip.cpp
--- trunk/KDE/kdelibs/kdecore/io/kzip.cpp #1186342:1186343
@@ -390,12 +390,12 @@
int compression_mode = (uchar)buffer[2] | (uchar)buffer[3] << 8;
time_t mtime = transformFromMsDos( buffer+4 );
- qint64 compr_size = (uchar)buffer[12] | (uchar)buffer[13] << 8
- | (uchar)buffer[14] << 16 | (uchar)buffer[15] << 24;
- qint64 uncomp_size = (uchar)buffer[16] | (uchar)buffer[17] << 8
- | (uchar)buffer[18] << 16 | (uchar)buffer[19] << 24;
- int namelen = (uchar)buffer[20] | (uchar)buffer[21] << 8;
- int extralen = (uchar)buffer[22] | (uchar)buffer[23] << 8;
+ const qint64 compr_size = uint(uchar(buffer[12])) | \
uint(uchar(buffer[13])) << 8 | + \
uint(uchar(buffer[14])) << 16 | uint(uchar(buffer[15])) << 24; + const \
qint64 uncomp_size = uint(uchar(buffer[16])) | uint(uchar(buffer[17])) << 8 | + \
uint(uchar(buffer[18])) << 16 | uint(uchar(buffer[19])) << 24; + const int \
namelen = uint(uchar(buffer[20])) | uint(uchar(buffer[21])) << 8; + const \
int extralen = uint(uchar(buffer[22])) | uint(uchar(buffer[23])) << 8;
/*
kDebug(7040) << "general purpose bit flag: " << gpf;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic