Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
3763ea86
Commit
3763ea86
authored
May 06, 2017
by
Serhiy Storchaka
Committed by
GitHub
May 06, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert bpo-26293 for zipfile breakage. See also bpo-29094. (#1484)
parent
a12df7b7
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
21 deletions
+13
-21
Lib/zipfile.py
Lib/zipfile.py
+13
-14
Misc/NEWS
Misc/NEWS
+0
-7
No files found.
Lib/zipfile.py
View file @
3763ea86
...
...
@@ -1109,7 +1109,6 @@ class ZipFile:
# set the modified flag so central directory gets written
# even if no files are added to the archive
self
.
_didModify
=
True
self
.
_start_disk
=
0
try
:
self
.
start_dir
=
self
.
fp
.
tell
()
except
(
AttributeError
,
OSError
):
...
...
@@ -1135,7 +1134,7 @@ class ZipFile:
# set the modified flag so central directory gets written
# even if no files are added to the archive
self
.
_didModify
=
True
self
.
start_dir
=
self
.
_start_disk
=
self
.
fp
.
tell
()
self
.
start_dir
=
self
.
fp
.
tell
()
else
:
raise
ValueError
(
"Mode must be 'r', 'w', 'x', or 'a'"
)
except
:
...
...
@@ -1179,18 +1178,17 @@ class ZipFile:
offset_cd
=
endrec
[
_ECD_OFFSET
]
# offset of central directory
self
.
_comment
=
endrec
[
_ECD_COMMENT
]
# archive comment
# self._start_disk: Position of the start of ZIP archive
# It is zero, unless ZIP was concatenated to another file
self
.
_start_disk
=
endrec
[
_ECD_LOCATION
]
-
size_cd
-
offset_cd
# "concat" is zero, unless zip was concatenated to another file
concat
=
endrec
[
_ECD_LOCATION
]
-
size_cd
-
offset_cd
if
endrec
[
_ECD_SIGNATURE
]
==
stringEndArchive64
:
# If Zip64 extension structures are present, account for them
self
.
_start_disk
-=
(
sizeEndCentDir64
+
sizeEndCentDir64Locator
)
concat
-=
(
sizeEndCentDir64
+
sizeEndCentDir64Locator
)
if
self
.
debug
>
2
:
inferred
=
self
.
_start_disk
+
offset_cd
print
(
"given, inferred, offset"
,
offset_cd
,
inferred
,
self
.
_start_disk
)
inferred
=
concat
+
offset_cd
print
(
"given, inferred, offset"
,
offset_cd
,
inferred
,
concat
)
# self.start_dir: Position of start of central directory
self
.
start_dir
=
offset_cd
+
self
.
_start_disk
self
.
start_dir
=
offset_cd
+
concat
fp
.
seek
(
self
.
start_dir
,
0
)
data
=
fp
.
read
(
size_cd
)
fp
=
io
.
BytesIO
(
data
)
...
...
@@ -1230,7 +1228,7 @@ class ZipFile:
t
>>
11
,
(
t
>>
5
)
&
0x3F
,
(
t
&
0x1F
)
*
2
)
x
.
_decodeExtra
()
x
.
header_offset
=
x
.
header_offset
+
self
.
_start_disk
x
.
header_offset
=
x
.
header_offset
+
concat
self
.
filelist
.
append
(
x
)
self
.
NameToInfo
[
x
.
filename
]
=
x
...
...
@@ -1701,10 +1699,11 @@ class ZipFile:
file_size
=
zinfo
.
file_size
compress_size
=
zinfo
.
compress_size
header_offset
=
zinfo
.
header_offset
-
self
.
_start_disk
if
header_offset
>
ZIP64_LIMIT
:
extra
.
append
(
header_offset
)
if
zinfo
.
header_offset
>
ZIP64_LIMIT
:
extra
.
append
(
zinfo
.
header_offset
)
header_offset
=
0xffffffff
else
:
header_offset
=
zinfo
.
header_offset
extra_data
=
zinfo
.
extra
min_version
=
0
...
...
@@ -1751,7 +1750,7 @@ class ZipFile:
# Write end-of-zip-archive record
centDirCount
=
len
(
self
.
filelist
)
centDirSize
=
pos2
-
self
.
start_dir
centDirOffset
=
self
.
start_dir
-
self
.
_start_disk
centDirOffset
=
self
.
start_dir
requires_zip64
=
None
if
centDirCount
>
ZIP_FILECOUNT_LIMIT
:
requires_zip64
=
"Files count"
...
...
Misc/NEWS
View file @
3763ea86
...
...
@@ -602,9 +602,6 @@ Library
-
Issue
#
28985
:
Update
authorizer
constants
in
sqlite3
module
.
Patch
by
Dingyuan
Wang
.
-
Issue
#
29094
:
Offsets
in
a
ZIP
file
created
with
extern
file
object
and
modes
"w"
and
"x"
now
are
relative
to
the
start
of
the
file
.
-
Issue
#
29079
:
Prevent
infinite
loop
in
pathlib
.
resolve
()
on
Windows
-
Issue
#
13051
:
Fixed
recursion
errors
in
large
or
resized
...
...
@@ -784,10 +781,6 @@ Library
- Issue #28317: The disassembler now decodes FORMAT_VALUE argument.
- Issue #26293: Fixed writing ZIP files that starts not from the start of the
file. Offsets in ZIP file now are relative to the start of the archive in
conforming to the specification.
- Issue #28380: unittest.mock Mock autospec functions now properly support
assert_called, assert_not_called, and assert_called_once.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment