org.glassfish.jaxb
@@ -174,6 +180,7 @@
${maven.compiler.target}
-proc:full
+ -Xlint:deprecation
@@ -266,10 +273,21 @@
com.github.spotbugs
spotbugs-maven-plugin
+
+ spotbugs-exclude.xml
+
org.apache.maven.plugins
maven-pmd-plugin
+
+ 150
+
+
+ **/integer/*ShiftModification.java
+ **/longint/*ShiftModification.java
+
+
diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml
new file mode 100644
index 00000000..a3b60794
--- /dev/null
+++ b/spotbugs-exclude.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/de/rub/nds/modifiablevariable/ModifiableVariableHolder.java b/src/main/java/de/rub/nds/modifiablevariable/ModifiableVariableHolder.java
index 850a53c0..d852e98a 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/ModifiableVariableHolder.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/ModifiableVariableHolder.java
@@ -7,7 +7,7 @@
*/
package de.rub.nds.modifiablevariable;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import de.rub.nds.modifiablevariable.util.ReflectionHelper;
import jakarta.xml.bind.annotation.XmlType;
import java.io.Serializable;
@@ -194,7 +194,7 @@ protected String getExtendedString(int depth) {
stringBuilder.append("\t".repeat(Math.max(0, depth)));
stringBuilder.append(field.getName());
stringBuilder.append(": ");
- stringBuilder.append(ArrayConverter.bytesToHexString(temp));
+ stringBuilder.append(DataConverter.bytesToHexString(temp));
stringBuilder.append("\n");
}
if (tempObject instanceof ModifiableVariableHolder) {
diff --git a/src/main/java/de/rub/nds/modifiablevariable/VariableModification.java b/src/main/java/de/rub/nds/modifiablevariable/VariableModification.java
index 316cfa32..adc3d9da 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/VariableModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/VariableModification.java
@@ -10,7 +10,7 @@
import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlTransient;
@@ -137,7 +137,7 @@ protected void debug(E value) {
} else {
String valueString =
switch (value) {
- case byte[] bytes -> ArrayConverter.bytesToHexString(bytes);
+ case byte[] bytes -> DataConverter.bytesToHexString(bytes);
case String s -> backslashEscapeString(s);
default -> value.toString();
};
diff --git a/src/main/java/de/rub/nds/modifiablevariable/biginteger/ModifiableBigInteger.java b/src/main/java/de/rub/nds/modifiablevariable/biginteger/ModifiableBigInteger.java
index 2148fc72..520ee387 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/biginteger/ModifiableBigInteger.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/biginteger/ModifiableBigInteger.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.biginteger;
import de.rub.nds.modifiablevariable.ModifiableVariable;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import jakarta.xml.bind.annotation.XmlRootElement;
import java.math.BigInteger;
@@ -108,7 +108,7 @@ public boolean isOriginalValueModified() {
* @return The byte array representation of the BigInteger
*/
public byte[] getByteArray() {
- return ArrayConverter.bigIntegerToByteArray(getValue());
+ return DataConverter.bigIntegerToByteArray(getValue());
}
/**
@@ -118,7 +118,7 @@ public byte[] getByteArray() {
* @return The byte array representation of the BigInteger
*/
public byte[] getByteArray(int size) {
- return ArrayConverter.bigIntegerToByteArray(getValue(), size, true);
+ return DataConverter.bigIntegerToByteArray(getValue(), size, true);
}
/**
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bool/BooleanExplicitValueModification.java b/src/main/java/de/rub/nds/modifiablevariable/bool/BooleanExplicitValueModification.java
index 08a59733..b73b1112 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bool/BooleanExplicitValueModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bool/BooleanExplicitValueModification.java
@@ -8,6 +8,7 @@
package de.rub.nds.modifiablevariable.bool;
import de.rub.nds.modifiablevariable.VariableModification;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.xml.bind.annotation.XmlRootElement;
/**
@@ -76,6 +77,10 @@ public BooleanExplicitValueModification createCopy() {
* @return The explicit value, or null if input was null
*/
@Override
+ @SuppressFBWarnings(
+ value = "NP_BOOLEAN_RETURN_NULL",
+ justification =
+ "Returning null for null input is intentional design for null-safety in modification chain")
protected Boolean modifyImplementationHook(Boolean input) {
if (input == null) {
return null;
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bool/BooleanToggleModification.java b/src/main/java/de/rub/nds/modifiablevariable/bool/BooleanToggleModification.java
index fa0a74d5..7e8e03fd 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bool/BooleanToggleModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bool/BooleanToggleModification.java
@@ -8,6 +8,7 @@
package de.rub.nds.modifiablevariable.bool;
import de.rub.nds.modifiablevariable.VariableModification;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.xml.bind.annotation.XmlRootElement;
/**
@@ -27,15 +28,6 @@ public BooleanToggleModification() {
super();
}
- /**
- * Copy constructor.
- *
- * @param other The modification to copy
- */
- public BooleanToggleModification(BooleanToggleModification other) {
- super();
- }
-
/**
* Creates a deep copy of this modification.
*
@@ -43,7 +35,7 @@ public BooleanToggleModification(BooleanToggleModification other) {
*/
@Override
public BooleanToggleModification createCopy() {
- return new BooleanToggleModification(this);
+ return new BooleanToggleModification();
}
/**
@@ -59,6 +51,10 @@ public BooleanToggleModification createCopy() {
* @return The inverted Boolean value, or null if the input is null
*/
@Override
+ @SuppressFBWarnings(
+ value = "NP_BOOLEAN_RETURN_NULL",
+ justification =
+ "Returning null for null input is intentional design for null-safety in modification chain")
protected Boolean modifyImplementationHook(Boolean input) {
if (input == null) {
return null;
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayAppendValueModification.java b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayAppendValueModification.java
index 46e59044..96ee20d2 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayAppendValueModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayAppendValueModification.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.bytearray;
import de.rub.nds.modifiablevariable.VariableModification;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import de.rub.nds.modifiablevariable.util.UnformattedByteArrayAdapter;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -96,7 +96,7 @@ protected byte[] modifyImplementationHook(byte[] input) {
if (input == null) {
return null;
}
- return ArrayConverter.concatenate(input, bytesToAppend);
+ return DataConverter.concatenate(input, bytesToAppend);
}
/**
@@ -167,7 +167,7 @@ public boolean equals(Object obj) {
@Override
public String toString() {
return "ByteArrayAppendValueModification{bytesToAppend="
- + ArrayConverter.bytesToHexString(bytesToAppend)
+ + DataConverter.bytesToHexString(bytesToAppend)
+ "}";
}
}
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayDeleteModification.java b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayDeleteModification.java
index 6abefdf3..4aacb388 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayDeleteModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayDeleteModification.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.bytearray;
import de.rub.nds.modifiablevariable.VariableModification;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import jakarta.xml.bind.annotation.XmlRootElement;
import java.util.Arrays;
@@ -114,7 +114,7 @@ protected byte[] modifyImplementationHook(byte[] input) {
byte[] ret1 = Arrays.copyOf(input, deleteStartPosition);
if (deleteEndPosition < input.length) {
byte[] ret2 = Arrays.copyOfRange(input, deleteEndPosition, input.length);
- return ArrayConverter.concatenate(ret1, ret2);
+ return DataConverter.concatenate(ret1, ret2);
}
return ret1;
}
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayDuplicateModification.java b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayDuplicateModification.java
index 519386b4..cca3fd6d 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayDuplicateModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayDuplicateModification.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.bytearray;
import de.rub.nds.modifiablevariable.VariableModification;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import jakarta.xml.bind.annotation.XmlRootElement;
/**
@@ -31,15 +31,6 @@ public ByteArrayDuplicateModification() {
super();
}
- /**
- * Copy constructor for creating a deep copy of an existing modification.
- *
- * @param other The modification to copy
- */
- public ByteArrayDuplicateModification(ByteArrayDuplicateModification other) {
- super();
- }
-
/**
* Creates a deep copy of this modification.
*
@@ -49,7 +40,7 @@ public ByteArrayDuplicateModification(ByteArrayDuplicateModification other) {
*/
@Override
public ByteArrayDuplicateModification createCopy() {
- return new ByteArrayDuplicateModification(this);
+ return new ByteArrayDuplicateModification();
}
/**
@@ -72,7 +63,7 @@ protected byte[] modifyImplementationHook(byte[] input) {
if (input == null) {
return null;
}
- return ArrayConverter.concatenate(input, input);
+ return DataConverter.concatenate(input, input);
}
/**
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayExplicitValueModification.java b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayExplicitValueModification.java
index 28b4a6b1..6090172d 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayExplicitValueModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayExplicitValueModification.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.bytearray;
import de.rub.nds.modifiablevariable.VariableModification;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import de.rub.nds.modifiablevariable.util.UnformattedByteArrayAdapter;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -148,7 +148,7 @@ public boolean equals(Object obj) {
public String toString() {
return "ByteArrayExplicitValueModification{"
+ "explicitValue="
- + ArrayConverter.bytesToHexString(explicitValue)
+ + DataConverter.bytesToHexString(explicitValue)
+ '}';
}
}
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayInsertValueModification.java b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayInsertValueModification.java
index 2419abcd..60b42a0c 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayInsertValueModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayInsertValueModification.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.bytearray;
import de.rub.nds.modifiablevariable.VariableModification;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import de.rub.nds.modifiablevariable.util.UnformattedByteArrayAdapter;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -118,9 +118,9 @@ protected byte[] modifyImplementationHook(byte[] input) {
byte[] ret1 = Arrays.copyOf(input, insertPosition);
if (insertPosition < input.length) {
byte[] ret2 = Arrays.copyOfRange(input, insertPosition, input.length);
- return ArrayConverter.concatenate(ret1, bytesToInsert, ret2);
+ return DataConverter.concatenate(ret1, bytesToInsert, ret2);
}
- return ArrayConverter.concatenate(ret1, bytesToInsert);
+ return DataConverter.concatenate(ret1, bytesToInsert);
}
/**
@@ -215,7 +215,7 @@ public boolean equals(Object obj) {
public String toString() {
return "ByteArrayInsertModification{"
+ "bytesToInsert="
- + ArrayConverter.bytesToHexString(bytesToInsert)
+ + DataConverter.bytesToHexString(bytesToInsert)
+ ", startPosition="
+ startPosition
+ '}';
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayPrependValueModification.java b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayPrependValueModification.java
index 3f32c70d..7e329309 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayPrependValueModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayPrependValueModification.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.bytearray;
import de.rub.nds.modifiablevariable.VariableModification;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import de.rub.nds.modifiablevariable.util.UnformattedByteArrayAdapter;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -98,7 +98,7 @@ protected byte[] modifyImplementationHook(byte[] input) {
if (input == null) {
return null;
}
- return ArrayConverter.concatenate(bytesToPrepend, input);
+ return DataConverter.concatenate(bytesToPrepend, input);
}
/**
@@ -169,7 +169,7 @@ public boolean equals(Object obj) {
@Override
public String toString() {
return "ByteArrayPrependValueModification{bytesToPrepend="
- + ArrayConverter.bytesToHexString(bytesToPrepend)
+ + DataConverter.bytesToHexString(bytesToPrepend)
+ "}";
}
}
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayXorModification.java b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayXorModification.java
index f039c729..d3a08017 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayXorModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ByteArrayXorModification.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.bytearray;
import de.rub.nds.modifiablevariable.VariableModification;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import de.rub.nds.modifiablevariable.util.UnformattedByteArrayAdapter;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -126,10 +126,10 @@ protected byte[] modifyImplementationHook(byte[] input) {
/**
* Gets the byte array used for the XOR operation.
*
- * @return The XOR byte array
+ * @return A copy of the XOR byte array
*/
public byte[] getXor() {
- return xor;
+ return xor == null ? null : xor.clone();
}
/**
@@ -138,7 +138,7 @@ public byte[] getXor() {
* @param xor The new XOR byte array
*/
public void setXor(byte[] xor) {
- this.xor = xor;
+ this.xor = xor == null ? null : xor.clone();
}
/**
@@ -208,7 +208,7 @@ public boolean equals(Object obj) {
public String toString() {
return "ByteArrayXorModification{"
+ "xor="
- + ArrayConverter.bytesToHexString(xor)
+ + DataConverter.bytesToHexString(xor)
+ ", startPosition="
+ startPosition
+ '}';
diff --git a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ModifiableByteArray.java b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ModifiableByteArray.java
index 5aff26db..5c6b017b 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/bytearray/ModifiableByteArray.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/bytearray/ModifiableByteArray.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.bytearray;
import de.rub.nds.modifiablevariable.ModifiableVariable;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import de.rub.nds.modifiablevariable.util.UnformattedByteArrayAdapter;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
@@ -213,7 +213,7 @@ public int hashCode() {
public String toString() {
return "ModifiableByteArray{"
+ "originalValue="
- + (originalValue != null ? ArrayConverter.bytesToHexString(originalValue) : "")
+ + (originalValue != null ? DataConverter.bytesToHexString(originalValue) : "")
+ innerToString()
+ '}';
}
diff --git a/src/main/java/de/rub/nds/modifiablevariable/integer/IntegerSwapEndianModification.java b/src/main/java/de/rub/nds/modifiablevariable/integer/IntegerSwapEndianModification.java
index c2f13f88..80192c3d 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/integer/IntegerSwapEndianModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/integer/IntegerSwapEndianModification.java
@@ -33,15 +33,6 @@ public IntegerSwapEndianModification() {
super();
}
- /**
- * Copy constructor for creating a deep copy of an existing modification.
- *
- * @param other The modification to copy
- */
- public IntegerSwapEndianModification(IntegerSwapEndianModification other) {
- super();
- }
-
/**
* Creates a deep copy of this modification.
*
@@ -49,7 +40,7 @@ public IntegerSwapEndianModification(IntegerSwapEndianModification other) {
*/
@Override
public IntegerSwapEndianModification createCopy() {
- return new IntegerSwapEndianModification(this);
+ return new IntegerSwapEndianModification();
}
/**
diff --git a/src/main/java/de/rub/nds/modifiablevariable/integer/ModifiableInteger.java b/src/main/java/de/rub/nds/modifiablevariable/integer/ModifiableInteger.java
index c190c853..5d57e10f 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/integer/ModifiableInteger.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/integer/ModifiableInteger.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.integer;
import de.rub.nds.modifiablevariable.ModifiableVariable;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import jakarta.xml.bind.annotation.XmlRootElement;
/**
@@ -111,7 +111,7 @@ public boolean isOriginalValueModified() {
* @return The byte array representation of the integer
*/
public byte[] getByteArray(int size) {
- return ArrayConverter.intToBytes(getValue(), size);
+ return DataConverter.intToBytes(getValue(), size);
}
/**
diff --git a/src/main/java/de/rub/nds/modifiablevariable/length/ModifiableLengthField.java b/src/main/java/de/rub/nds/modifiablevariable/length/ModifiableLengthField.java
index 01323ad8..5bd06a0f 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/length/ModifiableLengthField.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/length/ModifiableLengthField.java
@@ -130,12 +130,12 @@ public boolean equals(Object obj) {
if (!(obj instanceof ModifiableLengthField that)) {
return false;
}
- // First check if the values are equal
- boolean valuesEqual =
- getValue() == null ? that.getValue() == null : getValue().equals(that.getValue());
- // Then check if they reference the same byte array
- boolean refsEqual = ref.equals(that.ref);
- return valuesEqual && refsEqual;
+ // First check if the parent class considers them equal
+ if (!super.equals(obj)) {
+ return false;
+ }
+ // Then check if they reference equal byte arrays
+ return Objects.equals(ref, that.ref);
}
/**
diff --git a/src/main/java/de/rub/nds/modifiablevariable/logging/ExtendedPatternLayout.java b/src/main/java/de/rub/nds/modifiablevariable/logging/ExtendedPatternLayout.java
index 07cddd51..9946eda1 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/logging/ExtendedPatternLayout.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/logging/ExtendedPatternLayout.java
@@ -7,7 +7,7 @@
*/
package de.rub.nds.modifiablevariable.logging;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.HashMap;
@@ -830,13 +830,13 @@ public StringBuilder toSerializable(LogEvent event, StringBuilder builder) {
for (Object param : event.getMessage().getParameters()) {
// Replace all ByteArrays with the String representation of the ByteArray
- // calculated by the ArrayConverter.
+ // calculated by the DataConverter.
if (param != null && bArrayClass.equals(param.getClass())) {
builder.replace(
builder.indexOf(Arrays.toString((byte[]) param)),
builder.indexOf(Arrays.toString((byte[]) param))
+ Arrays.toString((byte[]) param).length(),
- ArrayConverter.bytesToHexString(
+ DataConverter.bytesToHexString(
(byte[]) param,
Builder.prettyPrinting,
Builder.initNewLine));
diff --git a/src/main/java/de/rub/nds/modifiablevariable/longint/LongSwapEndianModification.java b/src/main/java/de/rub/nds/modifiablevariable/longint/LongSwapEndianModification.java
index ae659002..a84599b1 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/longint/LongSwapEndianModification.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/longint/LongSwapEndianModification.java
@@ -32,12 +32,15 @@ public LongSwapEndianModification() {
}
/**
- * Copy constructor for creating a deep copy of an existing modification.
+ * Copy constructor.
*
- * @param other The modification to copy
+ * Since this modification is stateless, this constructor just calls the default constructor.
+ *
+ * @param other The modification to copy (ignored since modification is stateless)
*/
+ @SuppressWarnings("unused")
public LongSwapEndianModification(LongSwapEndianModification other) {
- super();
+ this();
}
/**
@@ -47,7 +50,7 @@ public LongSwapEndianModification(LongSwapEndianModification other) {
*/
@Override
public LongSwapEndianModification createCopy() {
- return new LongSwapEndianModification(this);
+ return new LongSwapEndianModification();
}
/**
diff --git a/src/main/java/de/rub/nds/modifiablevariable/longint/ModifiableLong.java b/src/main/java/de/rub/nds/modifiablevariable/longint/ModifiableLong.java
index 5893411a..faf31111 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/longint/ModifiableLong.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/longint/ModifiableLong.java
@@ -8,7 +8,7 @@
package de.rub.nds.modifiablevariable.longint;
import de.rub.nds.modifiablevariable.ModifiableVariable;
-import de.rub.nds.modifiablevariable.util.ArrayConverter;
+import de.rub.nds.modifiablevariable.util.DataConverter;
import jakarta.xml.bind.annotation.XmlRootElement;
/**
@@ -133,7 +133,7 @@ public boolean isOriginalValueModified() {
* @return A byte array representation of the current value with the specified size
*/
public byte[] getByteArray(int size) {
- return ArrayConverter.longToBytes(getValue(), size);
+ return DataConverter.longToBytes(getValue(), size);
}
/**
diff --git a/src/main/java/de/rub/nds/modifiablevariable/util/DataConverter.java b/src/main/java/de/rub/nds/modifiablevariable/util/DataConverter.java
index 70af909f..6f1d1420 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/util/DataConverter.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/util/DataConverter.java
@@ -8,6 +8,7 @@
package de.rub.nds.modifiablevariable.util;
import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.lang.reflect.Array;
import java.math.BigInteger;
import java.util.List;
@@ -161,6 +162,9 @@ public static long uInt32BytesToLong(byte[] bytes) {
* @return Byte array representing the integer. If the array size is larger, 00 bytes are
* prepended. If the number are larger, MSBs are omitted.
*/
+ @SuppressFBWarnings(
+ value = "ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT",
+ justification = "Unsigned right shift is intentional for extracting bytes from integer")
public static byte[] intToBytes(int value, int size) {
if (size < 1) {
throw new IllegalArgumentException("The array must be at least of size 1");
diff --git a/src/main/java/de/rub/nds/modifiablevariable/util/RandomHelper.java b/src/main/java/de/rub/nds/modifiablevariable/util/RandomHelper.java
index 447fcd79..1685d342 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/util/RandomHelper.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/util/RandomHelper.java
@@ -7,6 +7,7 @@
*/
package de.rub.nds.modifiablevariable.util;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Random;
/**
@@ -32,6 +33,10 @@ public final class RandomHelper {
*
* @return A Random instance with a fixed seed of 0
*/
+ @SuppressFBWarnings(
+ value = "MS_EXPOSE_REP",
+ justification =
+ "Intentionally sharing Random instance across application for deterministic testing")
public static synchronized Random getRandom() {
if (random == null) {
random = new Random(0);
@@ -60,6 +65,10 @@ public static BadRandom getBadSecureRandom() {
*
* @param randomInstance The Random instance to use as the singleton
*/
+ @SuppressFBWarnings(
+ value = "EI_EXPOSE_STATIC_REP2",
+ justification =
+ "Intentionally allowing external Random instances to be set for testing flexibility")
public static synchronized void setRandom(Random randomInstance) {
random = randomInstance;
}
diff --git a/src/main/java/de/rub/nds/modifiablevariable/util/UnformattedByteArrayAdapter.java b/src/main/java/de/rub/nds/modifiablevariable/util/UnformattedByteArrayAdapter.java
index 8ef88a17..5b44d11c 100644
--- a/src/main/java/de/rub/nds/modifiablevariable/util/UnformattedByteArrayAdapter.java
+++ b/src/main/java/de/rub/nds/modifiablevariable/util/UnformattedByteArrayAdapter.java
@@ -61,7 +61,7 @@ public UnformattedByteArrayAdapter() {
@Override
public byte[] unmarshal(String value) {
value = value.replaceAll("\\s", "");
- return ArrayConverter.hexStringToByteArray(value);
+ return DataConverter.hexStringToByteArray(value);
}
/**
@@ -75,6 +75,6 @@ public byte[] unmarshal(String value) {
*/
@Override
public String marshal(byte[] value) {
- return ArrayConverter.bytesToHexString(value, false, false);
+ return DataConverter.bytesToHexString(value, false, false);
}
}