mirror of
https://github.com/libvirt/libvirt.git
synced 2025-01-08 07:03:19 -06: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;
|
||||
|
||||
if (!(ref_name = virSecurityGetRefCountAttrName(name)))
|
||||
if (!(ref_name = virSecurityGetRefCountAttrName(name))) {
|
||||
if (errno == ENOSYS)
|
||||
return -2;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (virFileGetXAttrQuiet(path, ref_name, &value) < 0) {
|
||||
if (errno == ENOSYS || errno == ENODATA || errno == ENOTSUP)
|
||||
@ -364,8 +367,11 @@ virSecuritySetRememberedLabel(const char *name,
|
||||
g_autofree char *value = NULL;
|
||||
unsigned int refcount = 0;
|
||||
|
||||
if (!(ref_name = virSecurityGetRefCountAttrName(name)))
|
||||
if (!(ref_name = virSecurityGetRefCountAttrName(name))) {
|
||||
if (errno == ENOSYS)
|
||||
return -2;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (virFileGetXAttrQuiet(path, ref_name, &value) < 0) {
|
||||
if (errno == ENOSYS || errno == ENOTSUP) {
|
||||
@ -452,8 +458,11 @@ virSecurityMoveRememberedLabel(const char *name,
|
||||
|
||||
if (!(ref_name = virSecurityGetRefCountAttrName(name)) ||
|
||||
!(attr_name = virSecurityGetAttrName(name)) ||
|
||||
!(timestamp_name = virSecurityGetTimestampAttrName(name)))
|
||||
!(timestamp_name = virSecurityGetTimestampAttrName(name))) {
|
||||
if (errno == ENOSYS)
|
||||
return -2;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (virFileGetXAttrQuiet(src, ref_name, &ref_value) < 0) {
|
||||
if (errno == ENOSYS || errno == ENOTSUP) {
|
||||
|
Loading…
Reference in New Issue
Block a user