You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/03/09 11:33:56 UTC
[plc4x] 02/03: - Added the value range check also to single item
requests
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 96da9fa71de8a6fec928c3b83e43479b03014c6a
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Mar 9 12:32:04 2020 +0100
- Added the value range check also to single item requests
---
.../main/java/org/apache/plc4x/java/modbus/field/ModbusField.java | 1 +
.../java/org/apache/plc4x/java/modbus/field/ModbusFieldCoil.java | 1 +
.../org/apache/plc4x/java/modbus/field/ModbusFieldHandler.java | 7 ++++++-
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
index 2edce00..933dad6 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
@@ -71,4 +71,5 @@ public abstract class ModbusField implements PlcField {
"quantity=" + quantity +
'}';
}
+
}
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldCoil.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldCoil.java
index 72b8c17..97906c2 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldCoil.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldCoil.java
@@ -42,4 +42,5 @@ public class ModbusFieldCoil extends ModbusField {
Integer quantity = quantityString != null ? Integer.valueOf(quantityString) : null;
return new ModbusFieldCoil(address, quantity);
}
+
}
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldHandler.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldHandler.java
index 22fe420..e16a16d 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldHandler.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldHandler.java
@@ -127,7 +127,12 @@ public class ModbusFieldHandler extends DefaultPlcFieldHandler {
@Override
public PlcValue encodeShort(PlcField field, Object[] values) {
if(values.length == 1) {
- return new PlcShort(((Number) values[0]).shortValue());
+ Number numberValue = (Number) values[0];
+ // Intentionally checking the next larger type.
+ if((numberValue.intValue() < Short.MIN_VALUE) || (numberValue.intValue() > Short.MAX_VALUE)) {
+ throw new PlcInvalidFieldException("Value of " + numberValue.toString() + " exceeds the boundaries of a short value.");
+ }
+ return new PlcShort(numberValue.shortValue());
} else {
List<PlcShort> shorts = new ArrayList<>(values.length);
for (Object value : values) {