Handle additional error cases in the manifest schema 1 implementation

This commit is contained in:
Joseph Schorr 2019-02-05 18:06:03 -05:00
parent 82897a2bba
commit 097311f360
2 changed files with 22 additions and 2 deletions

View file

@ -377,7 +377,11 @@ class DockerSchema1Manifest(ManifestInterface):
metadata_string = history_obj[DOCKER_SCHEMA1_V1_COMPAT_KEY]
v1_metadata = json.loads(metadata_string)
try:
v1_metadata = json.loads(metadata_string)
except (ValueError, TypeError):
raise MalformedSchema1Manifest('Could not parse metadata string: %s' % metadata_string)
command_list = v1_metadata.get('container_config', {}).get('Cmd', None)
command = to_canonical_json(command_list) if command_list else None
@ -536,7 +540,7 @@ class DockerSchema1ManifestBuilder(object):
DOCKER_SCHEMA1_BLOB_SUM_KEY: layer_digest,
})
self._history.append({
DOCKER_SCHEMA1_V1_COMPAT_KEY: v1_json_metadata,
DOCKER_SCHEMA1_V1_COMPAT_KEY: v1_json_metadata or '{}',
})
return self