From 562587e91b5ff5534a4b22a1adab7329c6c62670 Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jmvalin@jmvalin.ca>
Date: Tue, 6 Feb 2024 15:38:50 -0500
Subject: [PATCH] Avoid size-zero OPUS_COPY() with NULL pointer

Fails ubsan because memcpy declares args as non-null
---
 dnn/nnet.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dnn/nnet.c b/dnn/nnet.c
index 184ec4e26..5e87f207e 100644
--- a/dnn/nnet.c
+++ b/dnn/nnet.c
@@ -122,11 +122,11 @@ void compute_generic_conv1d(const LinearLayer *layer, float *output, float *mem,
    float tmp[MAX_CONV_INPUTS_ALL];
    celt_assert(input != output);
    celt_assert(layer->nb_inputs <= MAX_CONV_INPUTS_ALL);
-   OPUS_COPY(tmp, mem, layer->nb_inputs-input_size);
+   if (layer->nb_inputs!=input_size) OPUS_COPY(tmp, mem, layer->nb_inputs-input_size);
    OPUS_COPY(&tmp[layer->nb_inputs-input_size], input, input_size);
    compute_linear(layer, output, tmp, arch);
    compute_activation(output, output, layer->nb_outputs, activation, arch);
-   OPUS_COPY(mem, &tmp[input_size], layer->nb_inputs-input_size);
+   if (layer->nb_inputs!=input_size) OPUS_COPY(mem, &tmp[input_size], layer->nb_inputs-input_size);
 }
 
 void compute_generic_conv1d_dilation(const LinearLayer *layer, float *output, float *mem, const float *input, int input_size, int dilation, int activation, int arch)
-- 
GitLab