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/serve_image.c2
2 files changed, 11 insertions, 2 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/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>