From 9351b597c21af3e720ef91707f31b9e63b30d47d Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Sat, 17 Apr 2021 11:38:06 -0600 Subject: [PATCH] Avoid potential crash in run_chkdsk_online() --- scripts/wk/os/win.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/scripts/wk/os/win.py b/scripts/wk/os/win.py index 27bab457..a4ad5495 100644 --- a/scripts/wk/os/win.py +++ b/scripts/wk/os/win.py @@ -338,16 +338,26 @@ def run_chkdsk_online(): # Run scan run_program(cmd, check=False) - proc = get_procs('chkdsk.exe')[0] - return_code = proc.wait() + try: + proc = get_procs('chkdsk.exe')[0] + return_code = proc.wait() + except IndexError: + # Failed to get CHKDSK process, set return_code to force a retry + return_code = 255 if return_code > 1: # Try again retried = True run_program(cmd, check=False) - proc = get_procs('chkdsk.exe')[0] - return_code = proc.wait() + try: + proc = get_procs('chkdsk.exe')[0] + return_code = proc.wait() + except IndexError: + # Failed to get CHKDSK process + return_code = -1 # Check result + if return_code == -1: + raise GenericError('Failed to find CHKDSK process.') if (return_code == 0 and retried) or return_code == 1: raise GenericWarning('Repaired (or manually aborted)') if return_code > 1: