1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2024-11-22 12:02:05 +01:00

Let StringUtils.(insecure)randomString() return empty string

in case length is zero. Also do throw a NegativeArraySizeException if
length is negative instead of returning null.

This fixes the following sporadic test issue:

org.jivesoftware.smackx.ox.PainlessOpenPgpProviderTest > encryptDecryptTest FAILED
java.lang.AssertionError
at org.jivesoftware.smack.util.XmlStringBuilder.escape(XmlStringBuilder.java:425)
at org.jivesoftware.smackx.ox.element.EncryptedOpenPgpContentElement.addCommonXml(EncryptedOpenPgpContentElement.java:65)
at org.jivesoftware.smackx.ox.element.CryptElement.toXML(CryptElement.java:51)
at org.jivesoftware.smackx.ox.element.CryptElement.toXML(CryptElement.java:31)
at org.jivesoftware.smack.packet.Element.toXML(Element.java:41)
at org.jivesoftware.smackx.ox.element.OpenPgpContentElement.toInputStream(OpenPgpContentElement.java:186)
at org.jivesoftware.smackx.ox.crypto.PainlessOpenPgpProvider.encrypt(PainlessOpenPgpProvider.java:136)
at org.jivesoftware.smackx.ox.PainlessOpenPgpProviderTest.encryptDecryptTest(PainlessOpenPgpProviderTest.java:155)

because EncryptedOpenPgpContentElement rpad field was sometimes
'null' in case the random function returned '0' as length.
This commit is contained in:
Florian Schmaus 2019-03-25 12:11:59 +01:00
parent 14f288a763
commit 89c0fa4b99
2 changed files with 17 additions and 10 deletions

View file

@ -283,8 +283,8 @@ public class StringUtils {
} }
public static String randomString(final int length, Random random) { public static String randomString(final int length, Random random) {
if (length < 1) { if (length == 0) {
return null; return "";
} }
byte[] randomBytes = new byte[length]; byte[] randomBytes = new byte[length];

View file

@ -1,6 +1,6 @@
/** /**
* *
* Copyright 2003-2007 Jive Software. * Copyright 2003-2007 Jive Software, 2019 Florian Schmaus.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -88,13 +88,7 @@ public class StringUtilsTest {
@Test @Test
public void testRandomString() { public void testRandomString() {
// Boundary test String result;
String result = StringUtils.randomString(-1);
assertNull(result);
// Zero length string test
result = StringUtils.randomString(0);
assertNull(result);
// Test various lengths - make sure the same length is returned // Test various lengths - make sure the same length is returned
result = StringUtils.randomString(4); result = StringUtils.randomString(4);
@ -104,4 +98,17 @@ public class StringUtilsTest {
result = StringUtils.randomString(128); result = StringUtils.randomString(128);
assertTrue(result.length() == 128); assertTrue(result.length() == 128);
} }
@Test(expected = NegativeArraySizeException.class)
public void testNegativeArraySizeException() {
// Boundary test
StringUtils.randomString(-1);
}
@Test
public void testZeroLengthRandomString() {
// Zero length string test
String result = StringUtils.randomString(0);
assertEquals("", result);
}
} }