Commit db044899 authored by Martin v. Löwis's avatar Martin v. Löwis

Patch #443899: Check modes on files before performing operations.

Use IOErrors where file objects use them.
parent c7f45412
...@@ -61,7 +61,7 @@ class GzipFile: ...@@ -61,7 +61,7 @@ class GzipFile:
zlib.DEF_MEM_LEVEL, zlib.DEF_MEM_LEVEL,
0) 0)
else: else:
raise ValueError, "Mode " + mode + " not supported" raise IOError, "Mode " + mode + " not supported"
self.fileobj = fileobj self.fileobj = fileobj
self.offset = 0 self.offset = 0
...@@ -133,6 +133,10 @@ class GzipFile: ...@@ -133,6 +133,10 @@ class GzipFile:
def write(self,data): def write(self,data):
if self.mode != WRITE:
import errno
raise IOError(errno.EBADF, "write() on read-only GzipFile object")
if self.fileobj is None: if self.fileobj is None:
raise ValueError, "write() on closed GzipFile object" raise ValueError, "write() on closed GzipFile object"
if len(data) > 0: if len(data) > 0:
...@@ -142,6 +146,10 @@ class GzipFile: ...@@ -142,6 +146,10 @@ class GzipFile:
self.offset += len(data) self.offset += len(data)
def read(self, size=-1): def read(self, size=-1):
if self.mode != READ:
import errno
raise IOError(errno.EBADF, "write() on read-only GzipFile object")
if self.extrasize <= 0 and self.fileobj is None: if self.extrasize <= 0 and self.fileobj is None:
return '' return ''
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment