Limit string field lengths for network/configuration objects
Change-Id: Ic375854bb697ee21a8fd7b15fccd0b0878212869
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
index 6fa169e..d193c72 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
@@ -19,6 +19,8 @@
import org.onosproject.net.DeviceId;
import org.onosproject.net.key.DeviceKeyId;
+import static com.google.common.base.Preconditions.checkArgument;
+
/**
* Basic configuration for network infrastructure devices.
*/
@@ -33,12 +35,30 @@
private static final String SERIAL = "serial";
private static final String DEVICE_KEY_ID = "deviceKeyId";
+ private static final int DRIVER_MAX_LENGTH = 256;
+ private static final int MANUFACTURER_MAX_LENGTH = 256;
+ private static final int HW_VERSION_MAX_LENGTH = 256;
+ private static final int SW_VERSION_MAX_LENGTH = 256;
+ private static final int SERIAL_MAX_LENGTH = 256;
+ private static final int MANAGEMENT_ADDRESS_MAX_LENGTH = 1024;
+
@Override
public boolean isValid() {
- return hasOnlyFields(ALLOWED, NAME, LOC_TYPE, LATITUDE, LONGITUDE,
+ // Validate type/DeviceKeyId
+ type();
+ deviceKeyId();
+
+ return super.isValid()
+ && hasOnlyFields(ALLOWED, NAME, LOC_TYPE, LATITUDE, LONGITUDE,
GRID_Y, GRID_X, UI_TYPE, RACK_ADDRESS, OWNER, TYPE, DRIVER,
MANUFACTURER, HW_VERSION, SW_VERSION, SERIAL,
- MANAGEMENT_ADDRESS, DEVICE_KEY_ID);
+ MANAGEMENT_ADDRESS, DEVICE_KEY_ID)
+ && isValidLength(DRIVER, DRIVER_MAX_LENGTH)
+ && isValidLength(MANUFACTURER, MANUFACTURER_MAX_LENGTH)
+ && isValidLength(HW_VERSION, MANUFACTURER_MAX_LENGTH)
+ && isValidLength(SW_VERSION, MANUFACTURER_MAX_LENGTH)
+ && isValidLength(SERIAL, MANUFACTURER_MAX_LENGTH)
+ && isValidLength(MANAGEMENT_ADDRESS, MANAGEMENT_ADDRESS_MAX_LENGTH);
}
/**
@@ -76,6 +96,8 @@
* @return self
*/
public BasicDeviceConfig driver(String driverName) {
+ checkArgument(driverName.length() <= DRIVER_MAX_LENGTH,
+ "driver exceeds maximum length " + DRIVER_MAX_LENGTH);
return (BasicDeviceConfig) setOrClear(DRIVER, driverName);
}
@@ -95,6 +117,8 @@
* @return self
*/
public BasicDeviceConfig manufacturer(String manufacturerName) {
+ checkArgument(manufacturerName.length() <= MANUFACTURER_MAX_LENGTH,
+ "manufacturer exceeds maximum length " + MANUFACTURER_MAX_LENGTH);
return (BasicDeviceConfig) setOrClear(MANUFACTURER, manufacturerName);
}
@@ -114,6 +138,8 @@
* @return self
*/
public BasicDeviceConfig hwVersion(String hwVersion) {
+ checkArgument(hwVersion.length() <= HW_VERSION_MAX_LENGTH,
+ "hwVersion exceeds maximum length " + HW_VERSION_MAX_LENGTH);
return (BasicDeviceConfig) setOrClear(HW_VERSION, hwVersion);
}
@@ -133,6 +159,8 @@
* @return self
*/
public BasicDeviceConfig swVersion(String swVersion) {
+ checkArgument(swVersion.length() <= SW_VERSION_MAX_LENGTH,
+ "swVersion exceeds maximum length " + SW_VERSION_MAX_LENGTH);
return (BasicDeviceConfig) setOrClear(SW_VERSION, swVersion);
}
@@ -152,6 +180,8 @@
* @return self
*/
public BasicDeviceConfig serial(String serial) {
+ checkArgument(serial.length() <= SERIAL_MAX_LENGTH,
+ "serial exceeds maximum length " + SERIAL_MAX_LENGTH);
return (BasicDeviceConfig) setOrClear(SERIAL, serial);
}
@@ -171,6 +201,8 @@
* @return self
*/
public BasicDeviceConfig managementAddress(String managementAddress) {
+ checkArgument(managementAddress.length() <= MANAGEMENT_ADDRESS_MAX_LENGTH,
+ "serialNumber exceeds maximum length " + MANAGEMENT_ADDRESS_MAX_LENGTH);
return (BasicDeviceConfig) setOrClear(MANAGEMENT_ADDRESS, managementAddress);
}