OSDN Git Service

ASoC: cros_ec_codec: remove null pointer dereference warning
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Fri, 12 Mar 2021 18:22:27 +0000 (12:22 -0600)
committerMark Brown <broonie@kernel.org>
Thu, 18 Mar 2021 13:50:37 +0000 (13:50 +0000)
Cppcheck complains of a possible issue:

sound/soc/codecs/cros_ec_codec.c:98:10: warning: Possible null pointer
dereference: in [nullPointer]
  memcpy(in, msg->data, insize);
         ^
sound/soc/codecs/cros_ec_codec.c:162:34: note: Calling function
'send_ec_host_command', 5th argument 'NULL' value is 0
       (uint8_t *)&p, sizeof(p), NULL, 0);
                                 ^
sound/soc/codecs/cros_ec_codec.c:98:10: note: Null pointer dereference
  memcpy(in, msg->data, insize);
         ^

In practice the access to the pointer is protected by another
argument, but this is likely to fool other static analysis tools. Add
a test to avoid doing the memcpy if the pointer is NULL or the size is
zero.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Acked-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Link: https://lore.kernel.org/r/20210312182246.5153-5-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cros_ec_codec.c

index c4772f8..a201d65 100644 (file)
@@ -94,7 +94,7 @@ static int send_ec_host_command(struct cros_ec_device *ec_dev, uint32_t cmd,
        if (ret < 0)
                goto error;
 
-       if (insize)
+       if (in && insize)
                memcpy(in, msg->data, insize);
 
        ret = 0;