summaryrefslogtreecommitdiff
path: root/src/core/selinux-access.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-02-13 19:35:08 +0100
committerLennart Poettering <lennart@poettering.net>2013-02-13 19:36:09 +0100
commitace188cf3a0de77cb644f0e4dee7853c4f6404fd (patch)
tree85a89eb8c278502e5852f18c10da45fadb73626b /src/core/selinux-access.c
parent090be8653471e1abe3f1cdd32eaad0fbd65f85cd (diff)
selinux: use a dynamically sized string when generating audit messages
https://bugzilla.redhat.com/show_bug.cgi?id=883043
Diffstat (limited to 'src/core/selinux-access.c')
-rw-r--r--src/core/selinux-access.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
index 08a483457..bc195f3c5 100644
--- a/src/core/selinux-access.c
+++ b/src/core/selinux-access.c
@@ -181,13 +181,18 @@ static int log_callback(int type, const char *fmt, ...) {
#ifdef HAVE_AUDIT
if (get_audit_fd() >= 0) {
- char buf[LINE_MAX];
+ _cleanup_free_ char *buf = NULL;
+ int r;
- vsnprintf(buf, sizeof(buf), fmt, ap);
- audit_log_user_avc_message(get_audit_fd(), AUDIT_USER_AVC, buf, NULL, NULL, NULL, 0);
+ r = vasprintf(&buf, fmt, ap);
va_end(ap);
- return 0;
+ if (r >= 0) {
+ audit_log_user_avc_message(get_audit_fd(), AUDIT_USER_AVC, buf, NULL, NULL, NULL, 0);
+ return 0;
+ }
+
+ va_start(ap, fmt);
}
#endif
log_metav(LOG_USER | LOG_INFO, __FILE__, __LINE__, __FUNCTION__, fmt, ap);