|
|
- From c39a071e7c021f6ff3554aca2758e97b47a9777c Mon Sep 17 00:00:00 2001
- From: Steve Grubb <sgrubb@redhat.com>
- Date: Tue, 26 Feb 2019 18:33:33 -0500
- Subject: [PATCH] Add substitue functions for strndupa & rawmemchr
-
- (cherry picked from commit d579a08bb1cde71f939c13ac6b2261052ae9f77e)
- Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
- ---
- auparse/auparse.c | 12 +++++++++++-
- auparse/interpret.c | 9 ++++++++-
- configure.ac | 14 +++++++++++++-
- src/ausearch-lol.c | 12 +++++++++++-
- 4 files changed, 43 insertions(+), 4 deletions(-)
-
- diff --git a/auparse/auparse.c b/auparse/auparse.c
- index 650db02..2e1c737 100644
- --- a/auparse/auparse.c
- +++ b/auparse/auparse.c
- @@ -1,5 +1,5 @@
- /* auparse.c --
- - * Copyright 2006-08,2012-17 Red Hat Inc., Durham, North Carolina.
- + * Copyright 2006-08,2012-19 Red Hat Inc., Durham, North Carolina.
- * All Rights Reserved.
- *
- * This library is free software; you can redistribute it and/or
- @@ -1118,6 +1118,16 @@ static int str2event(char *s, au_event_t *e)
- return 0;
- }
-
- +#ifndef HAVE_STRNDUPA
- +static inline char *strndupa(const char *old, size_t n)
- +{
- + size_t len = strnlen(old, n);
- + char *tmp = alloca(len + 1);
- + tmp[len] = 0;
- + return memcpy(tmp, old, len);
- +}
- +#endif
- +
- /* Returns 0 on success and 1 on error */
- static int extract_timestamp(const char *b, au_event_t *e)
- {
- diff --git a/auparse/interpret.c b/auparse/interpret.c
- index 51c4a5e..67b7b77 100644
- --- a/auparse/interpret.c
- +++ b/auparse/interpret.c
- @@ -853,6 +853,13 @@ err_out:
- return print_escaped(id->val);
- }
-
- +// rawmemchr is faster. Let's use it if we have it.
- +#ifdef HAVE_RAWMEMCHR
- +#define STRCHR rawmemchr
- +#else
- +#define STRCHR strchr
- +#endif
- +
- static const char *print_proctitle(const char *val)
- {
- char *out = (char *)print_escaped(val);
- @@ -863,7 +870,7 @@ static const char *print_proctitle(const char *val)
- // Proctitle has arguments separated by NUL bytes
- // We need to write over the NUL bytes with a space
- // so that we can see the arguments
- - while ((ptr = rawmemchr(ptr, '\0'))) {
- + while ((ptr = STRCHR(ptr, '\0'))) {
- if (ptr >= end)
- break;
- *ptr = ' ';
- diff --git a/configure.ac b/configure.ac
- index 6e345f1..6f3007e 100644
- --- a/configure.ac
- +++ b/configure.ac
- @@ -1,7 +1,7 @@
- dnl
- define([AC_INIT_NOTICE],
- [### Generated automatically using autoconf version] AC_ACVERSION [
- -### Copyright 2005-18 Steve Grubb <sgrubb@redhat.com>
- +### Copyright 2005-19 Steve Grubb <sgrubb@redhat.com>
- ###
- ### Permission is hereby granted, free of charge, to any person obtaining a
- ### copy of this software and associated documentation files (the "Software"),
- @@ -72,6 +72,18 @@ dnl; posix_fallocate is used in audisp-remote
- AC_CHECK_FUNCS([posix_fallocate])
- dnl; signalfd is needed for libev
- AC_CHECK_FUNC([signalfd], [], [ AC_MSG_ERROR([The signalfd system call is necessary for auditd]) ])
- +dnl; check if rawmemchr is available
- +AC_CHECK_FUNCS([rawmemchr])
- +dnl; check if strndupa is available
- +AC_LINK_IFELSE(
- + [AC_LANG_SOURCE(
- + [[
- + #define _GNU_SOURCE
- + #include <string.h>
- + int main() { (void) strndupa("test", 10); return 0; }]])],
- + [AC_DEFINE(HAVE_STRNDUPA, 1, [Let us know if we have it or not])],
- + []
- +)
-
- ALLWARNS=""
- ALLDEBUG="-g"
- diff --git a/src/ausearch-lol.c b/src/ausearch-lol.c
- index 5d17a72..758c33e 100644
- --- a/src/ausearch-lol.c
- +++ b/src/ausearch-lol.c
- @@ -1,6 +1,6 @@
- /*
- * ausearch-lol.c - linked list of linked lists library
- -* Copyright (c) 2008,2010,2014,2016 Red Hat Inc., Durham, North Carolina.
- +* Copyright (c) 2008,2010,2014,2016,2019 Red Hat Inc., Durham, North Carolina.
- * All Rights Reserved.
- *
- * This software may be freely redistributed and/or modified under the
- @@ -152,6 +152,16 @@ static int compare_event_time(event *e1, event *e2)
- return 0;
- }
-
- +#ifndef HAVE_STRNDUPA
- +static inline char *strndupa(const char *old, size_t n)
- +{
- + size_t len = strnlen(old, n);
- + char *tmp = alloca(len + 1);
- + tmp[len] = 0;
- + return memcpy(tmp, old, len);
- +}
- +#endif
- +
- /*
- * This function will look at the line and pick out pieces of it.
- */
- --
- 2.21.0
-
|