ASoC: SOF: topology: Prevent NULL pointer dereference with no TLV
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Mon, 1 Feb 2021 09:31:28 +0000 (11:31 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 1 Feb 2021 13:18:58 +0000 (13:18 +0000)
When there is no TLV data in topology, extracting the TLV data
could result in a NULL pointer exception. Prevent this by making
sure that the TLV data exists before extracting it.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Paul Olaru <paul.olaru@oss.nxp.com>
Reviewed-by: Bard Liao <bard.liao@intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20210201093128.1226603-1-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/topology.c

index 59f89f3d61a230f118bf342cb7c4e5ac9f5c1be3..480cf75a7575e65dbc127ae758a529e18d88dc58 100644 (file)
@@ -1073,7 +1073,7 @@ static int sof_control_load_volume(struct snd_soc_component *scomp,
        scontrol->cmd = SOF_CTRL_CMD_VOLUME;
 
        /* extract tlv data */
-       if (get_tlv_data(kc->tlv.p, tlv) < 0) {
+       if (!kc->tlv.p || get_tlv_data(kc->tlv.p, tlv) < 0) {
                dev_err(scomp->dev, "error: invalid TLV data\n");
                ret = -EINVAL;
                goto out_free;