From db5c09f7995a27555a10418648d9dc7e1e8bb94b Mon Sep 17 00:00:00 2001 From: Luis Ressel Date: Mon, 13 Nov 2017 07:33:35 +0100 Subject: [PATCH] Musl compability A couple of header fixes, one occurrence of rawmemchr() and three of strndupa(). --- audisp/audispd.c | 4 +++- auparse/auparse.c | 13 +++++++++++-- auparse/interpret.c | 2 +- lib/libaudit.c | 2 +- lib/netlink.c | 2 +- src/auditctl.c | 1 + src/auditd.c | 9 +++++++-- src/ausearch-lol.c | 13 +++++++++++-- 8 files changed, 36 insertions(+), 10 deletions(-) diff --git a/audisp/audispd.c b/audisp/audispd.c index 9831cf3..0720814 100644 --- a/audisp/audispd.c +++ b/audisp/audispd.c @@ -31,7 +31,9 @@ #include #include #include -#include +#include +#include +#include #include #include diff --git a/auparse/auparse.c b/auparse/auparse.c index 2812028..a5d8c9e 100644 --- a/auparse/auparse.c +++ b/auparse/auparse.c @@ -1090,10 +1090,19 @@ static int extract_timestamp(const char *b, au_event_t *e) int rc = 1; e->host = NULL; + char _tmp[341]; if (*b == 'n') - tmp = strndupa(b, 340); + { + strncpy(_tmp, b, 340); + _tmp[340] = '\0'; + tmp = _tmp; + } else - tmp = strndupa(b, 80); + { + strncpy(_tmp, b, 80); + _tmp[80] = '\0'; + tmp = _tmp; + } ptr = audit_strsplit(tmp); if (ptr) { // Optionally grab the node - may or may not be included diff --git a/auparse/interpret.c b/auparse/interpret.c index 071c4ef..ba38199 100644 --- a/auparse/interpret.c +++ b/auparse/interpret.c @@ -803,7 +803,7 @@ static const char *print_proctitle(const char *val) size_t len = strlen(val) / 2; const char *end = out + len; char *ptr = out; - while ((ptr = rawmemchr(ptr, '\0'))) { + while ((ptr = memchr(ptr, '\0', SIZE_MAX))) { if (ptr >= end) break; *ptr = ' '; diff --git a/lib/libaudit.c b/lib/libaudit.c index f434d4a..bd679a5 100644 --- a/lib/libaudit.c +++ b/lib/libaudit.c @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include #include /* O_NOFOLLOW needs gnu defined */ diff --git a/lib/netlink.c b/lib/netlink.c index 90c79b9..9486560 100644 --- a/lib/netlink.c +++ b/lib/netlink.c @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include "libaudit.h" #include "private.h" diff --git a/src/auditctl.c b/src/auditctl.c index 81000ee..6415264 100644 --- a/src/auditctl.c +++ b/src/auditctl.c @@ -34,6 +34,7 @@ #include #include #include +#include #include /* For basename */ #include /* PATH_MAX */ #include "libaudit.h" diff --git a/src/auditd.c b/src/auditd.c index 3f0162d..535207d 100644 --- a/src/auditd.c +++ b/src/auditd.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -185,7 +186,9 @@ static void child_handler2( int sig ) static int extract_type(const char *str) { - const char *tptr, *ptr2, *ptr = str; + const char *ptr2, *ptr = str; + char *tptr; + if (*str == 'n') { ptr = strchr(str+1, ' '); if (ptr == NULL) @@ -195,7 +198,9 @@ static int extract_type(const char *str) // ptr should be at 't' ptr2 = strchr(ptr, ' '); // get type=xxx in a buffer - tptr = strndupa(ptr, ptr2 - ptr); + tptr = (char *) alloca(ptr2 - ptr + 1); + strncpy(tptr, ptr, ptr2 - ptr); + tptr[ptr2 - ptr] = '\0'; // find = str = strchr(tptr, '='); if (str == NULL) diff --git a/src/ausearch-lol.c b/src/ausearch-lol.c index b1aec06..bb9330d 100644 --- a/src/ausearch-lol.c +++ b/src/ausearch-lol.c @@ -135,10 +135,19 @@ static int extract_timestamp(const char *b, event *e) char *ptr, *tmp, *tnode, *ttype; e->node = NULL; + char _tmp[341]; if (*b == 'n') - tmp = strndupa(b, 340); + { + strncpy(_tmp, b, 340); + _tmp[340] = '\0'; + tmp = _tmp; + } else - tmp = strndupa(b, 80); + { + strncpy(_tmp, b, 80); + _tmp[80] = '\0'; + tmp = _tmp; + } ptr = audit_strsplit(tmp); if (ptr) { // Check to see if this is the node info -- 2.15.0