From 2feb33c52b95bafcbaefcdf5ce15b1d2adc94378 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 10 Nov 2010 17:47:07 +0100 Subject: Consider offset when writing memory --- srec.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'srec.c') diff --git a/srec.c b/srec.c index dde118c..146af46 100644 --- a/srec.c +++ b/srec.c @@ -56,11 +56,10 @@ err_out: } static int srec_load_S3(char *buf, size_t data_count, - uint32_t start_addr, uint8_t *mem_base, size_t mem_size) + off_t offset, uint8_t *mem_base, size_t mem_size) { size_t i; uint32_t *base = (uint32_t *) mem_base; - off_t offset = 0; for (i = 0; i < data_count; i += 4) { uint32_t tmp; @@ -72,12 +71,13 @@ static int srec_load_S3(char *buf, size_t data_count, /* SREC is Big Endian, NiosII is Little Endian */ tmp = bswap_32(tmp); - if (offset + i > mem_size - 1) { + if (offset + i >= mem_size) { err("Image file too large for allocated memory of %zu bytes\n", mem_size); return -1; } + /* Store in memory */ - base[offset + i] = tmp; + base[offset / 4 + i] = tmp; } return 0; @@ -101,7 +101,7 @@ static int srec_handle_line(char *buf, size_t len, uint8_t *mem_base, size_t mem switch (buf[1]) { case '0': - dbg("handling S0\n"); + /* Ignore */ break; case '1': dbg("handling S1\n"); @@ -144,7 +144,7 @@ static int srec_handle_line(char *buf, size_t len, uint8_t *mem_base, size_t mem return 0; } -int srec_load(FILE *fp, const char *name, uint8_t *mem_base, size_t mem_size) +int srec_load(FILE *fp, const char *name __unused, uint8_t *mem_base, size_t mem_size) { ssize_t len; int ret = 0; -- cgit v1.2.3-54-g00ecf f869202a4ccc673cbd8dd326bf54a8efff'>refslogtreecommitdiff
diff options
context:
space:
mode: