Skip to content

Commit

Permalink
tools, bpftool: Exit on error in function codegen
Browse files Browse the repository at this point in the history
Currently, the codegen function might fail and return an error. But its
callers continue without checking its return value. Since codegen can
fail only in the unlikely case of the system running out of memory or
the static template being malformed, just exit(-1) directly from codegen
and make it void-returning.

Suggested-by: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200611103341.21532-1-tklauser@distanz.ch
  • Loading branch information
Tobias Klauser authored and Daniel Borkmann committed Jun 11, 2020
1 parent aa2cad0 commit 2c4779e
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions tools/bpf/bpftool/gen.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ static int codegen_datasecs(struct bpf_object *obj, const char *obj_name)
return err;
}

static int codegen(const char *template, ...)
static void codegen(const char *template, ...)
{
const char *src, *end;
int skip_tabs = 0, n;
Expand All @@ -211,7 +211,7 @@ static int codegen(const char *template, ...)
n = strlen(template);
s = malloc(n + 1);
if (!s)
return -ENOMEM;
exit(-1);
src = template;
dst = s;

Expand All @@ -225,7 +225,7 @@ static int codegen(const char *template, ...)
p_err("unrecognized character at pos %td in template '%s'",
src - template - 1, template);
free(s);
return -EINVAL;
exit(-1);
}
}

Expand All @@ -236,7 +236,7 @@ static int codegen(const char *template, ...)
p_err("not enough tabs at pos %td in template '%s'",
src - template - 1, template);
free(s);
return -EINVAL;
exit(-1);
}
}
/* trim trailing whitespace */
Expand All @@ -257,7 +257,8 @@ static int codegen(const char *template, ...)
va_end(args);

free(s);
return n;
if (n)
exit(-1);
}

static int do_skeleton(int argc, char **argv)
Expand Down

0 comments on commit 2c4779e

Please sign in to comment.