Commit 2c4779ef authored by Tobias Klauser's avatar Tobias Klauser Committed by Daniel Borkmann

tools, bpftool: Exit on error in function codegen

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: default avatarAndrii Nakryiko <andrii.nakryiko@gmail.com>
Signed-off-by: default avatarTobias Klauser <tklauser@distanz.ch>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200611103341.21532-1-tklauser@distanz.ch
parent aa2cad06
...@@ -200,7 +200,7 @@ static int codegen_datasecs(struct bpf_object *obj, const char *obj_name) ...@@ -200,7 +200,7 @@ static int codegen_datasecs(struct bpf_object *obj, const char *obj_name)
return err; return err;
} }
static int codegen(const char *template, ...) static void codegen(const char *template, ...)
{ {
const char *src, *end; const char *src, *end;
int skip_tabs = 0, n; int skip_tabs = 0, n;
...@@ -211,7 +211,7 @@ static int codegen(const char *template, ...) ...@@ -211,7 +211,7 @@ static int codegen(const char *template, ...)
n = strlen(template); n = strlen(template);
s = malloc(n + 1); s = malloc(n + 1);
if (!s) if (!s)
return -ENOMEM; exit(-1);
src = template; src = template;
dst = s; dst = s;
...@@ -225,7 +225,7 @@ static int codegen(const char *template, ...) ...@@ -225,7 +225,7 @@ static int codegen(const char *template, ...)
p_err("unrecognized character at pos %td in template '%s'", p_err("unrecognized character at pos %td in template '%s'",
src - template - 1, template); src - template - 1, template);
free(s); free(s);
return -EINVAL; exit(-1);
} }
} }
...@@ -236,7 +236,7 @@ static int codegen(const char *template, ...) ...@@ -236,7 +236,7 @@ static int codegen(const char *template, ...)
p_err("not enough tabs at pos %td in template '%s'", p_err("not enough tabs at pos %td in template '%s'",
src - template - 1, template); src - template - 1, template);
free(s); free(s);
return -EINVAL; exit(-1);
} }
} }
/* trim trailing whitespace */ /* trim trailing whitespace */
...@@ -257,7 +257,8 @@ static int codegen(const char *template, ...) ...@@ -257,7 +257,8 @@ static int codegen(const char *template, ...)
va_end(args); va_end(args);
free(s); free(s);
return n; if (n)
exit(-1);
} }
static int do_skeleton(int argc, char **argv) static int do_skeleton(int argc, char **argv)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment