Description of problem: Creating an empty ~/.sectoolrc file breaks the sectool and sectool-gui. To be precise, the file is not empty, but contains only whitespace(s). Version-Release number of selected component (if applicable): # rpm -q sectool{,-gui} sectool-0.9.4-2.fc11.i586 sectool-gui-0.9.4-2.fc11.i586 How reproducible: always Steps to Reproduce: 1. Create te rc file cotaining only whitespaces, e.g.: # echo > ~/.sectoolrc 2. Run sectool-gui or sectool, e.g.: # sectool --level 1 # sectool-gui 3. Observe the tracebacks ... Actual results: <snip> # echo > ~/.sectoolrc [root@dhcp-lab-115 ~]# sectool-gui Traceback (most recent call last): File "/usr/bin/sectool-gui", line 534, in __init__ self.ST_TestLoader = scheduler.ST_TestLoader( level_config=os.path.join(os.path.expanduser("~"), self.scheduler_conf.userfile) ) File "/usr/share/sectool/scheduler/scheduler.py", line 1103, in __init__ self.level_override = self.__get_custom_levels(level_config) File "/usr/share/sectool/scheduler/scheduler.py", line 1126, in __get_custom_levels level_override[splitted[0]] = levels IndexError: list index out of range Locals by frame, innermost last Frame <module> in /usr/bin/sectool-gui at line 1053 Frame run in /usr/bin/sectool-gui at line 1048 Frame __init__ in /usr/bin/sectool-gui at line 131 Frame __init_handlers in /usr/bin/sectool-gui at line 141 Frame __init__ in /usr/bin/sectool-gui at line 537 Frame __init__ in /usr/share/sectool/scheduler/scheduler.py at line 1103 Frame __get_custom_levels in /usr/share/sectool/scheduler/scheduler.py at line 1126 f = <open file '/root/.sectoolrc', mode 'r' at 0x99bd8e0> self = <scheduler.scheduler.ST_TestLoader object at 0x9ad1d8c> levels = [0] splitted = [] line = level_override = {} level_config = /root/.sectoolrc Traceback (most recent call last): File "/usr/bin/sectool-gui", line 1053, in <module> run() File "/usr/bin/sectool-gui", line 1048, in run main = SecToolGUI( ) File "/usr/bin/sectool-gui", line 131, in __init__ self.__init_handlers( ) File "/usr/bin/sectool-gui", line 141, in __init_handlers self.testHandler = TestHandler( ) File "/usr/bin/sectool-gui", line 538, in __init__ raise str(e) TypeError: exceptions must be classes or instances, not str # sectool --level 1 Traceback (most recent call last): File "/usr/sbin/sectool", line 453, in run action = constructor(options, fmt) File "/usr/share/sectool/actions.py", line 371, in __init__ ST_RunAction.__init__(self, options, formatter, stream) File "/usr/share/sectool/actions.py", line 130, in __init__ ST_Action.__init__(self, options.options, options.args, formatter) File "/usr/share/sectool/actions.py", line 35, in __init__ self.loader = scheduler.ST_TestLoader(level_config=os.path.join(os.path.expanduser("~"), scheduler.SecToolConf.userfile)) File "/usr/share/sectool/scheduler/scheduler.py", line 1103, in __init__ self.level_override = self.__get_custom_levels(level_config) File "/usr/share/sectool/scheduler/scheduler.py", line 1126, in __get_custom_levels level_override[splitted[0]] = levels IndexError: list index out of range </snip> Expected results: Handle the traceback ... and the sectool{,-gui} should run nicely ... Additional info: This is broken in F11, too.
Created attachment 359493 [details] Patch to evade empty configuration files