[Reportbug-maint] Bug#857794: reportbug: crash when encountering some non-ASCII characters
Stuart Prescott
stuart at debian.org
Wed Mar 22 01:45:30 UTC 2017
Hi Nis,
Others may have some additional comments but a couple of thoughts from an
observer (I'm not the maintainer).
C.UTF-8 is provided within glibc (it's in the libc-bin package so it is always
available). Is it worth setting that as the locale for all communication with
subprocesses? It strikes me that could simplify some parts of this encoding
handling.
If we're touching every invocation subprocess.* anyway, can we also take this
opportunity to get rid of any invocations via the shell?
+def get_command_output(cmd):
+ use_shell = False
+ if isinstance(cmd, str) and ' ' in cmd:
+ use_shell = True
+ return subprocess.run(cmd, shell=use_shell,
stdout=subprocess.PIPE).stdout.decode(errors='backslashreplace')
specifically, my suggestion is that we *require* cmd to be a list or tuple and
always force use_shell=False. Then we never need to worry about nasty
characters going near the shell, there's also one less subprocess being used.
Associated with that:
* redirection of stderr to /dev/null can be done in python instead
* the uses of COLUMNS=79 are either no-ops because the command doesn't respect
COLUMNS anyway or no-ops because the command ignores COLUMNS when invoked
within a pipe.
cheers
Stuart
--
Stuart Prescott http://www.nanonanonano.net/ stuart at nanonanonano.net
Debian Developer http://www.debian.org/ stuart at debian.org
GPG fingerprint 90E2 D2C1 AD14 6A1B 7EBB 891D BBC1 7EBB 1396 F2F7
More information about the Reportbug-maint
mailing list