X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=tools%2Fzynqimage.c;h=021d2d3fc91f0ae515b160b33a56a8872fd5dda2;hb=0c19b4d180b66cb0e418a084ffcb187bdbc15db9;hp=43876e7a302499fed65ac33ef0afdbc09f2376b9;hpb=2d221489df021393654805536be7effcb9d39702;p=oweals%2Fu-boot.git diff --git a/tools/zynqimage.c b/tools/zynqimage.c index 43876e7a30..021d2d3fc9 100644 --- a/tools/zynqimage.c +++ b/tools/zynqimage.c @@ -225,16 +225,30 @@ static int zynqimage_check_image_types(uint8_t type) static void zynqimage_parse_initparams(struct zynq_header *zynqhdr, const char *filename) { - /* Expect a table of register-value pairs, e.g. "0x12345678 0x4321" */ - FILE *fp = fopen(filename, "r"); + FILE *fp; struct zynq_reginit reginit; unsigned int reg_count = 0; - int r; + int r, err; + struct stat path_stat; + /* Expect a table of register-value pairs, e.g. "0x12345678 0x4321" */ + fp = fopen(filename, "r"); if (!fp) { fprintf(stderr, "Cannot open initparams file: %s\n", filename); exit(1); } + + err = fstat(fileno(fp), &path_stat); + if (err) { + fclose(fp); + return; + } + + if (!S_ISREG(path_stat.st_mode)) { + fclose(fp); + return; + } + do { r = fscanf(fp, "%x %x", ®init.address, ®init.data); if (r == 2) {