From da638bab2c09c7eea91ce7c60cbbe0f551ccd60a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Tue, 24 Feb 2015 21:38:50 +0000 Subject: morphlib/sourceresolver.py: Be sure VERSION file is a valid YAML file --- morphlib/sourceresolver.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/morphlib/sourceresolver.py b/morphlib/sourceresolver.py index 41f7c11a..0489a4ec 100644 --- a/morphlib/sourceresolver.py +++ b/morphlib/sourceresolver.py @@ -21,6 +21,7 @@ import os import pylru import shutil import tempfile +import yaml import cliapp @@ -83,6 +84,11 @@ class PickleCacheManager(object): # pragma: no cover class SourceResolverError(cliapp.AppException): pass +class FileNotYamlError(SourceResolverError): # pragma: no cover + def __init__(self, filename, errmsg): + SourceResolverError.__init__( + self, "Syntax error in filename %s:\n%s" % filename, errmsg) + class VersionNotFoundError(SourceResolverError): # pragma: no cover def __init__(self): SourceResolverError.__init__( @@ -357,6 +363,11 @@ class SourceResolver(object): if version is None: raise VersionNotFoundError() + try: + obj = yaml.safe_load(version) + except yaml.error.YAMLError as e: + raise FileNotYamlError(morph_filename, e) + while definitions_queue: filename = definitions_queue.popleft() -- cgit v1.2.1