aboutsummaryrefslogtreecommitdiff
path: root/misc-utils
diff options
context:
space:
mode:
Diffstat (limited to 'misc-utils')
-rw-r--r--misc-utils/docfdisk.c11
-rw-r--r--misc-utils/fectest.c2
-rw-r--r--misc-utils/flash_erase.c2
-rw-r--r--misc-utils/flashcp.c2
-rw-r--r--misc-utils/ftl_check.c4
-rw-r--r--misc-utils/serve_image.c2
6 files changed, 18 insertions, 5 deletions
diff --git a/misc-utils/docfdisk.c b/misc-utils/docfdisk.c
index 486ce29..7b936d5 100644
--- a/misc-utils/docfdisk.c
+++ b/misc-utils/docfdisk.c
@@ -253,8 +253,17 @@ int main(int argc, char **argv)
for (i = 0; i < npart; i++) {
ip = &(mh->Partitions[i]);
ip->firstUnit = cpu_to_le32(block);
- if (!nblocks[i])
+ if (!nblocks[i]) {
+ if (block >= totblocks) {
+ printf("No space left on device for partition.\n");
+ return 1;
+ }
nblocks[i] = totblocks - block;
+ }
+ if (nblocks[i] > totblocks || block > totblocks - nblocks[i]) {
+ printf("Requested partition size exceeds available device space.\n");
+ return 1;
+ }
ip->virtualUnits = cpu_to_le32(nblocks[i]);
block += nblocks[i];
ip->lastUnit = cpu_to_le32(block-1);
diff --git a/misc-utils/fectest.c b/misc-utils/fectest.c
index eb1d33e..f560f2b 100644
--- a/misc-utils/fectest.c
+++ b/misc-utils/fectest.c
@@ -87,6 +87,6 @@ int main(void)
exit(1);
}
- printf("Decoded in %ld.%06lds\n", now.tv_sec, now.tv_usec);
+ printf("Decoded in %ld.%06lds\n", (long)now.tv_sec, (long)now.tv_usec);
return 0;
}
diff --git a/misc-utils/flash_erase.c b/misc-utils/flash_erase.c
index c6f6f66..36f8d57 100644
--- a/misc-utils/flash_erase.c
+++ b/misc-utils/flash_erase.c
@@ -239,7 +239,7 @@ int main(int argc, char *argv[])
if (eb_cnt == 0)
eb_cnt = (mtd.size / mtd.eb_size) - eb_start;
- if (eb_start == 0 && mtd.size == eb_cnt * mtd.eb_size)
+ if (eb_start == 0 && mtd.size == (long long)eb_cnt * mtd.eb_size)
erase_chip = true;
/* If MTD device may have bad eraseblocks,
diff --git a/misc-utils/flashcp.c b/misc-utils/flashcp.c
index 9c48637..6065a8c 100644
--- a/misc-utils/flashcp.c
+++ b/misc-utils/flashcp.c
@@ -221,7 +221,7 @@ int main (int argc,char *argv[])
struct mtd_info_user mtd;
struct erase_info_user erase;
struct stat filestat;
- unsigned char *src,*dest,*wrlast_buf;
+ unsigned char *src, *dest, *wrlast_buf = NULL;
unsigned long long wrlast_len = 0;
int error = 0;
diff --git a/misc-utils/ftl_check.c b/misc-utils/ftl_check.c
index 5b2dae5..fe6a91a 100644
--- a/misc-utils/ftl_check.c
+++ b/misc-utils/ftl_check.c
@@ -121,6 +121,10 @@ static void check_partition(int fd)
/* Create basic block allocation table for control blocks */
nbam = (mtd.erasesize >> hdr.BlockSize);
bam = malloc(nbam * sizeof(u_int));
+ if (!bam) {
+ perror("malloc failed");
+ return;
+ }
for (i = 0; i < le16_to_cpu(hdr.NumEraseUnits); i++) {
if (lseek(fd, (i << hdr.EraseUnitSize), SEEK_SET) == -1) {
diff --git a/misc-utils/serve_image.c b/misc-utils/serve_image.c
index 6c8c8fb..ec2090f 100644
--- a/misc-utils/serve_image.c
+++ b/misc-utils/serve_image.c
@@ -1,5 +1,5 @@
#define PROGRAM_NAME "serve_image"
-#define _POSIX_C_SOURCE 200112L
+#define _POSIX_C_SOURCE 200809L
#include <time.h>
#include <errno.h>