Skip to content
Snippets Groups Projects
Commit f8370ad0 authored by Alex Reimers's avatar Alex Reimers
Browse files

Harden up HexString.fromHexString() and check for errors in the DeviceManager REST API.

parent cc27f929
No related branches found
No related tags found
No related merge requests found
...@@ -33,11 +33,13 @@ public class DeviceResource extends ServerResource { ...@@ -33,11 +33,13 @@ public class DeviceResource extends ServerResource {
} else { } else {
// Get device by MAC // Get device by MAC
Device dev = null; Device dev = null;
byte[] devMac = HexString.fromHexString(param); try {
dev = dm.getDeviceByDataLayerAddress(devMac); byte[] devMac = HexString.fromHexString(param);
if (dev != null) { dev = dm.getDeviceByDataLayerAddress(devMac);
retMap.put(HexString.toHexString(dev.getDataLayerAddress()), dev); if (dev != null) {
} retMap.put(HexString.toHexString(dev.getDataLayerAddress()), dev);
}
} catch (NumberFormatException e) { } // ignore, return empty map
} }
return retMap; return retMap;
......
...@@ -61,15 +61,17 @@ public class HexString { ...@@ -61,15 +61,17 @@ public class HexString {
* Convert a string of hex values into a string of bytes * Convert a string of hex values into a string of bytes
* @param values "0f:ca:fe:de:ad:be:ef" * @param values "0f:ca:fe:de:ad:be:ef"
* @return [15, 5 ,2, 5, 17] * @return [15, 5 ,2, 5, 17]
*/ * @throws NumberFormatException If the string can not be parsed
*/
public static byte[] fromHexString(String values) { public static byte[] fromHexString(String values) throws NumberFormatException {
String[] octets = values.split(":"); String[] octets = values.split(":");
byte[] ret = new byte[octets.length]; byte[] ret = new byte[octets.length];
int i;
for(i=0;i<octets.length; i++) for(int i = 0; i < octets.length; i++) {
if (octets[i].length() > 2)
throw new NumberFormatException("Invalid octet length");
ret[i] = Integer.valueOf(octets[i], 16).byteValue(); ret[i] = Integer.valueOf(octets[i], 16).byteValue();
}
return ret; return ret;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment