* Copyright (C) 2008 by Spencer Oliver *
* spen@spen-soft.co.uk *
* *
+ * Copyright (C) 2009 by Franck Hereson *
+ * franck.hereson@secad.fr *
+ * *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
((elf->endianness == ELFDATA2LSB)? \
le_to_h_u32((uint8_t*)&field):be_to_h_u32((uint8_t*)&field))
-static int autodetect_image_type(image_t *image, char *url)
+static int autodetect_image_type(image_t *image, const char *url)
{
int retval;
- fileio_t fileio;
+ struct fileio fileio;
uint32_t read_bytes;
uint8_t buffer[9];
return ERROR_OK;
}
-static int identify_image_type(image_t *image, char *type_string, char *url)
+static int identify_image_type(image_t *image, const char *type_string, const char *url)
{
if (type_string)
{
static int image_ihex_buffer_complete(image_t *image)
{
image_ihex_t *ihex = image->type_private;
- fileio_t *fileio = &ihex->fileio;
+ struct fileio *fileio = &ihex->fileio;
uint32_t full_address = 0x0;
uint32_t cooked_bytes;
int i;
if (section[image->num_sections].size != 0)
{
image->num_sections++;
+ if (image->num_sections >= IMAGE_MAX_SECTIONS)
+ {
+ /* too many sections */
+ LOG_ERROR("Too many sections found in IHEX file");
+ return ERROR_IMAGE_FORMAT_ERROR;
+ }
section[image->num_sections].size = 0x0;
section[image->num_sections].flags = 0;
section[image->num_sections].private = &ihex->buffer[cooked_bytes];
if (section[image->num_sections].size != 0)
{
image->num_sections++;
+ if (image->num_sections >= IMAGE_MAX_SECTIONS)
+ {
+ /* too many sections */
+ LOG_ERROR("Too many sections found in IHEX file");
+ return ERROR_IMAGE_FORMAT_ERROR;
+ }
section[image->num_sections].size = 0x0;
section[image->num_sections].flags = 0;
section[image->num_sections].private = &ihex->buffer[cooked_bytes];
if (section[image->num_sections].size != 0)
{
image->num_sections++;
+ if (image->num_sections >= IMAGE_MAX_SECTIONS)
+ {
+ /* too many sections */
+ LOG_ERROR("Too many sections found in IHEX file");
+ return ERROR_IMAGE_FORMAT_ERROR;
+ }
section[image->num_sections].size = 0x0;
section[image->num_sections].flags = 0;
section[image->num_sections].private = &ihex->buffer[cooked_bytes];
static int image_mot_buffer_complete(image_t *image)
{
image_mot_t *mot = image->type_private;
- fileio_t *fileio = &mot->fileio;
+ struct fileio *fileio = &mot->fileio;
uint32_t full_address = 0x0;
uint32_t cooked_bytes;
int i;
return ERROR_IMAGE_FORMAT_ERROR;
}
-int image_open(image_t *image, char *url, char *type_string)
+int image_open(image_t *image, const char *url, const char *type_string)
{
int retval = ERROR_OK;