aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Anselmi <danselmi@gmx.ch>2022-12-14 09:27:38 +0100
committerAntonio Borneo <borneo.antonio@gmail.com>2023-04-14 15:18:40 +0000
commit91bd4313444c5a949ce49d88ab487608df7d6c37 (patch)
treea940f577374323d81c2d1c2b8a330f5e6fb806b4
parent95c27731d4f76c0554147030075ab476d68f9f83 (diff)
downloadriscv-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>
-rw-r--r--src/pld/pld.c17
-rw-r--r--src/pld/xilinx_bit.c17
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));