lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] nd6.c byte order issues


From: Zach Smith
Subject: [lwip-users] nd6.c byte order issues
Date: Tue, 22 Jan 2013 22:47:59 +0000

It seems to me that the current master version of nd6_input function has some byte ordering problems.

 

For example, in nd6_input()

 

Line 439:

      case ND6_OPTION_TYPE_MTU:

     {

        struct mtu_option * mtu_opt;

        mtu_opt = (struct mtu_option *)buffer;

        if (mtu_opt->mtu >= 1280) {

#if LWIP_ND6_ALLOW_RA_UPDATES

          inp->mtu = mtu_opt->mtu;

#endif /* LWIP_ND6_ALLOW_RA_UPDATES */

        }

        break;

      }

 

As mtu_opt->mtu is a u32_t, it seems to me like it should be this:

 

      case ND6_OPTION_TYPE_MTU:

      {

        struct mtu_option * mtu_opt;

        mtu_opt = (struct mtu_option *)buffer;

        if (ntohl(mtu_opt->mtu) >= 1280) {                  /* zs: added ntohl() */

#if LWIP_ND6_ALLOW_RA_UPDATES

          inp->mtu = ntohl(mtu_opt->mtu);                   /* zs: added ntohl() */

#endif /* LWIP_ND6_ALLOW_RA_UPDATES */

        }

        break;

      }

 

Am I correct that this is a bug?

There are a few other accesses in nd6_input() like this that I think should be done using ntohl() or ntohs().

 

-Zach


reply via email to

[Prev in Thread] Current Thread [Next in Thread]