rtc: remove VLA usage
In preparation to enabling -Wvla, remove VLA and replace it with a fixed-length array instead. >From a security viewpoint, the use of Variable Length Arrays can be a vector for stack overflow attacks. Also, in general, as the code evolves it is easy to lose track of how big a VLA can get. Thus, we can end up having segfaults that are hard to debug. Also, fixed as part of the directive to remove all VLAs from the kernel: https://lkml.org/lkml/2018/3/7/621 Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
parent
83bbc5ac63
commit
fed9b18611
|
@ -36,6 +36,10 @@
|
|||
#define BQ32K_CFG2 0x09 /* Trickle charger control */
|
||||
#define BQ32K_TCFE BIT(6) /* Trickle charge FET bypass */
|
||||
|
||||
#define MAX_LEN 10 /* Maximum number of consecutive
|
||||
* register for this particular RTC.
|
||||
*/
|
||||
|
||||
struct bq32k_regs {
|
||||
uint8_t seconds;
|
||||
uint8_t minutes;
|
||||
|
@ -74,7 +78,7 @@ static int bq32k_read(struct device *dev, void *data, uint8_t off, uint8_t len)
|
|||
static int bq32k_write(struct device *dev, void *data, uint8_t off, uint8_t len)
|
||||
{
|
||||
struct i2c_client *client = to_i2c_client(dev);
|
||||
uint8_t buffer[len + 1];
|
||||
uint8_t buffer[MAX_LEN + 1];
|
||||
|
||||
buffer[0] = off;
|
||||
memcpy(&buffer[1], data, len);
|
||||
|
|
|
@ -82,7 +82,7 @@ static int mcp795_rtcc_write(struct device *dev, u8 addr, u8 *data, u8 count)
|
|||
{
|
||||
struct spi_device *spi = to_spi_device(dev);
|
||||
int ret;
|
||||
u8 tx[2 + count];
|
||||
u8 tx[257];
|
||||
|
||||
tx[0] = MCP795_WRITE;
|
||||
tx[1] = addr;
|
||||
|
|
Loading…
Reference in a new issue