From 4d4ca28acaa44069893d06aea64e304809527b16 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Wed, 4 Jan 2017 01:14:07 -0600 Subject: An option can't exclude itself, so "abc[-ab][!abc]" with "command -a -b" shouldn't segfault falling off the end of the list trying to report a nonexistent error condition. --- lib/args.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/args.c b/lib/args.c index e6378beb..00932de9 100644 --- a/lib/args.c +++ b/lib/args.c @@ -159,11 +159,11 @@ static int gotflag(struct getoptflagstate *gof, struct opts *opt) struct opts *bad; unsigned i = 1; - for (bad=gof->opts, i=1; ;bad = bad->next, i<<=1) { + for (bad=gof->opts, i=1; bad ;bad = bad->next, i<<=1) { if (opt == bad || !(i & toys.optflags)) continue; if (toys.optflags & bad->dex[2]) break; } - help_exit("No '%c' with '%c'", opt->c, bad->c); + if (bad) help_exit("No '%c' with '%c'", opt->c, bad->c); } // Does this option take an argument? -- cgit v1.2.3