mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-09 01:18:00 +03:00
security_util: Don't error on macOS when getting/setting/moving XATTRs
There are three internal APIs implemented in this security_util
file: virSecurityGetRememberedLabel(),
virSecuritySetRememberedLabel() and
virSecurityMoveRememberedLabel() for getting, setting and moving
remembered seclabel. All three have a special return value of -2
when XATTRs are not supported (for whatever reason) and callers
are expected to handle it gracefully. However, after my commit of
v5.7.0-rc1~115 it may happen that one of the three functions
returned -1 even though XATTRs are not supported (and thus -2
should have been returned).
Fixes: 7cfb7aab57
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
parent
8f0f6ff082
commit
d337543f06
@ -269,8 +269,11 @@ virSecurityGetRememberedLabel(const char *name,
|
|||||||
|
|
||||||
*label = NULL;
|
*label = NULL;
|
||||||
|
|
||||||
if (!(ref_name = virSecurityGetRefCountAttrName(name)))
|
if (!(ref_name = virSecurityGetRefCountAttrName(name))) {
|
||||||
|
if (errno == ENOSYS)
|
||||||
|
return -2;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (virFileGetXAttrQuiet(path, ref_name, &value) < 0) {
|
if (virFileGetXAttrQuiet(path, ref_name, &value) < 0) {
|
||||||
if (errno == ENOSYS || errno == ENODATA || errno == ENOTSUP)
|
if (errno == ENOSYS || errno == ENODATA || errno == ENOTSUP)
|
||||||
@ -364,8 +367,11 @@ virSecuritySetRememberedLabel(const char *name,
|
|||||||
g_autofree char *value = NULL;
|
g_autofree char *value = NULL;
|
||||||
unsigned int refcount = 0;
|
unsigned int refcount = 0;
|
||||||
|
|
||||||
if (!(ref_name = virSecurityGetRefCountAttrName(name)))
|
if (!(ref_name = virSecurityGetRefCountAttrName(name))) {
|
||||||
|
if (errno == ENOSYS)
|
||||||
|
return -2;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (virFileGetXAttrQuiet(path, ref_name, &value) < 0) {
|
if (virFileGetXAttrQuiet(path, ref_name, &value) < 0) {
|
||||||
if (errno == ENOSYS || errno == ENOTSUP) {
|
if (errno == ENOSYS || errno == ENOTSUP) {
|
||||||
@ -452,8 +458,11 @@ virSecurityMoveRememberedLabel(const char *name,
|
|||||||
|
|
||||||
if (!(ref_name = virSecurityGetRefCountAttrName(name)) ||
|
if (!(ref_name = virSecurityGetRefCountAttrName(name)) ||
|
||||||
!(attr_name = virSecurityGetAttrName(name)) ||
|
!(attr_name = virSecurityGetAttrName(name)) ||
|
||||||
!(timestamp_name = virSecurityGetTimestampAttrName(name)))
|
!(timestamp_name = virSecurityGetTimestampAttrName(name))) {
|
||||||
|
if (errno == ENOSYS)
|
||||||
|
return -2;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (virFileGetXAttrQuiet(src, ref_name, &ref_value) < 0) {
|
if (virFileGetXAttrQuiet(src, ref_name, &ref_value) < 0) {
|
||||||
if (errno == ENOSYS || errno == ENOTSUP) {
|
if (errno == ENOSYS || errno == ENOTSUP) {
|
||||||
|
Loading…
Reference in New Issue
Block a user