Skip to content

Commit 45710c2

Browse files
authored
Merge pull request #369 from ChargeTimeEU/fix_issues_reported_by_scanners
Fix security and quality issues found by scanners
2 parents 58f020a + 7fc988f commit 45710c2

File tree

15 files changed

+49
-10
lines changed

15 files changed

+49
-10
lines changed

OCPP-J/src/main/java/eu/chargetime/ocpp/Draft_HttpHealthCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Draft_HttpHealthCheck extends Draft {
2222

2323
static Boolean isHttp(ClientHandshake handshakedata) {
2424
String upgradeField = handshakedata.getFieldValue("Upgrade");
25-
return upgradeField == null || upgradeField == "";
25+
return upgradeField == null || upgradeField.isEmpty();
2626
}
2727

2828
@Override

OCPP-J/src/main/java/eu/chargetime/ocpp/WebSocketListener.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,11 @@ public void close() {
271271
server.stop();
272272
} catch (InterruptedException ex) {
273273
logger.error("Failed to close listener", ex);
274+
// restore thread interrupted state
275+
Thread.currentThread().interrupt();
274276
}
277+
// restore thread interrupted state
278+
Thread.currentThread().interrupt();
275279
} finally {
276280
closed = true;
277281
server = null;

ocpp-common/src/main/java/eu/chargetime/ocpp/Communicator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,10 @@ public void run() {
363363
Thread.sleep(DELAY_IN_MILLISECONDS);
364364
if (!hasFailed()) popRetryMessage();
365365
}
366+
} catch (InterruptedException ex) {
367+
logger.warn("RetryRunner::run() interrupted", ex);
368+
// restore thread interrupted state
369+
Thread.currentThread().interrupt();
366370
} catch (Exception ex) {
367371
logger.warn("RetryRunner::run() failed", ex);
368372
}

ocpp-common/src/main/java/eu/chargetime/ocpp/utilities/SugarUtil.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ of this software and associated documentation files (the "Software"), to deal
3131
import java.io.IOException;
3232
import java.io.StringWriter;
3333
import java.time.ZonedDateTime;
34+
import javax.xml.XMLConstants;
3435
import javax.xml.soap.SOAPException;
3536
import javax.xml.soap.SOAPMessage;
3637
import javax.xml.transform.Transformer;
@@ -50,6 +51,9 @@ public static String docToString(Document doc) {
5051
try {
5152
StringWriter sw = new StringWriter();
5253
TransformerFactory tf = TransformerFactory.newInstance();
54+
// disable access to external entities to prevent XXE attacks
55+
tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
56+
tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
5357
Transformer transformer = tf.newTransformer();
5458
transformer.transform(new DOMSource(doc), new StreamResult(sw));
5559
return sw.toString();

ocpp-v1_6-example/json-client-implementation/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>2.5.6</version>
8+
<version>3.2.0</version>
99
<relativePath/> <!-- lookup parent from repository -->
1010
</parent>
1111
<groupId>eu.chargetime.ocpp</groupId>

ocpp-v1_6-example/json-client-implementation/src/test/java/eu/chargetime/ocpp/jsonclientimplementation/ocpphandler/OCPPHandlerTest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,13 @@ public void testOCPPAuthorizeHandler() {
4747
.toCompletableFuture().get();
4848
assertTrue(true);
4949
assertEquals(AuthorizationStatus.Accepted,authorizeConfirmation.getIdTagInfo().getStatus());
50-
} catch (OccurenceConstraintException | UnsupportedFeatureException
51-
| ExecutionException | InterruptedException e) {
50+
} catch (InterruptedException e) {
51+
log.error("Thread interrupted: " + e);
52+
// restore thread interrupted state
53+
Thread.currentThread().interrupt();
54+
log.error("Test will fail");
55+
assertTrue(false);
56+
} catch (OccurenceConstraintException | UnsupportedFeatureException | ExecutionException e) {
5257
log.error("Exception occurred: " + e);
5358
log.error("Test will fail");
5459
assertTrue(false);

ocpp-v1_6-example/json_server_example/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>2.5.6</version>
8+
<version>3.2.0</version>
99
<relativePath/> <!-- lookup parent from repository -->
1010
</parent>
1111
<groupId>eu.chargetime.ocpp</groupId>

ocpp-v1_6-test/src/main/java/eu/chargetime/ocpp/test/SOAPTestClient.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,9 @@ private void openWS() {
143143
try {
144144
soapMessage = transmitter.relay(message.getMessage()).get();
145145
} catch (InterruptedException e) {
146-
logger.warn("openWS() transmitter.relay failed", e);
146+
logger.warn("openWS() transmitter.relay interrupted", e);
147+
// restore thread interrupted state
148+
Thread.currentThread().interrupt();
147149
} catch (ExecutionException e) {
148150
logger.warn("openWS() transmitter.relay failed", e);
149151
}

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/SOAPClient.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ private void openWS() {
150150
try {
151151
soapMessage = transmitter.relay(message.getMessage()).get();
152152
} catch (InterruptedException e) {
153-
logger.warn("openWS() transmitter.relay failed", e);
153+
logger.warn("openWS() transmitter.relay interrupted", e);
154+
// restore thread interrupted state
155+
Thread.currentThread().interrupt();
154156
} catch (ExecutionException e) {
155157
logger.warn("openWS() transmitter.relay failed", e);
156158
}

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebServiceListener.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,11 @@ public void timeout() {
146146
SOAPMessage confirmation = null;
147147
try {
148148
confirmation = chargeBoxes.get(identity).relay(message).get();
149-
} catch (InterruptedException | ExecutionException e) {
149+
} catch (InterruptedException e) {
150+
logger.warn("incomingRequest() chargeBoxes.relay interrupted", e);
151+
// restore thread interrupted state
152+
Thread.currentThread().interrupt();
153+
} catch (ExecutionException e) {
150154
logger.warn("incomingRequest() chargeBoxes.relay failed", e);
151155
}
152156

0 commit comments

Comments
 (0)