Display an error when ISO is invalid

Previous behavior was to crash the program when an iso file was
unreadable or had 0 length.

This patch has the program display an error dialog and not select the file.
pull/218/head
Alan D Moore 7 years ago
parent 27a74ef89d
commit 0f6603dcf6

@ -60,12 +60,20 @@ def iso_size(iso_link):
return os.path.getsize(iso_link)
def is_readable(iso_link):
return os.access(iso_link, os.R_OK)
def is_bootable(iso_link):
"""
Check if an ISO has the ability to boot.
:return: True if ISO is bootable and False if not.
"""
iso9660fs = ISO9660(iso_link)
try:
iso9660fs = ISO9660(iso_link)
except IOError as e:
log(str(e))
raise
isBootable = iso9660fs.checkISOBootable()
return bool(isBootable)

@ -106,7 +106,10 @@ class ISO9660:
f = open(isofile, 'rb')
except(IOError):
sys.stderr.write("can't open {0}".format(isofile))
sys.exit(-1)
raise
if os.path.getsize(isofile) == 0:
raise IOError("File {0} appears to be empty".format(isofile))
self.isoFile = f
self.priVol = None

@ -214,6 +214,22 @@ Are you SURE you want to enable it?",
'Img Files(*.img);; All Files(*.*)')[0]
if config.image_path:
# sanity checks
if not is_readable(config.image_path):
QtWidgets.QMessageBox.critical(
self,
"ISO Not readable",
"Sorry, the file \"{0}\" is not readable.".format(config.image_path)
)
return
if iso_size(config.image_path) == 0:
QtWidgets.QMessageBox.critical(
self,
"ISO is an empty file",
"Sorry, the file \"{0}\" contains no data.".format(config.image_path)
)
return
default_dir_path = os.path.dirname(config.image_path)
gen.write_to_file(preference_file_path, default_dir_path)

Loading…
Cancel
Save