From: Pablo Neira Ayuso Date: Tue, 29 Jun 2021 12:23:10 +0000 (+0200) Subject: cmd: incorrect table location in error reporting X-Git-Tag: v1.0.0~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ea0e0e08cd69dff9107454ef217bfbc0a18f15f6;p=thirdparty%2Fnftables.git cmd: incorrect table location in error reporting If the command refers to an inexisting table, then use the table location. ruleset.nft:3:12-12: Error: No such file or directory; did you mean table ‘filter’ in family ip? add rule x x ip saddr @x log prefix "Anti SSH-Bruteforce: " drop ^ before this patch location is not correct: ruleset.nft:3:12-12: Error: No such file or directory; did you mean table ‘filter’ in family ip? add rule x x ip saddr @x log prefix "Anti SSH-Bruteforce: " drop ^ Fixes: 0276c2fee939 ("cmd: check for table mismatch first in error reporting") Signed-off-by: Pablo Neira Ayuso --- diff --git a/src/cmd.c b/src/cmd.c index a69767c5..8d4bf8bc 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -28,12 +28,12 @@ static int nft_cmd_enoent_table(struct netlink_ctx *ctx, const struct cmd *cmd, } static int table_fuzzy_check(struct netlink_ctx *ctx, const struct cmd *cmd, - const struct table *table, - const struct location *loc) + const struct table *table) { if (strcmp(cmd->handle.table.name, table->handle.table.name) || cmd->handle.family != table->handle.family) { - netlink_io_error(ctx, loc, "%s; did you mean table ‘%s’ in family %s?", + netlink_io_error(ctx, &cmd->handle.table.location, + "%s; did you mean table ‘%s’ in family %s?", strerror(ENOENT), table->handle.table.name, family2str(table->handle.family)); return 1; @@ -56,7 +56,7 @@ static int nft_cmd_enoent_chain(struct netlink_ctx *ctx, const struct cmd *cmd, if (!table) return 0; - if (table_fuzzy_check(ctx, cmd, table, loc)) + if (table_fuzzy_check(ctx, cmd, table)) return 1; if (!chain) @@ -85,7 +85,7 @@ static int nft_cmd_enoent_rule(struct netlink_ctx *ctx, const struct cmd *cmd, if (!table) return 0; - if (table_fuzzy_check(ctx, cmd, table, loc)) + if (table_fuzzy_check(ctx, cmd, table)) return 1; if (!chain) @@ -117,7 +117,7 @@ static int nft_cmd_enoent_set(struct netlink_ctx *ctx, const struct cmd *cmd, if (!table) return 0; - if (table_fuzzy_check(ctx, cmd, table, loc)) + if (table_fuzzy_check(ctx, cmd, table)) return 1; if (!set) @@ -146,7 +146,7 @@ static int nft_cmd_enoent_obj(struct netlink_ctx *ctx, const struct cmd *cmd, if (!table) return 0; - if (table_fuzzy_check(ctx, cmd, table, loc)) + if (table_fuzzy_check(ctx, cmd, table)) return 1; if (!obj) @@ -175,7 +175,7 @@ static int nft_cmd_enoent_flowtable(struct netlink_ctx *ctx, if (!table) return 0; - if (table_fuzzy_check(ctx, cmd, table, loc)) + if (table_fuzzy_check(ctx, cmd, table)) return 1; if (!ft)