image: fix binary detection for small files

Previously, if the image file was less than 9 bytes long,
it was assumed to be an error when it could be a binary
image file. This patch makes OpenOCD detect these cases
as binary files.

Change-Id: I5b4dad2b547786246887812ac75907378fe58671
Signed-off-by: Marek Vrbka <marek.vrbka@codasip.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7880
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
Marek Vrbka 2023-08-31 08:30:37 +02:00 committed by Antonio Borneo
parent 62f76b2169
commit d41a204d82
1 changed files with 11 additions and 6 deletions

View File

@ -50,13 +50,16 @@ static int autodetect_image_type(struct image *image, const char *url)
if (retval != ERROR_OK)
return retval;
retval = fileio_read(fileio, 9, buffer, &read_bytes);
if (retval == ERROR_OK) {
if (read_bytes != 9)
retval = ERROR_FILEIO_OPERATION_FAILED;
}
fileio_close(fileio);
/* If the file is smaller than 9 bytes, it can only be bin */
if (retval == ERROR_OK && read_bytes != 9) {
LOG_DEBUG("Less than 9 bytes in the image file found.");
LOG_DEBUG("BIN image detected.");
image->type = IMAGE_BINARY;
return ERROR_OK;
}
if (retval != ERROR_OK)
return retval;
@ -82,8 +85,10 @@ static int autodetect_image_type(struct image *image, const char *url)
&& (buffer[1] >= '0') && (buffer[1] < '9')) {
LOG_DEBUG("S19 image detected.");
image->type = IMAGE_SRECORD;
} else
} else {
LOG_DEBUG("BIN image detected.");
image->type = IMAGE_BINARY;
}
return ERROR_OK;
}