mirror of https://gitee.com/openkylin/libvirt.git
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: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
8e043864ec
commit
c8b8b50c3b
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue