提交 c8b8b50c 编写于 作者: E Eric Blake

storage: skip selinux cleanup when fd not available

When attempting to backport gluster pools to an older versoin
where there is no VIR_STRDUP, I got a crash from calling
strdup(,NULL). Rather than relying on the current else branch
safely doing nothing when there is no fd, it is easier to just
skip it. While at it, there's no need to explicitly set
perms.label to NULL after a VIR_FREE().

* src/storage/storage_backend.c
(virStorageBackendUpdateVolTargetInfoFD): Minor optimization.
Signed-off-by: NEric Blake <eblake@redhat.com>
上级 8e043864
......@@ -1385,24 +1385,22 @@ virStorageBackendUpdateVolTargetInfoFD(virStorageVolTargetPtr target,
#if WITH_SELINUX
/* XXX: make this a security driver call */
if (fd >= 0 && fgetfilecon_raw(fd, &filecon) == -1) {
if (errno != ENODATA && errno != ENOTSUP) {
virReportSystemError(errno,
_("cannot get file context of '%s'"),
target->path);
return -1;
if (fd >= 0) {
if (fgetfilecon_raw(fd, &filecon) == -1) {
if (errno != ENODATA && errno != ENOTSUP) {
virReportSystemError(errno,
_("cannot get file context of '%s'"),
target->path);
return -1;
}
} else {
target->perms.label = NULL;
}
} else {
if (VIR_STRDUP(target->perms.label, filecon) < 0) {
if (VIR_STRDUP(target->perms.label, filecon) < 0) {
freecon(filecon);
return -1;
}
freecon(filecon);
return -1;
}
freecon(filecon);
}
#else
target->perms.label = NULL;
#endif
return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册