diff mbox series

[ovs-dev] Fix ubsan warning on 0-len memcpy from NULL pointer

Message ID 20220602035456.3772669-1-ihrachys@redhat.com
State Accepted
Headers show
Series [ovs-dev] Fix ubsan warning on 0-len memcpy from NULL pointer | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes success github build: passed

Commit Message

Ihar Hrachyshka June 2, 2022, 3:54 a.m. UTC
Fixes fa8c591fa2a7("Support LSP:options:requested-chassis as a list")

Signed-off-by: Ihar Hrachyshka <ihrachys@redhat.com>
---
 controller/binding.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Comments

Dumitru Ceara June 2, 2022, 3:18 p.m. UTC | #1
On 6/2/22 05:54, Ihar Hrachyshka wrote:
> Fixes fa8c591fa2a7("Support LSP:options:requested-chassis as a list")
> 
> Signed-off-by: Ihar Hrachyshka <ihrachys@redhat.com>
> ---

Looks good to me, thanks!

Acked-by: Dumitru Ceara <dceara@redhat.com>
Mark Michelson June 2, 2022, 4:55 p.m. UTC | #2
Thanks for the quick fix Ihar. I pushed this to main and branch-22.06

On 6/1/22 23:54, Ihar Hrachyshka wrote:
> Fixes fa8c591fa2a7("Support LSP:options:requested-chassis as a list")
> 
> Signed-off-by: Ihar Hrachyshka <ihrachys@redhat.com>
> ---
>   controller/binding.c | 12 ++++++++----
>   1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/controller/binding.c b/controller/binding.c
> index 8a8570f13..2279570f9 100644
> --- a/controller/binding.c
> +++ b/controller/binding.c
> @@ -944,8 +944,10 @@ append_additional_encap(const struct sbrec_port_binding *pb,
>   {
>       struct sbrec_encap **additional_encap = xmalloc(
>           (pb->n_additional_encap + 1) * (sizeof *additional_encap));
> -    memcpy(additional_encap, pb->additional_encap,
> -           pb->n_additional_encap * (sizeof *additional_encap));
> +    if (pb->n_additional_encap) {
> +        memcpy(additional_encap, pb->additional_encap,
> +               pb->n_additional_encap * (sizeof *additional_encap));
> +    }
>       additional_encap[pb->n_additional_encap] = (struct sbrec_encap *) encap;
>       sbrec_port_binding_set_additional_encap(
>           pb, additional_encap, pb->n_additional_encap + 1);
> @@ -1012,8 +1014,10 @@ append_additional_chassis(const struct sbrec_port_binding *pb,
>   {
>       struct sbrec_chassis **additional_chassis = xmalloc(
>           (pb->n_additional_chassis + 1) * (sizeof *additional_chassis));
> -    memcpy(additional_chassis, pb->additional_chassis,
> -           pb->n_additional_chassis * (sizeof *additional_chassis));
> +    if (pb->n_additional_chassis) {
> +        memcpy(additional_chassis, pb->additional_chassis,
> +               pb->n_additional_chassis * (sizeof *additional_chassis));
> +    }
>       additional_chassis[pb->n_additional_chassis] = (
>           (struct sbrec_chassis *) chassis_rec);
>       sbrec_port_binding_set_additional_chassis(
>
diff mbox series

Patch

diff --git a/controller/binding.c b/controller/binding.c
index 8a8570f13..2279570f9 100644
--- a/controller/binding.c
+++ b/controller/binding.c
@@ -944,8 +944,10 @@  append_additional_encap(const struct sbrec_port_binding *pb,
 {
     struct sbrec_encap **additional_encap = xmalloc(
         (pb->n_additional_encap + 1) * (sizeof *additional_encap));
-    memcpy(additional_encap, pb->additional_encap,
-           pb->n_additional_encap * (sizeof *additional_encap));
+    if (pb->n_additional_encap) {
+        memcpy(additional_encap, pb->additional_encap,
+               pb->n_additional_encap * (sizeof *additional_encap));
+    }
     additional_encap[pb->n_additional_encap] = (struct sbrec_encap *) encap;
     sbrec_port_binding_set_additional_encap(
         pb, additional_encap, pb->n_additional_encap + 1);
@@ -1012,8 +1014,10 @@  append_additional_chassis(const struct sbrec_port_binding *pb,
 {
     struct sbrec_chassis **additional_chassis = xmalloc(
         (pb->n_additional_chassis + 1) * (sizeof *additional_chassis));
-    memcpy(additional_chassis, pb->additional_chassis,
-           pb->n_additional_chassis * (sizeof *additional_chassis));
+    if (pb->n_additional_chassis) {
+        memcpy(additional_chassis, pb->additional_chassis,
+               pb->n_additional_chassis * (sizeof *additional_chassis));
+    }
     additional_chassis[pb->n_additional_chassis] = (
         (struct sbrec_chassis *) chassis_rec);
     sbrec_port_binding_set_additional_chassis(