Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb5560e4

Browse files
committed
gh-68164: Set the "regular file" bit in zipfile's writestr
1 parentde70614 commitb5560e4

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

‎Lib/test/test_zipfile/test_core.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ def zip_test_writestr_permissions(self, f, compression):
496496
self.make_test_archive(f,compression)
497497
withzipfile.ZipFile(f,"r")aszipfp:
498498
zinfo=zipfp.getinfo('strfile')
499-
self.assertEqual(zinfo.external_attr,0o600<<16)
499+
self.assertEqual(zinfo.external_attr,0o100600<<16)
500500

501501
zinfo2=zipfp.getinfo('written-open-w')
502502
self.assertEqual(zinfo2.external_attr,0o600<<16)
@@ -2271,8 +2271,8 @@ def test_for_archive(self):
22712271
zi=zipfile.ZipInfo(base_filename)._for_archive(zf)
22722272
self.assertEqual(zi.compress_level,1)
22732273
self.assertEqual(zi.compress_type,zipfile.ZIP_STORED)
2274-
#?rw- --- ---
2275-
filemode=stat.S_IRUSR|stat.S_IWUSR
2274+
#-rw- --- ---
2275+
filemode=stat.S_IFREG|stat.S_IRUSR|stat.S_IWUSR
22762276
# filemode is stored as the highest 16 bits of external_attr
22772277
self.assertEqual(zi.external_attr>>16,filemode)
22782278
self.assertEqual(zi.external_attr&0xFF,0)# no MS-DOS flag

‎Lib/zipfile/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -630,10 +630,10 @@ def _for_archive(self, archive):
630630
self.compress_type=archive.compression
631631
self.compress_level=archive.compresslevel
632632
ifself.filename.endswith('/'):# pragma: no cover
633-
self.external_attr=0o40775<<16# drwxrwxr-x
633+
self.external_attr=(stat.S_IFDIR|0o775)<<16# drwxrwxr-x
634634
self.external_attr|=0x10# MS-DOS directory flag
635635
else:
636-
self.external_attr=0o600<<16#?rw-------
636+
self.external_attr=(stat.S_IFREG|0o600)<<16#-rw-------
637637
returnself
638638

639639
defis_dir(self):
@@ -2012,7 +2012,7 @@ def mkdir(self, zinfo_or_directory_name, mode=511):
20122012
zinfo=ZipInfo(directory_name)
20132013
zinfo.compress_size=0
20142014
zinfo.CRC=0
2015-
zinfo.external_attr= ((0o40000|mode)&0xFFFF)<<16
2015+
zinfo.external_attr= ((stat.S_IFDIR|mode)&0xFFFF)<<16
20162016
zinfo.file_size=0
20172017
zinfo.external_attr|=0x10
20182018
else:
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix:func:`zipfile.ZipFile.writestr` so it sets the "regular file" bit by
2+
default.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp