From c218a04655b2426b46d303d711863f9038f15917 Mon Sep 17 00:00:00 2001 From: Steve Grubb Date: Sat, 15 Dec 2018 14:58:31 -0500 Subject: [PATCH 210/217] More fuzzer induced bug fixes --- auparse/normalize.c | 10 +++++----- src/ausearch-parse.c | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/auparse/normalize.c b/auparse/normalize.c index 45d8821..5f15712 100644 --- a/auparse/normalize.c +++ b/auparse/normalize.c @@ -44,11 +44,11 @@ * Both record and field are 0 based. Simple records are always 0. Compound * records start at 0 and go up. */ -#define UNSET 0xFFFF -#define get_record(y) ((y >> 16) & 0x0000FFFF) -#define set_record(y, x) (((x & 0x0000FFFF) << 16) | (y & 0x0000FFFF)) -#define get_field(y) (y & 0x0000FFFF) -#define set_field(y, x) ((y & 0xFFFF0000) | (x & 0x0000FFFF)) +#define UNSET 0xFFFFU +#define get_record(y) ((y >> 16) & 0x0000FFFFU) +#define set_record(y, x) (((x & 0x0000FFFFU) << 16) | (y & 0x0000FFFFU)) +#define get_field(y) (y & 0x0000FFFFU) +#define set_field(y, x) ((y & 0xFFFF0000U) | (x & 0x0000FFFFU)) #define is_unset(y) (get_record(y) == UNSET) #define D au->norm_data diff --git a/src/ausearch-parse.c b/src/ausearch-parse.c index 311f699..cc2a06c 100644 --- a/src/ausearch-parse.c +++ b/src/ausearch-parse.c @@ -40,7 +40,7 @@ #include "ausearch-parse.h" #include "auparse-idata.h" -#define NAME_OFFSET 36 +#define NAME_OFFSET 28 static const char key_sep[2] = { AUDIT_KEY_SEPARATOR, 0 }; static int parse_task_info(lnode *n, search_items *s); @@ -714,6 +714,8 @@ static int common_path_parser(search_items *s, char *path) sn.str = unescape(path); *term = ' '; } + if (sn.str == NULL) + return 7; // Attempt to rebuild path if relative if ((sn.str[0] == '.') && ((sn.str[1] == '.') || (sn.str[1] == '/')) && s->cwd) { -- 1.8.3.1