ASoC: Intel: Common: Fix NULL dereference in tx_wait_done
authorCezary Rojewski <cezary.rojewski@intel.com>
Thu, 13 Jun 2019 19:04:34 +0000 (21:04 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 25 Jun 2019 14:33:50 +0000 (15:33 +0100)
rx_data and rx_bytes present for tx_wait_done are optional parameters.
If not provided, function should not attempt to copy received data.
This change fixes memcpy NULL pointer dereference issue occurring when
optional rx_data is NULL while received message size is non-zero.

Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/common/sst-ipc.c

index dcff13802c007ece2a87b6bd695c6362613dc67b..fc3340f1da3a59db492be1ea3e72c8d33f6ba65f 100644 (file)
@@ -71,7 +71,7 @@ static int tx_wait_done(struct sst_generic_ipc *ipc,
        } else {
 
                /* copy the data returned from DSP */
-               if (msg->rx_size)
+               if (rx_data)
                        memcpy(rx_data, msg->rx_data, msg->rx_size);
                ret = msg->errno;
        }