aboutsummaryrefslogtreecommitdiffstats
path: root/tools/control/src
diff options
context:
space:
mode:
Diffstat (limited to 'tools/control/src')
-rw-r--r--tools/control/src/uk/ac/cam/cl/xeno/xenctl/Library.java17
-rw-r--r--tools/control/src/uk/ac/cam/cl/xeno/xenctl/RootBean.java24
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");