From: Peter Krempa <pkre...@redhat.com> Declare 'in'/'out' only in the bocks which use them and automatically free them. Since cleanup section was removed we don't need a 'ret' variable any more.
Signed-off-by: Peter Krempa <pkre...@redhat.com> --- src/security/security_selinux.c | 87 +++++++++++++++------------------ 1 file changed, 40 insertions(+), 47 deletions(-) diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c index 2cdc6bf954..25f0c45955 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -2667,8 +2667,6 @@ virSecuritySELinuxSetChardevLabel(virSecurityManager *mgr, virSecurityLabelDef *seclabel; virSecurityDeviceLabelDef *chr_seclabel = NULL; char *imagelabel = NULL; - char *in = NULL, *out = NULL; - int ret = -1; seclabel = virDomainDefGetSecurityLabelDef(def, SECURITY_SELINUX_NAME); if (!seclabel || !seclabel->relabel) @@ -2693,10 +2691,12 @@ virSecuritySELinuxSetChardevLabel(virSecurityManager *mgr, switch (dev_source->type) { case VIR_DOMAIN_CHR_TYPE_DEV: case VIR_DOMAIN_CHR_TYPE_FILE: - ret = virSecuritySELinuxSetFilecon(mgr, - dev_source->data.file.path, - imagelabel, - true); + if (virSecuritySELinuxSetFilecon(mgr, + dev_source->data.file.path, + imagelabel, + true) < 0) + return -1; + break; case VIR_DOMAIN_CHR_TYPE_UNIX: @@ -2710,37 +2710,35 @@ virSecuritySELinuxSetChardevLabel(virSecurityManager *mgr, dev_source->data.nix.path, imagelabel, true) < 0) - goto done; + return -1; } - ret = 0; + break; - case VIR_DOMAIN_CHR_TYPE_PIPE: - in = g_strdup_printf("%s.in", dev_source->data.file.path); - out = g_strdup_printf("%s.out", dev_source->data.file.path); + case VIR_DOMAIN_CHR_TYPE_PIPE: { + g_autofree char *in = g_strdup_printf("%s.in", dev_source->data.file.path); + g_autofree char *out = g_strdup_printf("%s.out", dev_source->data.file.path); if (virFileExists(in) && virFileExists(out)) { if ((virSecuritySELinuxSetFilecon(mgr, in, imagelabel, true) < 0) || - (virSecuritySELinuxSetFilecon(mgr, out, imagelabel, true) < 0)) { - goto done; - } - } else if (virSecuritySELinuxSetFilecon(mgr, - dev_source->data.file.path, - imagelabel, - true) < 0) { - goto done; + (virSecuritySELinuxSetFilecon(mgr, out, imagelabel, true) < 0)) + return -1; + + } else { + if (virSecuritySELinuxSetFilecon(mgr, + dev_source->data.file.path, + imagelabel, + true) < 0) + return -1; } - ret = 0; + break; + } default: - ret = 0; break; } - done: - VIR_FREE(in); - VIR_FREE(out); - return ret; + return 0; } static int @@ -2752,8 +2750,6 @@ virSecuritySELinuxRestoreChardevLabel(virSecurityManager *mgr, { virSecurityLabelDef *seclabel; virSecurityDeviceLabelDef *chr_seclabel = NULL; - char *in = NULL, *out = NULL; - int ret = -1; seclabel = virDomainDefGetSecurityLabelDef(def, SECURITY_SELINUX_NAME); if (!seclabel || !seclabel->relabel) @@ -2775,8 +2771,8 @@ virSecuritySELinuxRestoreChardevLabel(virSecurityManager *mgr, if (virSecuritySELinuxRestoreFileLabel(mgr, dev_source->data.file.path, true) < 0) - goto done; - ret = 0; + return -1; + break; case VIR_DOMAIN_CHR_TYPE_UNIX: @@ -2784,36 +2780,33 @@ virSecuritySELinuxRestoreChardevLabel(virSecurityManager *mgr, if (virSecuritySELinuxRestoreFileLabel(mgr, dev_source->data.nix.path, true) < 0) - goto done; + return -1; } - ret = 0; + break; - case VIR_DOMAIN_CHR_TYPE_PIPE: - out = g_strdup_printf("%s.out", dev_source->data.file.path); - in = g_strdup_printf("%s.in", dev_source->data.file.path); + case VIR_DOMAIN_CHR_TYPE_PIPE: { + g_autofree char *out = g_strdup_printf("%s.out", dev_source->data.file.path); + g_autofree char *in = g_strdup_printf("%s.in", dev_source->data.file.path); if (virFileExists(in) && virFileExists(out)) { if ((virSecuritySELinuxRestoreFileLabel(mgr, out, true) < 0) || - (virSecuritySELinuxRestoreFileLabel(mgr, in, true) < 0)) { - goto done; - } - } else if (virSecuritySELinuxRestoreFileLabel(mgr, - dev_source->data.file.path, - true) < 0) { - goto done; + (virSecuritySELinuxRestoreFileLabel(mgr, in, true) < 0)) + return -1; + + } else { + if (virSecuritySELinuxRestoreFileLabel(mgr, + dev_source->data.file.path, + true) < 0) + return -1; } - ret = 0; + } break; default: - ret = 0; break; } - done: - VIR_FREE(in); - VIR_FREE(out); - return ret; + return 0; } -- 2.50.0