From: Phil Sutter Date: Thu, 2 Aug 2018 15:05:25 +0000 (+0200) Subject: arptables: Fix for trailing spaces in output X-Git-Tag: v1.8.1~100 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=83bc1890aa939108fd06b80f35139fedd5856cbc;p=thirdparty%2Fiptables.git arptables: Fix for trailing spaces in output This changes mangle target to print whitespace before each option, not afterwards. This fixes any cases of trailing or double whitespace in arptables output. While being at it, introduce ipaddr_to() helper in libarpt_mangle.c to simplify arpmangle_print() a bit. Signed-off-by: Phil Sutter Signed-off-by: Florian Westphal --- diff --git a/extensions/libarpt_mangle.c b/extensions/libarpt_mangle.c index 0d1f140a..547f5b61 100644 --- a/extensions/libarpt_mangle.c +++ b/extensions/libarpt_mangle.c @@ -139,47 +139,39 @@ static void print_mac(const unsigned char *mac, int l) (j==l-1) ? "" : ":"); } +static const char *ipaddr_to(const struct in_addr *addrp, int numeric) +{ + if (numeric) + return xtables_ipaddr_to_numeric(addrp); + else + return xtables_ipaddr_to_anyname(addrp); +} + static void arpmangle_print(const void *ip, const struct xt_entry_target *target, int numeric) { struct arpt_mangle *m = (struct arpt_mangle *)(target->data); - char buf[100]; if (m->flags & ARPT_MANGLE_SIP) { - if (numeric) - sprintf(buf, "%s", - xtables_ipaddr_to_numeric(&(m->u_s.src_ip))); - else - sprintf(buf, "%s", - xtables_ipaddr_to_anyname(&(m->u_s.src_ip))); - printf("--mangle-ip-s %s ", buf); + printf(" --mangle-ip-s %s", + ipaddr_to(&(m->u_s.src_ip), numeric)); } if (m->flags & ARPT_MANGLE_SDEV) { - printf("--mangle-mac-s "); + printf(" --mangle-mac-s "); print_mac((unsigned char *)m->src_devaddr, 6); - printf(" "); } if (m->flags & ARPT_MANGLE_TIP) { - if (numeric) - sprintf(buf, "%s", - xtables_ipaddr_to_numeric(&(m->u_t.tgt_ip))); - else - sprintf(buf, "%s", - xtables_ipaddr_to_anyname(&(m->u_t.tgt_ip))); - printf("--mangle-ip-d %s ", buf); + printf(" --mangle-ip-d %s", + ipaddr_to(&(m->u_t.tgt_ip), numeric)); } if (m->flags & ARPT_MANGLE_TDEV) { - printf("--mangle-mac-d "); + printf(" --mangle-mac-d "); print_mac((unsigned char *)m->tgt_devaddr, 6); - printf(" "); } if (m->target != NF_ACCEPT) { - printf("--mangle-target "); - if (m->target == NF_DROP) - printf("DROP "); - else - printf("CONTINUE "); + printf(" --mangle-target %s", + m->target == NF_DROP ? "DROP" : "CONTINUE"); } }