Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
45dba1da
Kaydet (Commit)
45dba1da
authored
Eki 21, 2012
tarafından
Nadeem Vawda
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue #14398: Fix size truncation and overflow bugs in bz2 module.
üst
dd72b3f6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
45 additions
and
1 deletion
+45
-1
test_bz2.py
Lib/test/test_bz2.py
+43
-1
testbz2_bigmem.bz2
Lib/test/testbz2_bigmem.bz2
+0
-0
NEWS
Misc/NEWS
+2
-0
bz2module.c
Modules/bz2module.c
+0
-0
No files found.
Lib/test/test_bz2.py
Dosyayı görüntüle @
45dba1da
#!/usr/bin/env python
#!/usr/bin/env python
from
test
import
test_support
from
test
import
test_support
from
test.test_support
import
TESTFN
,
import_modu
le
from
test.test_support
import
TESTFN
,
_4G
,
bigmemtest
,
import_module
,
findfi
le
import
unittest
import
unittest
from
cStringIO
import
StringIO
from
cStringIO
import
StringIO
...
@@ -24,6 +24,9 @@ class BaseTest(unittest.TestCase):
...
@@ -24,6 +24,9 @@ class BaseTest(unittest.TestCase):
DATA
=
'BZh91AY&SY.
\xc8
N
\x18\x00\x01
>_
\x80\x00\x10
@
\x02\xff\xf0\x01\x07
n
\x00
?
\xe7\xff\xe0
0
\x01\x99\xaa\x00\xc0\x03
F
\x86\x8c
#&
\x83
F
\x9a\x03\x06\xa6\xd0\xa6\x93
M
\x0f
Q
\xa7\xa8\x06\x80
4hh
\x12
$
\x11\xa4
i4
\xf1
4S
\xd2
<Q
\xb5\x0f
H
\xd3\xd4\xdd\xd5\x87\xbb\xf8\x94\r\x8f\xaf
I
\x12\xe1\xc9\xf8
/E
\x00
pu
\x89\x12
]
\xc9\xbb
DL
\n
Q
\x0e\t
1
\x12\xdf\xa0\xc0\x97\xac
2O9
\x89\x13\x94\x0e\x1c
7
\x0e
d
\x95
I
\x0c\xaa
J
\xa4\x18
L
\x10\x05
#
\x9c\xaf\xba\xbc
/
\x97\x8a
#C
\xc8\xe1\x8c
W
\xf9\xe2\xd0\xd6
M
\xa7\x8b
Xa<e
\x84
t
\xcb
L
\xb3\xa7\xd9\xcd\xd1\xcb\x84
.
\xaf\xb3\xab\xab\xad
`n}
\xa0
lh
\t
E,
\x8e
Z
\x15\x17
VH>
\x88\xe5\xcd
9gd6
\x0b\n\xe9\x9b\xd5\x8a\x99\xf7\x08
.K
\x8e
v
\xfb\xf7
xw
\xbb\xdf\xa1\x92\xf1\xdd
|/";
\xa2\xba\x9f\xd5\xb1
#A
\xb6\xf6\xb3
o
\xc9\xc5
y
\\\xeb
O
\xe7\x85\x9a\xbc\xb6
f8
\x95
2
\xd5\xd7
"
%
\x89
>V,
\xf7\xa6
z
\xe2\x9f\xa3\xdf\x11\x11
"
\xd6
E)I
\xa9\x13
^
\xca\xf3
r
\xd0\x03
U
\x92
2
\xf2
6
\xec\xb6\xed\x8b\xc3
U
\x13\x9d\xc5\x17
0
\xa4\xfa
^
\x92\xac
DF
\x8a\x97\xd6\x19\xfe\xdd\xb8\xbd\x1a\x9a\x19\xa3\x80
ankR
\x8b\xe5\xd8
3]
\xa9\xc6\x08\x82
f
\xf6\xb9
"6l$
\xb8
j@
\xc0\x8a\xb0
l1..
\xba
k
\x83
ls
\x15\xbc\xf4\xc1\x13\xbe\xf8
E
\xb8\x9d\r\xa8\x9d
k
\x84\xd3
n
\xfa\xac
Q
\x07\xb1
%
y
\xaa
v
\xb4\x08\xe0
z
\x1b\x16\xf5\x04\xe9\xcc\xb9\x08
z
\x1e
n7.G
\xfc
]
\xc9\x14\xe1
B@
\xbb
!8`'
DATA
=
'BZh91AY&SY.
\xc8
N
\x18\x00\x01
>_
\x80\x00\x10
@
\x02\xff\xf0\x01\x07
n
\x00
?
\xe7\xff\xe0
0
\x01\x99\xaa\x00\xc0\x03
F
\x86\x8c
#&
\x83
F
\x9a\x03\x06\xa6\xd0\xa6\x93
M
\x0f
Q
\xa7\xa8\x06\x80
4hh
\x12
$
\x11\xa4
i4
\xf1
4S
\xd2
<Q
\xb5\x0f
H
\xd3\xd4\xdd\xd5\x87\xbb\xf8\x94\r\x8f\xaf
I
\x12\xe1\xc9\xf8
/E
\x00
pu
\x89\x12
]
\xc9\xbb
DL
\n
Q
\x0e\t
1
\x12\xdf\xa0\xc0\x97\xac
2O9
\x89\x13\x94\x0e\x1c
7
\x0e
d
\x95
I
\x0c\xaa
J
\xa4\x18
L
\x10\x05
#
\x9c\xaf\xba\xbc
/
\x97\x8a
#C
\xc8\xe1\x8c
W
\xf9\xe2\xd0\xd6
M
\xa7\x8b
Xa<e
\x84
t
\xcb
L
\xb3\xa7\xd9\xcd\xd1\xcb\x84
.
\xaf\xb3\xab\xab\xad
`n}
\xa0
lh
\t
E,
\x8e
Z
\x15\x17
VH>
\x88\xe5\xcd
9gd6
\x0b\n\xe9\x9b\xd5\x8a\x99\xf7\x08
.K
\x8e
v
\xfb\xf7
xw
\xbb\xdf\xa1\x92\xf1\xdd
|/";
\xa2\xba\x9f\xd5\xb1
#A
\xb6\xf6\xb3
o
\xc9\xc5
y
\\\xeb
O
\xe7\x85\x9a\xbc\xb6
f8
\x95
2
\xd5\xd7
"
%
\x89
>V,
\xf7\xa6
z
\xe2\x9f\xa3\xdf\x11\x11
"
\xd6
E)I
\xa9\x13
^
\xca\xf3
r
\xd0\x03
U
\x92
2
\xf2
6
\xec\xb6\xed\x8b\xc3
U
\x13\x9d\xc5\x17
0
\xa4\xfa
^
\x92\xac
DF
\x8a\x97\xd6\x19\xfe\xdd\xb8\xbd\x1a\x9a\x19\xa3\x80
ankR
\x8b\xe5\xd8
3]
\xa9\xc6\x08\x82
f
\xf6\xb9
"6l$
\xb8
j@
\xc0\x8a\xb0
l1..
\xba
k
\x83
ls
\x15\xbc\xf4\xc1\x13\xbe\xf8
E
\xb8\x9d\r\xa8\x9d
k
\x84\xd3
n
\xfa\xac
Q
\x07\xb1
%
y
\xaa
v
\xb4\x08\xe0
z
\x1b\x16\xf5\x04\xe9\xcc\xb9\x08
z
\x1e
n7.G
\xfc
]
\xc9\x14\xe1
B@
\xbb
!8`'
DATA_CRLF
=
'BZh91AY&SY
\xae
z
\xbb
N
\x00\x01
H
\xdf\x80\x00\x12
@
\x02\xff\xf0\x01\x07
n
\x00
?
\xe7\xff\xe0
@
\x01\xbc\xc6
`
\x86
*
\x8d
=M
\xa9\x9a\x86\xd0
L@
\x0f
I
\xa6
!
\xa1\x13\xc8\x88
jdi
\x8d
@
\x03
@
\x1a\x1a\x0c\x0c\x83
\x00\xc4
h2
\x19\x01\x82
D
\x84
e
\t\xe8\x99\x89\x19\x1a
h
\x00\r\x1a\x11\xaf\x9b\x0f
G
\xf5
(
\x1b\x1f
?
\t\x12\xcf\xb5\xfc\x95
E
\x00
ps
\x89\x12
^
\xa4\xdd\xa2
&
\x05
(
\x87\x04\x98\x89
u
\xe4
0
%
\xb6\x19\'\x8c\xc4\x89\xca\x07\x0e\x1b
!
\x91
UIFU
%
C
\x99
4!DI
\xd2\xfa\xf0\xf1
N8W
\xde\x13
A
\xf5\x9c
r
%
?
\x9f
3;I45A
\xd1\x8b
T
\xb1
<l
\xba\xcb
_
\xc0
0xY
\x17
r
\x17\x88\x08\x08
@
\xa0\r
y@
\x10\x04
$)`
\xf2\xce\x89
z
\xb0
s
\xec\x9b
.iW
\x9d\x81\xb5
-+t
\x9f\x1a\'\x97
dB
\xf5
x
\xb5\xbe
.[.
\xd7\x0e\x81\xe7\x08\x1c
N`
\x88\x10\xca\x87\xc3
!"
\x80\x92
R
\xa1
/
\xd1\xc0\xe6
mf
\xac\xbd\x99\xcc
a
\xb3\x87
80>
\xa4\xc7\x8d\x1a\\
"
\xad\xa1\xab
yBg
\x15\xb9
l
\x88\x88\x91
k"
\x94\xa4\xd4\x89\xae
*
\xa6\x0b\x10\x0c\xd6\xd4
m
\xe8
6
\xec\xb5
j
\x8a\x86
j
\'
;
\xca
.
\x01
I
\xf2\xaa
J
\xe8\x88\x8c
U+t3
\xfb\x0c\n\xa3
3
\x13
r2
\r\x16\xe0\xb3
(
\xbf\x1d\x83
r
\xe7
M
\xf0
D
\x13
65
\xd8\x88\xd3\xa4\x92\xcb
2
\x06\x04\\\xc1\xb0\xea
//
\xbe
k&
\xd8\xe6
+t
\xe5\xa1\x13\xad
a
\x16\xde
r5"w]
\xa2
i
\xb7
[
\x97
R
\xe2
IT
\xcd
;Z
\x04
dk4
\xad\x8a\t\xd3\x81
z
\x10\xf1
:^`
\xab\x1f\xc5\xdc\x91
N
\x14
$+
\x9e\xae\xd3\x80
'
DATA_CRLF
=
'BZh91AY&SY
\xae
z
\xbb
N
\x00\x01
H
\xdf\x80\x00\x12
@
\x02\xff\xf0\x01\x07
n
\x00
?
\xe7\xff\xe0
@
\x01\xbc\xc6
`
\x86
*
\x8d
=M
\xa9\x9a\x86\xd0
L@
\x0f
I
\xa6
!
\xa1\x13\xc8\x88
jdi
\x8d
@
\x03
@
\x1a\x1a\x0c\x0c\x83
\x00\xc4
h2
\x19\x01\x82
D
\x84
e
\t\xe8\x99\x89\x19\x1a
h
\x00\r\x1a\x11\xaf\x9b\x0f
G
\xf5
(
\x1b\x1f
?
\t\x12\xcf\xb5\xfc\x95
E
\x00
ps
\x89\x12
^
\xa4\xdd\xa2
&
\x05
(
\x87\x04\x98\x89
u
\xe4
0
%
\xb6\x19\'\x8c\xc4\x89\xca\x07\x0e\x1b
!
\x91
UIFU
%
C
\x99
4!DI
\xd2\xfa\xf0\xf1
N8W
\xde\x13
A
\xf5\x9c
r
%
?
\x9f
3;I45A
\xd1\x8b
T
\xb1
<l
\xba\xcb
_
\xc0
0xY
\x17
r
\x17\x88\x08\x08
@
\xa0\r
y@
\x10\x04
$)`
\xf2\xce\x89
z
\xb0
s
\xec\x9b
.iW
\x9d\x81\xb5
-+t
\x9f\x1a\'\x97
dB
\xf5
x
\xb5\xbe
.[.
\xd7\x0e\x81\xe7\x08\x1c
N`
\x88\x10\xca\x87\xc3
!"
\x80\x92
R
\xa1
/
\xd1\xc0\xe6
mf
\xac\xbd\x99\xcc
a
\xb3\x87
80>
\xa4\xc7\x8d\x1a\\
"
\xad\xa1\xab
yBg
\x15\xb9
l
\x88\x88\x91
k"
\x94\xa4\xd4\x89\xae
*
\xa6\x0b\x10\x0c\xd6\xd4
m
\xe8
6
\xec\xb5
j
\x8a\x86
j
\'
;
\xca
.
\x01
I
\xf2\xaa
J
\xe8\x88\x8c
U+t3
\xfb\x0c\n\xa3
3
\x13
r2
\r\x16\xe0\xb3
(
\xbf\x1d\x83
r
\xe7
M
\xf0
D
\x13
65
\xd8\x88\xd3\xa4\x92\xcb
2
\x06\x04\\\xc1\xb0\xea
//
\xbe
k&
\xd8\xe6
+t
\xe5\xa1\x13\xad
a
\x16\xde
r5"w]
\xa2
i
\xb7
[
\x97
R
\xe2
IT
\xcd
;Z
\x04
dk4
\xad\x8a\t\xd3\x81
z
\x10\xf1
:^`
\xab\x1f\xc5\xdc\x91
N
\x14
$+
\x9e\xae\xd3\x80
'
with
open
(
findfile
(
"testbz2_bigmem.bz2"
),
"rb"
)
as
f
:
DATA_BIGMEM
=
f
.
read
()
if
has_cmdline_bunzip2
:
if
has_cmdline_bunzip2
:
def
decompress
(
self
,
data
):
def
decompress
(
self
,
data
):
pop
=
subprocess
.
Popen
(
"bunzip2"
,
shell
=
True
,
pop
=
subprocess
.
Popen
(
"bunzip2"
,
shell
=
True
,
...
@@ -43,6 +46,7 @@ class BaseTest(unittest.TestCase):
...
@@ -43,6 +46,7 @@ class BaseTest(unittest.TestCase):
def
decompress
(
self
,
data
):
def
decompress
(
self
,
data
):
return
bz2
.
decompress
(
data
)
return
bz2
.
decompress
(
data
)
class
BZ2FileTest
(
BaseTest
):
class
BZ2FileTest
(
BaseTest
):
"Test BZ2File type miscellaneous methods."
"Test BZ2File type miscellaneous methods."
...
@@ -346,6 +350,17 @@ class BZ2CompressorTest(BaseTest):
...
@@ -346,6 +350,17 @@ class BZ2CompressorTest(BaseTest):
data
+=
bz2c
.
flush
()
data
+=
bz2c
.
flush
()
self
.
assertEqual
(
self
.
decompress
(
data
),
self
.
TEXT
)
self
.
assertEqual
(
self
.
decompress
(
data
),
self
.
TEXT
)
@bigmemtest
(
_4G
,
memuse
=
1.25
)
def
testBigmem
(
self
,
size
):
text
=
"a"
*
size
bz2c
=
bz2
.
BZ2Compressor
()
data
=
bz2c
.
compress
(
text
)
+
bz2c
.
flush
()
del
text
text
=
self
.
decompress
(
data
)
self
.
assertEqual
(
len
(
text
),
size
)
self
.
assertEqual
(
text
.
strip
(
"a"
),
""
)
class
BZ2DecompressorTest
(
BaseTest
):
class
BZ2DecompressorTest
(
BaseTest
):
def
test_Constructor
(
self
):
def
test_Constructor
(
self
):
self
.
assertRaises
(
TypeError
,
BZ2Decompressor
,
42
)
self
.
assertRaises
(
TypeError
,
BZ2Decompressor
,
42
)
...
@@ -384,6 +399,15 @@ class BZ2DecompressorTest(BaseTest):
...
@@ -384,6 +399,15 @@ class BZ2DecompressorTest(BaseTest):
text
=
bz2d
.
decompress
(
self
.
DATA
)
text
=
bz2d
.
decompress
(
self
.
DATA
)
self
.
assertRaises
(
EOFError
,
bz2d
.
decompress
,
"anything"
)
self
.
assertRaises
(
EOFError
,
bz2d
.
decompress
,
"anything"
)
@bigmemtest
(
_4G
,
memuse
=
1.25
)
def
testBigmem
(
self
,
size
):
# Issue #14398: decompression fails when output data is >=2GB.
if
size
<
_4G
:
self
.
skipTest
(
"Test needs 5GB of memory to run."
)
text
=
bz2
.
BZ2Decompressor
()
.
decompress
(
self
.
DATA_BIGMEM
)
self
.
assertEqual
(
len
(
text
),
_4G
)
self
.
assertEqual
(
text
.
strip
(
"
\0
"
),
""
)
class
FuncTest
(
BaseTest
):
class
FuncTest
(
BaseTest
):
"Test module functions"
"Test module functions"
...
@@ -407,6 +431,24 @@ class FuncTest(BaseTest):
...
@@ -407,6 +431,24 @@ class FuncTest(BaseTest):
# "Test decompress() function with incomplete data"
# "Test decompress() function with incomplete data"
self
.
assertRaises
(
ValueError
,
bz2
.
decompress
,
self
.
DATA
[:
-
10
])
self
.
assertRaises
(
ValueError
,
bz2
.
decompress
,
self
.
DATA
[:
-
10
])
@bigmemtest
(
_4G
,
memuse
=
1.25
)
def
testCompressBigmem
(
self
,
size
):
text
=
"a"
*
size
data
=
bz2
.
compress
(
text
)
del
text
text
=
self
.
decompress
(
data
)
self
.
assertEqual
(
len
(
text
),
size
)
self
.
assertEqual
(
text
.
strip
(
"a"
),
""
)
@bigmemtest
(
_4G
,
memuse
=
1.25
)
def
testDecompressBigmem
(
self
,
size
):
# Issue #14398: decompression fails when output data is >=2GB.
if
size
<
_4G
:
self
.
skipTest
(
"Test needs 5GB of memory to run."
)
text
=
bz2
.
decompress
(
self
.
DATA_BIGMEM
)
self
.
assertEqual
(
len
(
text
),
_4G
)
self
.
assertEqual
(
text
.
strip
(
"
\0
"
),
""
)
def
test_main
():
def
test_main
():
test_support
.
run_unittest
(
test_support
.
run_unittest
(
BZ2FileTest
,
BZ2FileTest
,
...
...
Lib/test/testbz2_bigmem.bz2
0 → 100644
Dosyayı görüntüle @
45dba1da
File added
Misc/NEWS
Dosyayı görüntüle @
45dba1da
...
@@ -122,6 +122,8 @@ Core and Builtins
...
@@ -122,6 +122,8 @@ Core and Builtins
Library
Library
-------
-------
-
Issue
#
14398
:
Fix
size
truncation
and
overflow
bugs
in
the
bz2
module
.
-
Issue
#
5148
:
Ignore
'U'
in
mode
given
to
gzip
.
open
()
and
gzip
.
GzipFile
().
-
Issue
#
5148
:
Ignore
'U'
in
mode
given
to
gzip
.
open
()
and
gzip
.
GzipFile
().
-
Issue
#
16220
:
wsgiref
now
always
calls
close
()
on
an
iterable
response
.
-
Issue
#
16220
:
wsgiref
now
always
calls
close
()
on
an
iterable
response
.
...
...
Modules/bz2module.c
Dosyayı görüntüle @
45dba1da
This diff is collapsed.
Click to expand it.
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