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>
This commit is contained in:
parent
95c27731d4
commit
91bd431344
|
@ -10,6 +10,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "pld.h"
|
#include "pld.h"
|
||||||
|
#include <sys/stat.h>
|
||||||
#include <helper/log.h>
|
#include <helper/log.h>
|
||||||
#include <helper/replacements.h>
|
#include <helper/replacements.h>
|
||||||
#include <helper/time_support.h>
|
#include <helper/time_support.h>
|
||||||
|
@ -134,6 +135,22 @@ COMMAND_HANDLER(handle_pld_load_command)
|
||||||
return ERROR_OK;
|
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]);
|
retval = p->driver->load(p, CMD_ARGV[1]);
|
||||||
if (retval != ERROR_OK) {
|
if (retval != ERROR_OK) {
|
||||||
command_print(CMD, "failed loading file %s to pld device %u",
|
command_print(CMD, "failed loading file %s to pld device %u",
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
#include "pld.h"
|
#include "pld.h"
|
||||||
#include <helper/log.h>
|
#include <helper/log.h>
|
||||||
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <helper/system.h>
|
#include <helper/system.h>
|
||||||
|
|
||||||
static int read_section(FILE *input_file, int length_size, char section,
|
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)
|
int xilinx_read_bit_file(struct xilinx_bit_file *bit_file, const char *filename)
|
||||||
{
|
{
|
||||||
FILE *input_file;
|
FILE *input_file;
|
||||||
struct stat input_stat;
|
|
||||||
int read_count;
|
int read_count;
|
||||||
|
|
||||||
if (!filename || !bit_file)
|
if (!filename || !bit_file)
|
||||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
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");
|
input_file = fopen(filename, "rb");
|
||||||
if (!input_file) {
|
if (!input_file) {
|
||||||
LOG_ERROR("couldn't open %s: %s", filename, strerror(errno));
|
LOG_ERROR("couldn't open %s: %s", filename, strerror(errno));
|
||||||
|
|
Loading…
Reference in New Issue