Commit fca538a1 authored by Eduardo Habkost's avatar Eduardo Habkost Committed by Stefan Hajnoczi
Browse files

image-fuzzer: Use errors parameter of subprocess.Popen()



Instead of manually encoding stderr and stdout output, use
`errors` parameter of subprocess.Popen().  This will make
process.communicate() return unicode strings instead of bytes
objects.

Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
Reviewed-by: default avatarJohn Snow <jsnow@redhat.com>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20191016192430.25098-11-ehabkost@redhat.com
Message-Id: <20191016192430.25098-11-ehabkost@redhat.com>
Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
parent 73bdbb84
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -79,16 +79,13 @@ def run_app(fd, q_args):
    devnull = open('/dev/null', 'r+')
    process = subprocess.Popen(q_args, stdin=devnull,
                               stdout=subprocess.PIPE,
                               stderr=subprocess.PIPE)
                               stderr=subprocess.PIPE,
                               errors='replace')
    try:
        out, err = process.communicate()
        signal.alarm(0)
        # fd is a text file, so we need to decode the process output before
        # writing to it.
        # We could be simply using the `errors` parameter of subprocess.Popen(),
        # but this will be possible only after migrating to Python 3
        fd.write(out.decode(errors='replace'))
        fd.write(err.decode(errors='replace'))
        fd.write(out)
        fd.write(err)
        fd.flush()
        return process.returncode