{
virSecurityDACChownList *list = opaque;
virSecurityManagerMetadataLockState *state;
- const char **paths = NULL;
+ g_autofree const char **paths = NULL;
size_t npaths = 0;
size_t i;
int rv = 0;
- int ret = -1;
if (list->lock) {
paths = g_new0(const char *, list->nItems);
}
if (!(state = virSecurityManagerMetadataLock(list->manager, paths, npaths)))
- goto cleanup;
+ return -1;
for (i = 0; i < list->nItems; i++) {
virSecurityDACChownItem *item = list->items[i];
virSecurityManagerMetadataUnlock(list->manager, &state);
if (rv < 0)
- goto cleanup;
+ return -1;
- ret = 0;
- cleanup:
- VIR_FREE(paths);
- return ret;
+ return 0;
}
uid_t uid,
gid_t gid)
{
- char *label = NULL;
- int ret = -1;
+ g_autofree char *label = NULL;
label = g_strdup_printf("+%u:+%u", (unsigned int)uid, (unsigned int)gid);
- ret = virSecuritySetRememberedLabel(SECURITY_DAC_NAME, path, label);
- VIR_FREE(label);
- return ret;
+ return virSecuritySetRememberedLabel(SECURITY_DAC_NAME, path, label);
}
/**
uid_t *uid,
gid_t *gid)
{
- char *label;
- int ret = -1;
+ g_autofree char *label = NULL;
int rv;
rv = virSecurityGetRememberedLabel(SECURITY_DAC_NAME, path, &label);
return 1;
if (virParseOwnershipIds(label, uid, gid) < 0)
- goto cleanup;
+ return -1;
- ret = 0;
- cleanup:
- VIR_FREE(label);
- return ret;
+ return 0;
}
static virSecurityDriverStatus
virSecurityDACClose(virSecurityManager *mgr)
{
virSecurityDACData *priv = virSecurityManagerGetPrivateData(mgr);
- VIR_FREE(priv->groups);
- VIR_FREE(priv->baselabel);
+ g_clear_pointer(&priv->groups, g_free);
+ g_clear_pointer(&priv->baselabel, g_free);
return 0;
}
virSecurityDACData *priv = virSecurityManagerGetPrivateData(mgr);
int ngroups;
- VIR_FREE(priv->groups);
+ g_clear_pointer(&priv->groups, g_free);
priv->ngroups = 0;
if ((ngroups = virGetGroupList(priv->user, priv->group,
&priv->groups)) < 0)
virSecurityDACData *priv = virSecurityManagerGetPrivateData(mgr);
virSecurityLabelDef *seclabel;
virSecurityDeviceLabelDef *chr_seclabel = NULL;
- char *in = NULL, *out = NULL;
- int ret = -1;
+ g_autofree char *in = NULL;
+ g_autofree char *out = NULL;
uid_t user;
gid_t group;
switch ((virDomainChrType)dev_source->type) {
case VIR_DOMAIN_CHR_TYPE_DEV:
case VIR_DOMAIN_CHR_TYPE_FILE:
- ret = virSecurityDACSetOwnership(mgr, NULL,
- dev_source->data.file.path,
- user, group, remember);
+ if (virSecurityDACSetOwnership(mgr, NULL,
+ dev_source->data.file.path,
+ user, group, remember) < 0) {
+ return -1;
+ }
break;
case VIR_DOMAIN_CHR_TYPE_PIPE:
out = g_strdup_printf("%s.out", dev_source->data.file.path);
if (virFileExists(in) && virFileExists(out)) {
if (virSecurityDACSetOwnership(mgr, NULL, in, user, group, remember) < 0 ||
- virSecurityDACSetOwnership(mgr, NULL, out, user, group, remember) < 0)
- goto done;
+ virSecurityDACSetOwnership(mgr, NULL, out, user, group, remember) < 0) {
+ return -1;
+ }
} else if (virSecurityDACSetOwnership(mgr, NULL,
dev_source->data.file.path,
user, group, remember) < 0) {
- goto done;
+ return -1;
}
- ret = 0;
break;
case VIR_DOMAIN_CHR_TYPE_UNIX:
* and passed via FD */
if (virSecurityDACSetOwnership(mgr, NULL,
dev_source->data.nix.path,
- user, group, remember) < 0)
- goto done;
+ user, group, remember) < 0) {
+ return -1;
+ }
}
- ret = 0;
break;
case VIR_DOMAIN_CHR_TYPE_SPICEPORT:
case VIR_DOMAIN_CHR_TYPE_SPICEVMC:
case VIR_DOMAIN_CHR_TYPE_NMDM:
case VIR_DOMAIN_CHR_TYPE_LAST:
- ret = 0;
break;
}
- done:
- VIR_FREE(in);
- VIR_FREE(out);
- return ret;
+ return 0;
}
bool recall)
{
virSecurityDeviceLabelDef *chr_seclabel = NULL;
- char *in = NULL, *out = NULL;
- int ret = -1;
+ g_autofree char *in = NULL;
+ g_autofree char *out = NULL;
chr_seclabel = virDomainChrSourceDefGetSecurityLabelDef(dev_source,
SECURITY_DAC_NAME);
switch ((virDomainChrType)dev_source->type) {
case VIR_DOMAIN_CHR_TYPE_DEV:
case VIR_DOMAIN_CHR_TYPE_FILE:
- ret = virSecurityDACRestoreFileLabelInternal(mgr, NULL,
- dev_source->data.file.path,
- recall);
+ if (virSecurityDACRestoreFileLabelInternal(mgr, NULL,
+ dev_source->data.file.path,
+ recall) < 0) {
+ return -1;
+ }
break;
case VIR_DOMAIN_CHR_TYPE_PIPE:
in = g_strdup_printf("%s.in", dev_source->data.file.path);
if (virFileExists(in) && virFileExists(out)) {
if (virSecurityDACRestoreFileLabelInternal(mgr, NULL, out, recall) < 0 ||
- virSecurityDACRestoreFileLabelInternal(mgr, NULL, in, recall) < 0)
- goto done;
+ virSecurityDACRestoreFileLabelInternal(mgr, NULL, in, recall) < 0) {
+ return -1;
+ }
} else if (virSecurityDACRestoreFileLabelInternal(mgr, NULL,
dev_source->data.file.path,
recall) < 0) {
- goto done;
+ return -1;
}
- ret = 0;
break;
case VIR_DOMAIN_CHR_TYPE_UNIX:
virSecurityDACRestoreFileLabelInternal(mgr, NULL,
dev_source->data.nix.path,
recall) < 0) {
- goto done;
+ return -1;
}
- ret = 0;
break;
case VIR_DOMAIN_CHR_TYPE_NULL:
case VIR_DOMAIN_CHR_TYPE_SPICEPORT:
case VIR_DOMAIN_CHR_TYPE_NMDM:
case VIR_DOMAIN_CHR_TYPE_LAST:
- ret = 0;
break;
}
- done:
- VIR_FREE(in);
- VIR_FREE(out);
- return ret;
+ return 0;
}
virSecurityLabelPtr seclabel)
{
struct stat sb;
- char *path = NULL;
- int ret = -1;
+ g_autofree char *path = NULL;
VIR_DEBUG("Getting DAC user and group on process '%d'", pid);
virReportSystemError(errno,
_("unable to get uid and gid for PID %d via procfs"),
pid);
- goto cleanup;
+ return -1;
}
g_snprintf(seclabel->label, VIR_SECURITY_LABEL_BUFLEN,
"+%u:+%u", (unsigned int)sb.st_uid, (unsigned int)sb.st_gid);
- ret = 0;
-
- cleanup:
- VIR_FREE(path);
- return ret;
+ return 0;
}
#elif defined(__FreeBSD__)
static int