netfilter: nf_nat_h323: fix logical-not-parentheses warning
authorNick Desaulniers <ndesaulniers@google.com>
Fri, 11 Aug 2017 18:16:07 +0000 (11:16 -0700)
committerMichael Benedict <michaelbt@live.com>
Sat, 31 Aug 2019 16:28:13 +0000 (02:28 +1000)
commit eee6ebbac18a189ef33d25ea9b8bcae176515e49 upstream.

Clang produces the following warning:

net/ipv4/netfilter/nf_nat_h323.c:553:6: error:
logical not is only applied to the left hand side of this comparison
  [-Werror,-Wlogical-not-parentheses]
if (!set_h225_addr(skb, protoff, data, dataoff, taddr,
    ^
add parentheses after the '!' to evaluate the comparison first
add parentheses around left hand side expression to silence this warning

There's not necessarily a bug here, but it's cleaner to return early,
ex:

if (x)
  return
...

rather than:

if (x == 0)
  ...
else
  return

Also added a return code check that seemed to be missing in one
instance.

Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ipv4/netfilter/nf_nat_h323.c

index 574f7ebba0b6238d8e61ffd08dead06a07a619c5..ac8342dcb55eb51680d1f4559d57c2e99509b505 100644 (file)
@@ -252,16 +252,16 @@ static int nat_rtp_rtcp(struct sk_buff *skb, struct nf_conn *ct,
        if (set_h245_addr(skb, protoff, data, dataoff, taddr,
                          &ct->tuplehash[!dir].tuple.dst.u3,
                          htons((port & htons(1)) ? nated_port + 1 :
-                                                   nated_port)) == 0) {
-               /* Save ports */
-               info->rtp_port[i][dir] = rtp_port;
-               info->rtp_port[i][!dir] = htons(nated_port);
-       } else {
+                                                   nated_port))) {
                nf_ct_unexpect_related(rtp_exp);
                nf_ct_unexpect_related(rtcp_exp);
                return -1;
        }
 
+       /* Save ports */
+       info->rtp_port[i][dir] = rtp_port;
+       info->rtp_port[i][!dir] = htons(nated_port);
+
        /* Success */
        pr_debug("nf_nat_h323: expect RTP %pI4:%hu->%pI4:%hu\n",
                 &rtp_exp->tuple.src.u3.ip,
@@ -370,15 +370,15 @@ static int nat_h245(struct sk_buff *skb, struct nf_conn *ct,
        /* Modify signal */
        if (set_h225_addr(skb, protoff, data, dataoff, taddr,
                          &ct->tuplehash[!dir].tuple.dst.u3,
-                         htons(nated_port)) == 0) {
-               /* Save ports */
-               info->sig_port[dir] = port;
-               info->sig_port[!dir] = htons(nated_port);
-       } else {
+                         htons(nated_port))) {
                nf_ct_unexpect_related(exp);
                return -1;
        }
 
+       /* Save ports */
+       info->sig_port[dir] = port;
+       info->sig_port[!dir] = htons(nated_port);
+
        pr_debug("nf_nat_q931: expect H.245 %pI4:%hu->%pI4:%hu\n",
                 &exp->tuple.src.u3.ip,
                 ntohs(exp->tuple.src.u.tcp.port),
@@ -462,24 +462,27 @@ static int nat_q931(struct sk_buff *skb, struct nf_conn *ct,
        /* Modify signal */
        if (set_h225_addr(skb, protoff, data, 0, &taddr[idx],
                          &ct->tuplehash[!dir].tuple.dst.u3,
-                         htons(nated_port)) == 0) {
-               /* Save ports */
-               info->sig_port[dir] = port;
-               info->sig_port[!dir] = htons(nated_port);
-
-               /* Fix for Gnomemeeting */
-               if (idx > 0 &&
-                   get_h225_addr(ct, *data, &taddr[0], &addr, &port) &&
-                   (ntohl(addr.ip) & 0xff000000) == 0x7f000000) {
-                       set_h225_addr(skb, protoff, data, 0, &taddr[0],
-                                     &ct->tuplehash[!dir].tuple.dst.u3,
-                                     info->sig_port[!dir]);
-               }
-       } else {
+                         htons(nated_port))) {
                nf_ct_unexpect_related(exp);
                return -1;
        }
 
+       /* Save ports */
+       info->sig_port[dir] = port;
+       info->sig_port[!dir] = htons(nated_port);
+
+       /* Fix for Gnomemeeting */
+       if (idx > 0 &&
+           get_h225_addr(ct, *data, &taddr[0], &addr, &port) &&
+           (ntohl(addr.ip) & 0xff000000) == 0x7f000000) {
+               if (set_h225_addr(skb, protoff, data, 0, &taddr[0],
+                                 &ct->tuplehash[!dir].tuple.dst.u3,
+                                 info->sig_port[!dir])) {
+                       nf_ct_unexpect_related(exp);
+                       return -1;
+               }
+       }
+
        /* Success */
        pr_debug("nf_nat_ras: expect Q.931 %pI4:%hu->%pI4:%hu\n",
                 &exp->tuple.src.u3.ip,
@@ -550,9 +553,9 @@ static int nat_callforwarding(struct sk_buff *skb, struct nf_conn *ct,
        }
 
        /* Modify signal */
-       if (!set_h225_addr(skb, protoff, data, dataoff, taddr,
-                          &ct->tuplehash[!dir].tuple.dst.u3,
-                          htons(nated_port)) == 0) {
+       if (set_h225_addr(skb, protoff, data, dataoff, taddr,
+                         &ct->tuplehash[!dir].tuple.dst.u3,
+                         htons(nated_port))) {
                nf_ct_unexpect_related(exp);
                return -1;
        }