]> mj.ucw.cz Git - libucw.git/commitdiff
tableprinter: added overflow detection
authorRobert Kessl <kesslr@centrum.cz>
Fri, 25 Jul 2014 15:28:59 +0000 (17:28 +0200)
committerRobert Kessl <kesslr@centrum.cz>
Fri, 25 Jul 2014 15:28:59 +0000 (17:28 +0200)
ucw/table-types.c

index 235ceac30358e675f0e7a4b59e88311916a45c13..b483ec554360faa35609fa45648692dd5594ba45 100644 (file)
@@ -126,6 +126,12 @@ static const char *xt_size_parse(const char *str, void *dest, struct mempool *po
   }
 
   // FIXME: Detect overflow?
+  u64 num = xt_size_units[unit_idx].num;
+  if((parsed && UINT64_MAX / parsed < num) ||
+     (num && UINT64_MAX / num < parsed)) {
+    return mp_printf(pool, "Size too large: '%s'.", str);
+  }
+
   *(u64*) dest = parsed * xt_size_units[unit_idx].num;
   return NULL;
 }