Skip to content

Commit 863f0d8

Browse files
committed
[KNOWAGE-9595] fix bad decoding for trailing "%"
1 parent 8a05fc9 commit 863f0d8

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

knowage-core/src/main/java/it/eng/spagobi/analiticalmodel/document/handlers/DriversValidationAPI.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import it.eng.spagobi.commons.validation.SpagoBIValidationImpl;
3131
import it.eng.spagobi.tools.catalogue.metadata.IDrivableBIResource;
3232
import it.eng.spagobi.utilities.objects.Couple;
33+
import org.owasp.esapi.errors.EncodingException;
3334

3435
public class DriversValidationAPI {
3536

@@ -76,7 +77,7 @@ public List getParametersErrors(IDrivableBIResource object, String role, Abstrac
7677
throws Exception {
7778
logger.debug("IN");
7879
List toReturn = new ArrayList();
79-
List drivers = object.getDrivers();
80+
List drivers = object.getDrivers();
8081
if (drivers.isEmpty()) {
8182
return toReturn;
8283
}
@@ -360,7 +361,12 @@ private List getValidationErrorsOnValuesByLovResult(String lovResult, AbstractDr
360361
value = "%";
361362
} else {
362363
Encoder encoder = OwaspDefaultEncoderFactory.getInstance().getEncoder();
363-
value = encoder.decodeFromURL(val);
364+
try {
365+
value = encoder.decodeFromURL(val);
366+
} catch (EncodingException ex) {
367+
logger.error("Error decoding value from URL encoding: " + val, ex);
368+
value = val;
369+
}
364370
}
365371
String description = null;
366372
if (value.equals("")) {

knowage-core/src/main/java/it/eng/spagobi/api/v2/DocumentExecutionResource.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,12 @@ protected JSONObject decodeRequestParameters(JSONObject requestValParams)
10461046
String value = String.valueOf(valueObj);
10471047
// if (!value.equals("%7B%3B%7B") && !value.equalsIgnoreCase("%")) {
10481048
if (!value.equals("") && !value.equalsIgnoreCase("%")) {
1049-
toReturn.put(key, encoder.decodeFromURL(value.replaceAll("%", "%25").replace("+", "%2B")));
1049+
try {
1050+
toReturn.put(key, encoder.decodeFromURL(value.replaceAll("%", "%25").replace("+", "%2B")));
1051+
} catch (EncodingException e) {
1052+
LOGGER.debug("An error occured while decoding parameter with value[" + value + "]" + e);
1053+
toReturn.put(key, value);
1054+
}
10501055
} else {
10511056
toReturn.put(key, value); // uses the original value for list and %
10521057
}

0 commit comments

Comments
 (0)