Reading a character 1 into an empty string (ie s = ""; ... = s[1]) triggers an address sanitizer warning on reading of an unitilized value. Reorder the code to avoid this. Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx> --- src/event-parse.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/event-parse.c b/src/event-parse.c index 1217491..9915cb4 100644 --- a/src/event-parse.c +++ b/src/event-parse.c @@ -2039,7 +2039,7 @@ out_free: static int get_op_prio(char *op) { - if (!op[1]) { + if (strlen(op) == 1) { switch (op[0]) { case '~': case '!': @@ -2117,10 +2117,6 @@ process_op(struct tep_event *event, struct tep_print_arg *arg, char **tok) if (arg->type == TEP_PRINT_OP && !arg->op.left) { /* handle single op */ - if (token[1]) { - do_warning_event(event, "bad op token %s", token); - goto out_free; - } switch (token[0]) { case '~': case '!': @@ -2132,6 +2128,10 @@ process_op(struct tep_event *event, struct tep_print_arg *arg, char **tok) goto out_free; } + if (token[1]) { + do_warning_event(event, "bad op token %s", token); + goto out_free; + } /* make an empty left */ left = alloc_arg(); -- 2.32.0.272.g935e593368-goog