aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Andreas Bergmeier <abergmeier@gmx.net>2017-12-21 01:00:25 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-21 01:01:54 -0800
commit8268c56e27494d345077720e129fda05c40b0514 (patch)
tree3b8f55a0b436123dbebb75bef27fc5c003d03ab4 /tools
parent26b7ea6a37961ce993afe510d0ff8c1b5ecb30bc (diff)
Raise path error for failing read in GetTarFile.
Closes #4282. PiperOrigin-RevId: 179783690
Diffstat (limited to 'tools')
-rw-r--r--tools/build_defs/docker/BUILD3
-rw-r--r--tools/build_defs/docker/utils.py18
2 files changed, 15 insertions, 6 deletions
diff --git a/tools/build_defs/docker/BUILD b/tools/build_defs/docker/BUILD
index 9db68adb3a..d3b6f3e13b 100644
--- a/tools/build_defs/docker/BUILD
+++ b/tools/build_defs/docker/BUILD
@@ -74,6 +74,9 @@ py_binary(
py_library(
name = "utils",
srcs = ["utils.py"],
+ deps = [
+ "//third_party/py/six",
+ ],
)
filegroup(
diff --git a/tools/build_defs/docker/utils.py b/tools/build_defs/docker/utils.py
index f6c53d01cc..6ddec17b29 100644
--- a/tools/build_defs/docker/utils.py
+++ b/tools/build_defs/docker/utils.py
@@ -16,6 +16,8 @@
import json
import tarfile
+from six import raise_from
+
def ExtractValue(value):
"""Return the contents of a file point to by value if it starts with an @.
@@ -45,12 +47,16 @@ def GetTarFile(f, name):
Returns:
The content of the file, or None if not found.
"""
- with tarfile.open(f, 'r') as tar:
- members = [tarinfo.name for tarinfo in tar.getmembers()]
- for i in ['', './', '/']:
- if i + name in members:
- return tar.extractfile(i + name).read()
- return None
+ with open(f, 'rb') as fobj:
+ try:
+ with tarfile.open(fileobj=fobj) as tar:
+ members = [tarinfo.name for tarinfo in tar.getmembers()]
+ for i in ['', './', '/']:
+ if i + name in members:
+ return tar.extractfile(i + name).read()
+ except tarfile.ReadError as error:
+ raise_from(IOError('Error when reading %s' % f), error)
+ return None
def GetManifestFromTar(f=None):