Skip to content

Commit 84b73e8

Browse files
committed
feat: ensure padding bytes are in char range
1 parent 7453e9c commit 84b73e8

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/main/java/com/code_intelligence/jazzer/mutation/mutator/lang/PrimitiveArrayMutatorFactory.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -274,16 +274,23 @@ public char[] postMutateChars(byte[] bytes, PseudoRandom prng) {
274274
} else {
275275
char[] chars = new String(bytes, FUZZED_DATA_CHARSET).toCharArray();
276276

277-
for (int i = 0; i < chars.length; i++) {
278-
chars[i] = (char) forceInRange(chars[i], minRange, maxRange);
279-
}
277+
int targetLength = Math.min(Math.max(chars.length, minLength), maxLength);
280278

281-
if (chars.length < minLength) {
282-
return Arrays.copyOf(chars, minLength);
283-
} else if (chars.length > maxLength) {
284-
return Arrays.copyOf(chars, maxLength);
279+
if (chars.length == targetLength) {
280+
for (int i = 0; i < chars.length; i++) {
281+
chars[i] = (char) forceInRange(chars[i], minRange, maxRange);
282+
}
283+
return chars;
284+
} else {
285+
char[] result = new char[targetLength];
286+
for (int i = 0; i < targetLength; i++) {
287+
result[i] =
288+
i < chars.length
289+
? (char) forceInRange(chars[i], minRange, maxRange)
290+
: (char) forceInRange(0, minRange, maxRange);
291+
}
292+
return result;
285293
}
286-
return chars;
287294
}
288295
}
289296

0 commit comments

Comments
 (0)