diff --git a/installsystems/image.py b/installsystems/image.py index e753f4ab113b3b3d4a04ac94e11668a79965687c..d261c87ac6ae6917ac9a89b76e2b75e71da741e6 100644 --- a/installsystems/image.py +++ b/installsystems/image.py @@ -35,16 +35,19 @@ class Image(object): @staticmethod def check_image_name(buf): ''' - Check if @name is a valid image name + Check if @buf is a valid image name ''' - return re.match("[-_\w]+", buf) is not None + if re.match("^[-_\w]+$", buf) is None: + raise Exception("Invalid image name %s" % buf) @staticmethod def check_image_version(buf): ''' - Check if @name is a valid image version + Check if @buf is a valid image version ''' - return re.match("\d+", buf) is not None + if re.match("^\d+$", buf) is None: + raise Exception("Invalid image version %s" % buf) + class SourceImage(Image): ''' @@ -336,6 +339,8 @@ class SourceImage(Image): cp.read(descpath) for n in ("name","version", "description", "author"): d[n] = cp.get("image", n) + self.check_image_name(d["name"]) + self.check_image_version(d["version"]) except Exception as e: raise Exception("Bad description: %s" % e) return d @@ -419,9 +424,10 @@ class PackageImage(Image): # check description try: desc = json.loads(img_desc) + self.check_image_name(desc["name"]) + self.check_image_version(desc["version"]) except Exception as e: raise Exception("Invalid description: %s" % e) - # FIXME: we should check valid information here return desc def show(self, verbose=False):