[ovs-dev] [PATCH] byte-order: Fix undefined behavior of BYTES_TO_BE32.

Ben Pfaff blp at ovn.org
Tue Jun 13 15:17:26 UTC 2017


On Tue, Jun 13, 2017 at 09:09:44AM -0400, Lance Richardson wrote:
> > From: "Ben Pfaff" <blp at ovn.org>
> > To: dev at openvswitch.org
> > Cc: "Ben Pfaff" <blp at ovn.org>, "Lance Richardson" <lrichard at redhat.com>
> > Sent: Tuesday, 13 June, 2017 12:51:14 AM
> > Subject: [PATCH] byte-order: Fix undefined behavior of BYTES_TO_BE32.
> > 
> > A left shift that would produce a result that is not representable
> > by the type of the expression's result has "undefined behavior"
> > according to the C language standard. Avoid this by casting values
> > that could set the upper bit to unsigned types.
> > 
> > Also document and convert a macro to a function.
> > 
> > While we're at it, delete the unused macro BE16S_TO_BE32.
> > 
> > Found via gcc's undefined behavior sanitizer.
> > 
> > Reported-by: Lance Richardson <lrichard at redhat.com>
> > Signed-off-by: Ben Pfaff <blp at ovn.org>
> > ---
> >  lib/byte-order.h | 21 +++++++++++++--------
> >  lib/flow.c       |  2 +-
> >  2 files changed, 14 insertions(+), 9 deletions(-)
> > 
> 
> Looks good.
> 
> Acked-by: Lance Richardson <lrichard at redhat.com>

Thanks.  I applied this to master.

Do you think that it is worthwhile to apply this to older branches?


More information about the dev mailing list