提交 7c40211a 编写于 作者: N Nikolay Shirokovskiy 提交者: Michal Privoznik

security_util: verify xattrs only if ref is present

After 7cfb7aab commit starting a domain pullutes logs with
warnings like [1]. The reason is resource files do not
have timestamp before starting a domain and after destroying
domain the timestamp is cleared. Let's check the timestamp
only if attribute with refcounter is found.

[1] warning : virSecurityValidateTimestamp:198 : Invalid XATTR timestamp detected on \
    /some/path secdriver=dac
Signed-off-by: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
上级 fc178215
...@@ -269,13 +269,9 @@ virSecurityGetRememberedLabel(const char *name, ...@@ -269,13 +269,9 @@ virSecurityGetRememberedLabel(const char *name,
VIR_AUTOFREE(char *) attr_name = NULL; VIR_AUTOFREE(char *) attr_name = NULL;
VIR_AUTOFREE(char *) value = NULL; VIR_AUTOFREE(char *) value = NULL;
unsigned int refcount = 0; unsigned int refcount = 0;
int rc;
*label = NULL; *label = NULL;
if ((rc = virSecurityValidateTimestamp(name, path)) < 0)
return rc;
if (!(ref_name = virSecurityGetRefCountAttrName(name))) if (!(ref_name = virSecurityGetRefCountAttrName(name)))
return -1; return -1;
...@@ -290,6 +286,20 @@ virSecurityGetRememberedLabel(const char *name, ...@@ -290,6 +286,20 @@ virSecurityGetRememberedLabel(const char *name,
return -1; return -1;
} }
if (value) {
int rc;
/* Do this after we've tried to get refcounter to ensure underlying FS
* supports XATTRs and @path has refcounter attribute set, because
* validator might throws a warning. */
if ((rc = virSecurityValidateTimestamp(name, path)) < 0)
return rc;
/* Invalid label is like a non-existent one */
if (rc == 1)
return -2;
}
if (virStrToLong_ui(value, NULL, 10, &refcount) < 0) { if (virStrToLong_ui(value, NULL, 10, &refcount) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("malformed refcount %s on %s"), _("malformed refcount %s on %s"),
...@@ -357,10 +367,6 @@ virSecuritySetRememberedLabel(const char *name, ...@@ -357,10 +367,6 @@ virSecuritySetRememberedLabel(const char *name,
VIR_AUTOFREE(char *) attr_name = NULL; VIR_AUTOFREE(char *) attr_name = NULL;
VIR_AUTOFREE(char *) value = NULL; VIR_AUTOFREE(char *) value = NULL;
unsigned int refcount = 0; unsigned int refcount = 0;
int rc;
if ((rc = virSecurityValidateTimestamp(name, path)) < 0)
return rc;
if (!(ref_name = virSecurityGetRefCountAttrName(name))) if (!(ref_name = virSecurityGetRefCountAttrName(name)))
return -1; return -1;
...@@ -377,6 +383,20 @@ virSecuritySetRememberedLabel(const char *name, ...@@ -377,6 +383,20 @@ virSecuritySetRememberedLabel(const char *name,
} }
} }
if (value) {
int rc;
/* Do this after we've tried to get refcounter to ensure underlying FS
* supports XATTRs and @path has refcounter attribute set, because
* validator might throws a warning. */
if ((rc = virSecurityValidateTimestamp(name, path)) < 0)
return rc;
/* Invalid label is like a non-existent one */
if (rc == 1)
VIR_FREE(value);
}
if (value && if (value &&
virStrToLong_ui(value, NULL, 10, &refcount) < 0) { virStrToLong_ui(value, NULL, 10, &refcount) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册