[PATCH] issue #417: Validate image file path when creating a new template

To create a template using an image file, the user must specify an existing file on system. Add this verification to avoid error while dealing with guestfs. Signed-off-by: Aline Manera <alinefm@linux.vnet.ibm.com> --- src/kimchi/i18n.py | 1 + src/kimchi/imageinfo.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py index 552be25..8315d1d 100644 --- a/src/kimchi/i18n.py +++ b/src/kimchi/i18n.py @@ -65,6 +65,7 @@ messages = { "KCHIMG0001E": _("An error occurred when probing image OS information."), "KCHIMG0002E": _("No OS information found in given image."), "KCHIMG0003E": _("Unable to read image file %(filename)s"), + "KCHIMG0004E": _("Image file must be an existing file on system. %(filename)s is not a valid input."), "KCHVM0001E": _("Virtual machine %(name)s already exists"), "KCHVM0002E": _("Virtual machine %(name)s does not exist"), diff --git a/src/kimchi/imageinfo.py b/src/kimchi/imageinfo.py index f4c6356..89d1e0a 100644 --- a/src/kimchi/imageinfo.py +++ b/src/kimchi/imageinfo.py @@ -1,7 +1,7 @@ # # Kimchi # -# Copyright IBM Corp, 2014 +# Copyright IBM, Corp. 2014 # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -22,7 +22,7 @@ import os import sys import guestfs -from kimchi.exception import ImageFormatError, TimeoutExpired +from kimchi.exception import ImageFormatError, InvalidParameter, TimeoutExpired from kimchi.utils import run_command, kimchi_log @@ -42,15 +42,21 @@ def probe_img_info(path): def probe_image(image_path): + if not os.path.isfile(image_path): + raise InvalidParameter("KCHIMG0004E", {'filename': image_path}) + + if not os.access(image_path, os.R_OK): + raise ImageFormatError("KCHIMG0003E", {'filename': image_path}) + g = guestfs.GuestFS(python_return_dict=True) g.add_drive_opts(image_path, readonly=1) g.launch() - if not os.access(image_path, os.R_OK): - raise ImageFormatError("KCHIMG0003E", {'filename': image_path}) + try: roots = g.inspect_os() except: raise ImageFormatError("KCHIMG0001E") + if len(roots) == 0: raise ImageFormatError("KCHIMG0002E") -- 1.9.3

Reviewed-by: Crístian Viana <vianac@linux.vnet.ibm.com> On 23-09-2014 21:19, Aline Manera wrote:
To create a template using an image file, the user must specify an existing file on system. Add this verification to avoid error while dealing with guestfs.
Signed-off-by: Aline Manera <alinefm@linux.vnet.ibm.com>
participants (2)
-
Aline Manera
-
Crístian Viana