Skip to content

Commit b6c7557

Browse files
authored
Potential null pointer exception when reading primitive values (#1352)
Signed-off-by: fjtirado <ftirados@redhat.com>
1 parent 4c3b6dc commit b6c7557

1 file changed

Lines changed: 35 additions & 3 deletions

File tree

impl/core/src/main/java/io/serverlessworkflow/impl/marshaller/MarshallingUtils.java

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,18 @@ public static byte[] writeShort(WorkflowBufferFactory factory, short value) {
5151
return writeValue(factory, value, (b, v) -> b.writeShort(v));
5252
}
5353

54+
public static byte[] writeInt(WorkflowBufferFactory factory, int value) {
55+
return writeValue(factory, value, (b, v) -> b.writeInt(v));
56+
}
57+
58+
public static byte[] writeFloat(WorkflowBufferFactory factory, float value) {
59+
return writeValue(factory, value, (b, v) -> b.writeFloat(v));
60+
}
61+
62+
public static byte[] writeDouble(WorkflowBufferFactory factory, int value) {
63+
return writeValue(factory, value, (b, v) -> b.writeDouble(v));
64+
}
65+
5466
public static byte[] writeBoolean(WorkflowBufferFactory factory, boolean value) {
5567
return writeValue(factory, value, (b, v) -> b.writeBoolean(v));
5668
}
@@ -64,11 +76,23 @@ public static String readString(WorkflowBufferFactory factory, byte[] value) {
6476
}
6577

6678
public static boolean readBoolean(WorkflowBufferFactory factory, byte[] value) {
67-
return readValue(factory, value, WorkflowInputBuffer::readBoolean);
79+
return readValue(factory, value, WorkflowInputBuffer::readBoolean, false);
6880
}
6981

7082
public static short readShort(WorkflowBufferFactory factory, byte[] value) {
71-
return readValue(factory, value, WorkflowInputBuffer::readShort);
83+
return readValue(factory, value, WorkflowInputBuffer::readShort, (short) 0);
84+
}
85+
86+
public static int readInt(WorkflowBufferFactory factory, byte[] value) {
87+
return readValue(factory, value, WorkflowInputBuffer::readInt, 0);
88+
}
89+
90+
public static float readFloat(WorkflowBufferFactory factory, byte[] value) {
91+
return readValue(factory, value, WorkflowInputBuffer::readFloat, 0.0f);
92+
}
93+
94+
public static double readDouble(WorkflowBufferFactory factory, byte[] value) {
95+
return readValue(factory, value, WorkflowInputBuffer::readDouble, 0.0);
7296
}
7397

7498
public static WorkflowModel readModel(WorkflowBufferFactory factory, byte[] value) {
@@ -95,8 +119,16 @@ private static <T> byte[] writeValue(
95119

96120
private static <T> T readValue(
97121
WorkflowBufferFactory factory, byte[] value, Function<WorkflowInputBuffer, T> valueConsumer) {
122+
return readValue(factory, value, valueConsumer, null);
123+
}
124+
125+
private static <T> T readValue(
126+
WorkflowBufferFactory factory,
127+
byte[] value,
128+
Function<WorkflowInputBuffer, T> valueConsumer,
129+
T defaultValue) {
98130
if (value == null) {
99-
return null;
131+
return defaultValue;
100132
}
101133
ByteArrayInputStream bytesIn = new ByteArrayInputStream(value);
102134
try (WorkflowInputBuffer buffer = factory.input(bytesIn)) {

0 commit comments

Comments
 (0)