diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-12-20 02:15:46 +0300 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-12-20 02:15:46 +0300 |
commit | 2375d75f3267e6e4370f221fea485eac8e73d402 (patch) | |
tree | 05a36e8cad639b9f33bc756a7ea1b738248d2a62 | |
parent | 8cd1a288fa15c8db5701ad94592c5a6a4562b1a9 (diff) |
ifupdown: do not print and/or execute empty commands ("").
-rw-r--r-- | networking/ifupdown.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/networking/ifupdown.c b/networking/ifupdown.c index 90c05444b..b53d2330d 100644 --- a/networking/ifupdown.c +++ b/networking/ifupdown.c @@ -291,9 +291,11 @@ static int execute(const char *command, struct interface_defn_t *ifd, execfn *ex out = parse(command, ifd); if (!out) { + /* parse error? */ return 0; } - ret = (*exec)(out); + /* out == "": parsed ok but not all needed variables known, skip */ + ret = out[0] ? (*exec)(out) : 1; free(out); if (ret != 1) { @@ -903,15 +905,13 @@ static int doit(char *str) if (option_mask32 & (OPT_no_act|OPT_verbose)) { puts(str); } - /* FIXME: is it true that we can reach this place with str = ""? */ - /* how? in execute() parse() may return "", then we do (*exec)(""); */ - /* Please add a comment... */ if (!(option_mask32 & OPT_no_act)) { pid_t child; int status; fflush(NULL); - switch (child = fork()) { + child = fork(); + switch (child) { case -1: /* failure */ return 0; case 0: /* child */ @@ -939,10 +939,8 @@ static int execute_all(struct interface_defn_t *ifd, const char *opt) } buf = xasprintf("run-parts /etc/network/if-%s.d", opt); - if (doit(buf) != 1) { - return 0; - } - return 1; + /* heh, we don't bother free'ing it */ + return doit(buf); } static int check(char *str) |