diff options
author | Daniel Anselmi <danselmi@gmx.ch> | 2022-12-14 09:27:38 +0100 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2023-04-14 15:18:40 +0000 |
commit | 91bd4313444c5a949ce49d88ab487608df7d6c37 (patch) | |
tree | a940f577374323d81c2d1c2b8a330f5e6fb806b4 /src | |
parent | 95c27731d4f76c0554147030075ab476d68f9f83 (diff) | |
download | riscv-openocd-91bd4313444c5a949ce49d88ab487608df7d6c37.zip riscv-openocd-91bd4313444c5a949ce49d88ab487608df7d6c37.tar.gz riscv-openocd-91bd4313444c5a949ce49d88ab487608df7d6c37.tar.bz2 |
pld: move file sanity checks to pld.c
Change-Id: Id64b1165b25a03634949ac22b8af16eb0e24c1fa
Signed-off-by: Daniel Anselmi <danselmi@gmx.ch>
Reviewed-on: https://review.openocd.org/c/openocd/+/7388
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/pld/pld.c | 17 | ||||
-rw-r--r-- | src/pld/xilinx_bit.c | 17 |
2 files changed, 17 insertions, 17 deletions
diff --git a/src/pld/pld.c b/src/pld/pld.c index e2e0ef4..af18369 100644 --- a/src/pld/pld.c +++ b/src/pld/pld.c @@ -10,6 +10,7 @@ #endif #include "pld.h" +#include <sys/stat.h> #include <helper/log.h> #include <helper/replacements.h> #include <helper/time_support.h> @@ -134,6 +135,22 @@ COMMAND_HANDLER(handle_pld_load_command) return ERROR_OK; } + struct stat input_stat; + if (stat(CMD_ARGV[1], &input_stat) == -1) { + LOG_ERROR("couldn't stat() %s: %s", CMD_ARGV[1], strerror(errno)); + return ERROR_PLD_FILE_LOAD_FAILED; + } + + if (S_ISDIR(input_stat.st_mode)) { + LOG_ERROR("%s is a directory", CMD_ARGV[1]); + return ERROR_PLD_FILE_LOAD_FAILED; + } + + if (input_stat.st_size == 0) { + LOG_ERROR("Empty file %s", CMD_ARGV[1]); + return ERROR_PLD_FILE_LOAD_FAILED; + } + retval = p->driver->load(p, CMD_ARGV[1]); if (retval != ERROR_OK) { command_print(CMD, "failed loading file %s to pld device %u", diff --git a/src/pld/xilinx_bit.c b/src/pld/xilinx_bit.c index 792b337..e4cc52e 100644 --- a/src/pld/xilinx_bit.c +++ b/src/pld/xilinx_bit.c @@ -13,7 +13,6 @@ #include "pld.h" #include <helper/log.h> -#include <sys/stat.h> #include <helper/system.h> static int read_section(FILE *input_file, int length_size, char section, @@ -60,27 +59,11 @@ static int read_section(FILE *input_file, int length_size, char section, int xilinx_read_bit_file(struct xilinx_bit_file *bit_file, const char *filename) { FILE *input_file; - struct stat input_stat; int read_count; if (!filename || !bit_file) return ERROR_COMMAND_SYNTAX_ERROR; - if (stat(filename, &input_stat) == -1) { - LOG_ERROR("couldn't stat() %s: %s", filename, strerror(errno)); - return ERROR_PLD_FILE_LOAD_FAILED; - } - - if (S_ISDIR(input_stat.st_mode)) { - LOG_ERROR("%s is a directory", filename); - return ERROR_PLD_FILE_LOAD_FAILED; - } - - if (input_stat.st_size == 0) { - LOG_ERROR("Empty file %s", filename); - return ERROR_PLD_FILE_LOAD_FAILED; - } - input_file = fopen(filename, "rb"); if (!input_file) { LOG_ERROR("couldn't open %s: %s", filename, strerror(errno)); |