> On May 26, 2017, at 8:59 PM, Ben Pfaff <[email protected]> wrote:
> 
> Code generated by this program includes constructs like this:
> 
>    switch (((uint64_t) vendor << 32) | (type << 16) | code)
> 
> with variables uint32_t vendor, uint16_t type, uint16_t code.  By C rules,
> "type << 16" has type "int", which means that it will be sign-extended to
> 64 bits when ORed with uint64_t.  Thus, if 'type' has bit 15 set, then
> the overall result will have all of its top 32 bits set, which is not
> the desired result.
> 
> This commit fixes the problem.
> 
> No actual error types used in OVS or OpenFlow have bit 15 set, so this
> does not fix a user-visible problem.
> 
> Found by Coverity.
> 
> Reported-at: 
> https://scan3.coverity.com/reports.htm#v16889/p10449/fileInstanceId=14762955&defectInstanceId=4304798&mergedDefectId=180406
> Signed-off-by: Ben Pfaff <[email protected]>

Acked-by: Justin Pettit <[email protected]>

--Justin


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to