Assuming 'opt' might be NULL, move the call to RTA_PAYLOAD to after the
check since it dereferences its parameter.

Signed-off-by: Phil Sutter <p...@nwl.cc>
---
 tc/q_netem.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tc/q_netem.c b/tc/q_netem.c
index 0975ae111de97..7e3330512041a 100644
--- a/tc/q_netem.c
+++ b/tc/q_netem.c
@@ -538,7 +538,7 @@ static int netem_print_opt(struct qdisc_util *qu, FILE *f, 
struct rtattr *opt)
        int *ecn = NULL;
        struct tc_netem_qopt qopt;
        const struct tc_netem_rate *rate = NULL;
-       int len = RTA_PAYLOAD(opt) - sizeof(qopt);
+       int len;
        __u64 rate64 = 0;
 
        SPRINT_BUF(b1);
@@ -546,6 +546,8 @@ static int netem_print_opt(struct qdisc_util *qu, FILE *f, 
struct rtattr *opt)
        if (opt == NULL)
                return 0;
 
+       len = RTA_PAYLOAD(opt) - sizeof(qopt);
+
        if (len < 0) {
                fprintf(stderr, "options size error\n");
                return -1;
-- 
2.13.1

Reply via email to