diff mbox series

[ovs-dev,06/11] packets: Fix possible null pointer argument to memmove.

Message ID 1509211918-14829-7-git-send-email-u9012063@gmail.com
State Changes Requested
Headers show
Series Fix clang static analysis null pointer bugs. | expand

Commit Message

William Tu Oct. 28, 2017, 5:31 p.m. UTC
Clang reports possible null pointer to memmove due to
dp_packet_data might retun null.  Fix it by adding
ovs_assert check.

Signed-off-by: William Tu <u9012063@gmail.com>
---
 lib/packets.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Ben Pfaff Oct. 30, 2017, 7:28 p.m. UTC | #1
On Sat, Oct 28, 2017 at 10:31:53AM -0700, William Tu wrote:
> Clang reports possible null pointer to memmove due to
> dp_packet_data might retun null.  Fix it by adding
> ovs_assert check.
> 
> Signed-off-by: William Tu <u9012063@gmail.com>
> ---
>  lib/packets.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/lib/packets.c b/lib/packets.c
> index 74d87eda89e1..230a62553ff6 100644
> --- a/lib/packets.c
> +++ b/lib/packets.c
> @@ -397,6 +397,7 @@ pop_mpls(struct dp_packet *packet, ovs_be16 ethtype)
>              dp_packet_set_l2_5(packet, NULL);
>          }
>          /* Shift the l2 header forward. */
> +        ovs_assert(dp_packet_data(packet));
>          memmove((char*)dp_packet_data(packet) + MPLS_HLEN, dp_packet_data(packet), len);
>          dp_packet_resize_l2_5(packet, -MPLS_HLEN);
>      }

Clang is just wrong here.  The packet has to be nonnull because it is an
MPLS packet.
diff mbox series

Patch

diff --git a/lib/packets.c b/lib/packets.c
index 74d87eda89e1..230a62553ff6 100644
--- a/lib/packets.c
+++ b/lib/packets.c
@@ -397,6 +397,7 @@  pop_mpls(struct dp_packet *packet, ovs_be16 ethtype)
             dp_packet_set_l2_5(packet, NULL);
         }
         /* Shift the l2 header forward. */
+        ovs_assert(dp_packet_data(packet));
         memmove((char*)dp_packet_data(packet) + MPLS_HLEN, dp_packet_data(packet), len);
         dp_packet_resize_l2_5(packet, -MPLS_HLEN);
     }