Skip to content

Commit

Permalink
eeprom: at24: check at24_read/write arguments
Browse files Browse the repository at this point in the history
commit d9bcd46 upstream.

So far we completely rely on the caller to provide valid arguments.
To be on the safe side perform an own sanity check.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Heiner Kallweit authored and Greg Kroah-Hartman committed Dec 5, 2017
1 parent 092b011 commit 165a3c7
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions drivers/misc/eeprom/at24.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,9 @@ static ssize_t at24_read(struct at24_data *at24,
if (unlikely(!count))
return count;

if (off + count > at24->chip.byte_len)
return -EINVAL;

/*
* Read data from chip, protecting against concurrent updates
* from this host, but not from other I2C masters.
Expand Down Expand Up @@ -328,6 +331,9 @@ static ssize_t at24_eeprom_write(struct at24_data *at24, const char *buf,
unsigned long timeout, write_time;
unsigned next_page;

if (offset + count > at24->chip.byte_len)
return -EINVAL;

/* Get corresponding I2C address and adjust offset */
client = at24_translate_offset(at24, &offset);

Expand Down

0 comments on commit 165a3c7

Please sign in to comment.