From 315063eb9c24defe0d5a662196abd227c2b41bea Mon Sep 17 00:00:00 2001 From: Jarcode Date: Thu, 14 Mar 2019 22:07:09 -0700 Subject: [PATCH] sanitize --pipe input --- glava.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/glava.c b/glava.c index 4a2e70d..1c77e82 100644 --- a/glava.c +++ b/glava.c @@ -310,6 +310,19 @@ int main(int argc, char** argv) { optarg[sep] = '\0'; } parsed_name = optarg; + for (char* c = parsed_name; *c != '\0'; ++c) { + switch (*c) { + case 'a' ... 'z': + case 'A' ... 'Z': + case '0' ... '9': + case '_': continue; + default: + fprintf(stderr, "Error: invalid pipe binding name: \"%s\" ('%c')\n" + "Valid names may only contain [a..z], [A..Z], [0..9] " + "and '_' characters.\n", parsed_name, *c); + exit(EXIT_FAILURE); + } + } for (size_t t = 0; t < binds_sz; ++t) { if (!strcmp(binds[t].name, parsed_name)) { fprintf(stderr, "Error: attempted to re-bind pipe argument: \"%s\"\n", parsed_name);