• E
    command: properly diagnose process exit via signal · 208a044a
    Eric Blake 提交于
    Child processes don't always reach _exit(); if they die from a
    signal, then any messages should still be accurate.  Most users
    either expect a 0 status (thankfully, if status==0, then
    WIFEXITED(status) is true and WEXITSTATUS(status)==0 for all
    known platforms) or were filtering on WIFEXITED before printing
    a status, but a few were missing this check.  Additionally,
    nwfilter_ebiptables_driver was making an assumption that works
    on Linux (where WEXITSTATUS shifts and WTERMSIG just masks)
    but fails on other platforms (where WEXITSTATUS just masks and
    WTERMSIG shifts).
    
    * src/util/command.h (virCommandTranslateStatus): New helper.
    * src/libvirt_private.syms (command.h): Export it.
    * src/util/command.c (virCommandTranslateStatus): New function.
    (virCommandWait): Use it to also diagnose status from signals.
    * src/security/security_apparmor.c (load_profile): Likewise.
    * src/storage/storage_backend.c
    (virStorageBackendQEMUImgBackingFormat): Likewise.
    * src/util/util.c (virExecDaemonize, virRunWithHook)
    (virFileOperation, virDirCreate): Likewise.
    * daemon/remote.c (remoteDispatchAuthPolkit): Likewise.
    * src/nwfilter/nwfilter_ebiptables_driver.c (ebiptablesExecCLI):
    Likewise.
    208a044a
security_apparmor.c 22.6 KB