Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/linux-sunxi/sunxi-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/fel.c
diff options
context:
space:
mode:
authorBernhard Nortmann <bernhard.nortmann@web.de>2017-02-11 15:57:07 +0300
committerBernhard Nortmann <bernhard.nortmann@web.de>2017-02-11 16:04:40 +0300
commit3eb763588e67112a5c2106000ed0bacfb9569dd1 (patch)
tree513802b63b33cff26ad80dbc9929f8bd57862501 /fel.c
parentd5f5d5d1ad70aae6cbd23ed1a39d58b5b4315f49 (diff)
fel: Safeguard against calling FEL read/write with zero bytes length
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
Diffstat (limited to 'fel.c')
-rw-r--r--fel.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/fel.c b/fel.c
index d71631e..f4b2d0f 100644
--- a/fel.c
+++ b/fel.c
@@ -197,22 +197,28 @@ void *load_file(const char *name, size_t *size)
void aw_fel_hexdump(feldev_handle *dev, uint32_t offset, size_t size)
{
- unsigned char buf[size];
- aw_fel_read(dev, offset, buf, size);
- hexdump(buf, offset, size);
+ if (size > 0) {
+ unsigned char buf[size];
+ aw_fel_read(dev, offset, buf, size);
+ hexdump(buf, offset, size);
+ }
}
void aw_fel_dump(feldev_handle *dev, uint32_t offset, size_t size)
{
- unsigned char buf[size];
- aw_fel_read(dev, offset, buf, size);
- fwrite(buf, size, 1, stdout);
+ if (size > 0) {
+ unsigned char buf[size];
+ aw_fel_read(dev, offset, buf, size);
+ fwrite(buf, size, 1, stdout);
+ }
}
void aw_fel_fill(feldev_handle *dev, uint32_t offset, size_t size, unsigned char value)
{
- unsigned char buf[size];
- memset(buf, value, size);
- aw_write_buffer(dev, buf, offset, size, false);
+ if (size > 0) {
+ unsigned char buf[size];
+ memset(buf, value, size);
+ aw_write_buffer(dev, buf, offset, size, false);
+ }
}
static uint32_t fel_to_spl_thunk[] = {