diff options
Diffstat (limited to 'tools/control/src/uk/ac/cam/cl')
-rw-r--r-- | tools/control/src/uk/ac/cam/cl/xeno/xenctl/Library.java | 17 | ||||
-rw-r--r-- | tools/control/src/uk/ac/cam/cl/xeno/xenctl/RootBean.java | 24 |
2 files changed, 36 insertions, 5 deletions
diff --git a/tools/control/src/uk/ac/cam/cl/xeno/xenctl/Library.java b/tools/control/src/uk/ac/cam/cl/xeno/xenctl/Library.java index 0679ccaedd..27748b5f48 100644 --- a/tools/control/src/uk/ac/cam/cl/xeno/xenctl/Library.java +++ b/tools/control/src/uk/ac/cam/cl/xeno/xenctl/Library.java @@ -64,6 +64,12 @@ Library { String substring = size; int suffix = 1; + long value = 0; + + if (size == null) + { + return 0; + } if ((substring = check(size, 'm')) != null) { @@ -94,7 +100,16 @@ Library substring = size; } - return Long.decode(substring).longValue() * suffix; + try + { + value = Long.decode(substring).longValue() * suffix; + } + catch (NumberFormatException e) + { + value = 0; + } + + return value; } static String diff --git a/tools/control/src/uk/ac/cam/cl/xeno/xenctl/RootBean.java b/tools/control/src/uk/ac/cam/cl/xeno/xenctl/RootBean.java index 08f388dccb..668f922129 100644 --- a/tools/control/src/uk/ac/cam/cl/xeno/xenctl/RootBean.java +++ b/tools/control/src/uk/ac/cam/cl/xeno/xenctl/RootBean.java @@ -71,14 +71,19 @@ RootBean Partition p = pm.get_partition(partition); String result="done"; int loop; + long size; if (p == null) { return (" eh? what partition: " + partition); } - vdm.add_xeno_partition(p, - Library.parse_size(chunksize)/default_sector_size); + size = Library.parse_size(chunksize) / default_sector_size; + if (size == 0) + { + return ("error: invalid chunk size"); + } + vdm.add_xeno_partition(p, size); pm.add_xeno_partition(p); /* return pm.dump(true); */ @@ -110,9 +115,15 @@ RootBean { VirtualDisk vd; Date date = new Date(); + long parse_size; - vd = vdm.create_virtual_disk(name, - Library.parse_size(size)/default_sector_size, + + parse_size = Library.parse_size(size)/default_sector_size; + if (parse_size == 0) + { + return ("error: invalid size"); + } + vd = vdm.create_virtual_disk(name, parse_size, new Date(date.getTime() + expiry)); return ("Virtual Disk created with key: " + vd.get_key()); @@ -122,6 +133,11 @@ RootBean public String doDeleteVirtualDisk (String key) { + if (key == null || + key.trim().equals("")) + { + return ("error: no virtual disk specified"); + } vdm.delete_virtual_disk(key); return ("okay"); |