Patches 1-6 are pure refactors, other patches then convert handling to
the newly introduced functions.
Unfortunately quite a lot of the supposedly "secure" handling of secrets
isn't really secure as we e.g. copy the secret into another buffer which
isn't cleared properly or format it directly onto the commadline ...
I've kept them so that they are still marked as secure despite the
handling being pointless.
v2:
- use a new wrapper virSecureErase to mark places really needing secure
handling instead of just plain memset (but the wrapper still uses
memset)
- converted other memset calls to virSecureErase in
virCryptoEncryptDataAESgnutls, probably the only function worthy
of this change
- added patches removing the string disposal code too
Peter Krempa (27):
hypervFreeInvokeParams: Don't use VIR_DISPOSE_N for freeing 'params'
libxlMakeDomBuildInfo: Don't use VIR_DISPOSE_N for USB device list
qemuDomainMasterKeyCreate: Don't use VIR_DISPOSE_N on failure
cmdSecretSetValue: Make it obvious that --file, --base64 and
--interactive are exlcusive
virNetLibsshSessionAuthAddPrivKeyAuth: Don't unlock unlocked 'sess' on
error
virNetLibsshSessionAuthAddPrivKeyAuth: Refactor cleanup
util: Introduce virsecureerase module
virsh: cmdSecretSetValue: Rework handling of the secret value
storage_backend_iscsi(_direct): Properly clear secrets
libxlMakeNetworkDiskSrc: Avoid use of VIR_DISPOSE_N
qemu: domain: Use virSecureErase for clearing secrets instead of
VIR_DISPOSE_N
virsh: cmdSecretGetValue: Use virSecureErase instead of VIR_DISPOSE_N
virStorageBackendRBDOpenRADOSConn: Use virSecureErase instead of
VIR_DISPOSE_N
virCryptoEncryptDataAESgnutls: Use virSecureErase instead of
VIR_DISPOSE_N
virCryptoEncryptDataAESgnutls: Use virSecureErase instead of memset
storageBackendCreateQemuImgSecretPath: Use virSecureErase instead of
VIR_DISPOSE_N
tests: viralloc: Remove testDispose case
util: viralloc: Remove VIR_DISPOSE(_N)
util: virsecureerase: Introduce virSecureEraseString
libxlMakeNetworkDiskSrc: Use virSecureEraseString instead of
VIR_AUTODISPOSE_STR
qemuBuildRBDSecinfoURI: Use virSecureEraseString instead of
VIR_AUTODISPOSE_STR
virStorageBackendRBDOpenRADOSConn: Use virSecureEraseString instead of
VIR_AUTODISPOSE_STR
cmdSecretGetValue: Use virSecureEraseString instead of
VIR_AUTODISPOSE_STR
virNetLibsshAuthenticatePassword: Use virSecureEraseString instead of
VIR_AUTODISPOSE_STR
util: alloc: Remove VIR_AUTODISPOSE_STR
virnetlibsshsession: Replace VIR_DISPOSE_STRING with
virSecureEraseString
util: alloc: Remove VIR_DISPOSE_STRING
src/hyperv/hyperv_wmi.c | 4 +-
src/libvirt_private.syms | 7 ++-
src/libxl/libxl_conf.c | 16 ++++--
src/qemu/qemu_command.c | 4 +-
src/qemu/qemu_domain.c | 22 +++++---
src/rpc/virnetlibsshsession.c | 50 +++++++----------
src/storage/storage_backend_iscsi.c | 16 +++---
src/storage/storage_backend_iscsi_direct.c | 17 +++---
src/storage/storage_backend_rbd.c | 16 ++++--
src/storage/storage_util.c | 4 +-
src/util/meson.build | 1 +
src/util/viralloc.c | 52 ------------------
src/util/viralloc.h | 51 -----------------
src/util/vircrypto.c | 12 ++--
src/util/virsecureerase.c | 57 +++++++++++++++++++
src/util/virsecureerase.h | 28 ++++++++++
tests/viralloctest.c | 34 ------------
tools/virsh-secret.c | 64 ++++++++++------------
18 files changed, 206 insertions(+), 249 deletions(-)
create mode 100644 src/util/virsecureerase.c
create mode 100644 src/util/virsecureerase.h
--
2.29.2