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) {