From: Alexandru Gagniuc Date: Tue, 28 Apr 2015 20:03:58 +0000 (-0700) Subject: asix-sigma: Avoid use of variable length arrays X-Git-Tag: libsigrok-0.4.0~513 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=e8686e3ae36c190a88f1a15aebb7294bb6491578;p=libsigrok.git asix-sigma: Avoid use of variable length arrays This was only done once in sigma_write_register(). --- diff --git a/src/hardware/asix-sigma/asix-sigma.c b/src/hardware/asix-sigma/asix-sigma.c index 957b1d1a..6e7f1fd7 100644 --- a/src/hardware/asix-sigma/asix-sigma.c +++ b/src/hardware/asix-sigma/asix-sigma.c @@ -130,13 +130,23 @@ static int sigma_write(void *buf, size_t size, struct dev_context *devc) return ret; } +/* + * NOTE: We chose the buffer size to be large enough to hold any write to the + * device. We still print a message just in case. + */ static int sigma_write_register(uint8_t reg, uint8_t *data, size_t len, struct dev_context *devc) { size_t i; - uint8_t buf[len + 2]; + uint8_t buf[80]; int idx = 0; + if ((len + 2) > sizeof(buf)) { + sr_err("Attempted to write %zu bytes, but buffer is too small.", + len + 2); + return SR_ERR_BUG; + } + buf[idx++] = REG_ADDR_LOW | (reg & 0xf); buf[idx++] = REG_ADDR_HIGH | (reg >> 4);