Alexey_Donskoy писал(а):
Пётр Кушнир писал(а):
Утилита для проверки системы
сказала мне, что "система не подвержена уязвимости". Core i5 трёхлетней давности, если не более. Странно.
Хотел написать, что утилита написана тяп-ляп из-за этого фрагмента, где дублируется часть кода:
Код:
try:
ver_str, code, family = sps.run_tool()
except sps.SPSUnsupportedError as the_err:
try:
ver_str, code, family = sps.run_tool(use_old=True)
except sps.SPSUnsupportedError:
log.log("SPS tool meet unsupported platform\n")
except sps.SPSNoTool as the_err:
log.log("Can't find SPS tool\n")
except sps.SPSToolError as the_err:
log.log("SPS tool returned error %d\n" % the_err.ret)
except sps.SPSVerNotFound as the_err:
log.log("Can't find SPS version in the tool output\n")
except OSError as the_err:
log.log("SPS tool failed with error %s[%d]\n" %
(the_err.strerror, the_err.errno))
except sps.SPSNoTool as the_err:
log.log("Can't find SPS tool\n")
except sps.SPSToolError as the_err:
log.log("SPS tool returned error %d\n" % the_err.ret)
except sps.SPSVerNotFound as the_err:
log.log("Can't find SPS version in the tool output\n")
except OSError as the_err:
log.log("SPS tool failed with error %s[%d]\n" %
(the_err.strerror, the_err.errno))
Поэтому и к её результатам стоит относиться соответствующе. Но потом подумал, что так просто этот фрагмент не переписать, чтобы это было однозначно лучше. Исключения - это ещё и всегда очень удобно.
Так код мог бы выглядеть, если бы подпрограмма возвращала бы ошибку
Код:
the_err, ver_str, code, family = sps.run_tool()
if the_err is sps.SPSUnsupportedError:
the_err, ver_str, code, family = sps.run_tool(use_old=True)
if the_err is sps.SPSUnsupportedError:
log.log("SPS tool meet unsupported platform\n")
elif the_err is sps.SPSNoTool:
log.log("Can't find SPS tool\n")
elif the_err is sps.SPSToolError:
log.log("SPS tool returned error %d\n" % the_err.ret)
elif the_err is sps.SPSVerNotFound:
log.log("Can't find SPS version in the tool output\n")
elif the_err is OSError:
log.log("SPS tool failed with error %s[%d]\n" %
(the_err.strerror, the_err.errno))
Впрочем, у писателя этой утилиты ещё и с логикой проблемы:
Код:
no_drv = True if code == glob.HECI_NOT_INSTALLED else False