Skip to content

Commit d5f5373

Browse files
author
Chanaka Balasooriya
committed
Fix vulnerability issues by upgrading/replacing some dependencies and upgrading java version to 21
1 parent 822ae09 commit d5f5373

10 files changed

Lines changed: 49 additions & 58 deletions

File tree

cve-suppressions.xml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd">
3-
<suppress>
4-
<filePath regex="true">spring-.*-5\.3\.23\.jar</filePath>
5-
<cve>CVE-2016-1000027</cve>
6-
</suppress>
2+
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
3+
<suppress>
4+
<packageUrl regex="true">^pkg:maven/org\.glassfish/jakarta\.el@.*$</packageUrl>
5+
<cve>CVE-2023-5763</cve>
6+
</suppress>
7+
<suppress>
8+
<packageUrl regex="true">^pkg:maven/org\.glassfish/jakarta\.el@.*$</packageUrl>
9+
<cve>CVE-2024-9329</cve>
10+
</suppress>
711
</suppressions>

pom.xml

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@
5959

6060
<properties>
6161
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
62-
<maven.compiler.source>8</maven.compiler.source>
63-
<maven.compiler.target>8</maven.compiler.target>
64-
<spring.version>5.3.23</spring.version>
65-
<postgresql.version>42.5.1</postgresql.version>
62+
<maven.compiler.source>21</maven.compiler.source>
63+
<maven.compiler.target>21</maven.compiler.target>
64+
<spring.version>6.2.0</spring.version>
65+
<postgresql.version>42.7.4</postgresql.version>
6666
<dependency-check-maven.version>7.2.1</dependency-check-maven.version>
6767
</properties>
6868

@@ -83,31 +83,21 @@
8383
<version>${postgresql.version}</version>
8484
</dependency>
8585
<dependency>
86-
<groupId>commons-lang</groupId>
87-
<artifactId>commons-lang</artifactId>
88-
<version>2.6</version>
89-
</dependency>
90-
<dependency>
91-
<groupId>commons-beanutils</groupId>
92-
<artifactId>commons-beanutils</artifactId>
93-
<version>1.9.4</version>
94-
<exclusions>
95-
<exclusion>
96-
<groupId>commons-logging</groupId>
97-
<artifactId>commons-logging</artifactId>
98-
</exclusion>
99-
</exclusions>
86+
<groupId>org.apache.commons</groupId>
87+
<artifactId>commons-lang3</artifactId>
88+
<version>3.17.0</version>
10089
</dependency>
10190
<dependency>
10291
<groupId>org.hibernate.validator</groupId>
10392
<artifactId>hibernate-validator</artifactId>
104-
<version>6.1.5.Final</version>
93+
<version>9.0.0.Beta3</version>
10594
</dependency>
10695
<dependency>
10796
<groupId>org.glassfish</groupId>
108-
<artifactId>javax.el</artifactId>
109-
<version>3.0.1-b08</version>
97+
<artifactId>jakarta.el</artifactId>
98+
<version>5.0.0-M1</version>
11099
</dependency>
100+
111101
<dependency>
112102
<groupId>org.reflections</groupId>
113103
<artifactId>reflections</artifactId>
@@ -117,7 +107,7 @@
117107
<dependency>
118108
<groupId>com.google.guava</groupId>
119109
<artifactId>guava</artifactId>
120-
<version>30.1-jre</version>
110+
<version>33.3.1-jre</version>
121111
</dependency>
122112
<dependency>
123113
<groupId>javax.persistence</groupId>
@@ -143,6 +133,11 @@
143133
<version>${spring.version}</version>
144134
<scope>test</scope>
145135
</dependency>
136+
<dependency>
137+
<groupId>org.springframework</groupId>
138+
<artifactId>spring-beans</artifactId>
139+
<version>${spring.version}</version>
140+
</dependency>
146141
<dependency>
147142
<groupId>org.springframework</groupId>
148143
<artifactId>spring-test</artifactId>
@@ -209,7 +204,7 @@
209204
</execution>
210205
</executions>
211206
<configuration>
212-
<failBuildOnAnyVulnerability>true</failBuildOnAnyVulnerability>
207+
<failBuildOnCVSS>0</failBuildOnCVSS>
213208
<suppressionFiles>
214209
<suppressionFile>cve-suppressions.xml</suppressionFile>
215210
</suppressionFiles>
@@ -272,7 +267,7 @@
272267
<plugin>
273268
<groupId>org.jacoco</groupId>
274269
<artifactId>jacoco-maven-plugin</artifactId>
275-
<version>0.8.4</version>
270+
<version>0.8.12</version>
276271
<executions>
277272
<execution>
278273
<id>prepare-agent</id>

src/main/java/org/zalando/sprocwrapper/dsprovider/BitmapShardDataSourceProvider.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.google.common.base.Strings;
44
import com.google.common.collect.Lists;
55
import com.google.common.collect.Sets;
6-
import org.apache.commons.beanutils.BeanUtils;
6+
import org.springframework.beans.BeanWrapperImpl;
77
import org.slf4j.Logger;
88
import org.slf4j.LoggerFactory;
99

@@ -89,18 +89,19 @@ public BitmapShardDataSourceProvider(final Class<? extends DataSource> dataSourc
8989

9090
for (final Entry<String, String> entry : connectionUrls.entrySet()) {
9191
final DataSource ds = dataSourceClass.getDeclaredConstructor().newInstance();
92+
var dsBeanWrapper = new BeanWrapperImpl(ds);
9293
for (final Entry<String, String> prop : commonDataSourceProperties.entrySet()) {
93-
BeanUtils.setProperty(ds, prop.getKey(), prop.getValue());
94+
dsBeanWrapper.setPropertyValue(prop.getKey(), prop.getValue());
9495
}
9596

9697
final String[] parts = entry.getValue().split("\\|");
9798

98-
BeanUtils.setProperty(ds, "jdbcUrl", parts[0]);
99+
dsBeanWrapper.setPropertyValue("jdbcUrl", parts[0]);
99100

100101
if (parts.length > 1) {
101102

102103
// a little bit hacky, because "initSQL" is boneCP-specific
103-
BeanUtils.setProperty(ds, "initSQL", parts[1]);
104+
dsBeanWrapper.setPropertyValue("initSQL", parts[1]);
104105
}
105106

106107
for (int i = 0; i < dataSources.length; i++) {

src/main/java/org/zalando/sprocwrapper/proxy/executors/ValidationExecutorWrapper.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import org.slf4j.LoggerFactory;
77

88
import javax.sql.DataSource;
9-
import javax.validation.ConstraintViolation;
10-
import javax.validation.ConstraintViolationException;
11-
import javax.validation.Validation;
12-
import javax.validation.Validator;
13-
import javax.validation.ValidatorFactory;
9+
import jakarta.validation.ConstraintViolation;
10+
import jakarta.validation.ConstraintViolationException;
11+
import jakarta.validation.Validation;
12+
import jakarta.validation.Validator;
13+
import jakarta.validation.ValidatorFactory;
1414
import java.util.Set;
1515

1616
/**

src/main/java/org/zalando/sprocwrapper/util/NameUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.util.Locale;
66

7-
import static org.apache.commons.lang.StringUtils.splitByCharacterTypeCamelCase;
7+
import static org.apache.commons.lang3.StringUtils.splitByCharacterTypeCamelCase;
88

99
/**
1010
* Static utility methods for naming conventions.

src/main/java/org/zalando/typemapper/core/fieldMapper/DateFieldMapper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.zalando.typemapper.core.fieldMapper;
22

3+
import java.nio.charset.StandardCharsets;
34
import java.sql.Date;
45
import java.sql.SQLException;
56
import java.sql.Timestamp;
@@ -24,7 +25,8 @@ public Object mapField(final String string, final Class<?> clazz) {
2425

2526
Timestamp date = null;
2627
try {
27-
date = postgresJDBCDriverReusedTimestampUtils.toTimestamp(null, string);
28+
date = postgresJDBCDriverReusedTimestampUtils.toTimestamp(null, string.getBytes(
29+
StandardCharsets.UTF_8));
2830
} catch (final SQLException e) {
2931
LOG.error("Invalid date/time string: {}", string, e);
3032
}

src/main/java/org/zalando/typemapper/postgres/PgTypeHelper.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import javax.persistence.Column;
44

55
import com.google.common.base.Optional;
6-
import org.postgresql.core.BaseConnection;
76
import org.postgresql.jdbc.PostgresJDBCDriverReusedTimestampUtils;
87
import org.postgresql.util.PGobject;
98
import org.slf4j.Logger;
@@ -268,7 +267,7 @@ public int compare(final Field a, final Field b) {
268267
for (final Field f : fields) {
269268
final DatabaseFieldDescriptor databaseFieldDescriptor = getDatabaseFieldDescriptor(f);
270269
if (databaseFieldDescriptor != null) {
271-
if (!f.isAccessible()) {
270+
if (!f.canAccess(obj)) {
272271
f.setAccessible(true);
273272
}
274273

@@ -501,17 +500,7 @@ public static String toPgString(Object o, final Connection connection) {
501500
} else {
502501
tmpd = new Timestamp(((Date) o).getTime());
503502
}
504-
505-
if (connection instanceof BaseConnection) {
506-
507-
// if we do have a valid postgresql connection use this one:
508-
final BaseConnection postgresBaseConnection = (BaseConnection) connection;
509-
sb.append(postgresBaseConnection.getTimestampUtils().toString(null, tmpd));
510-
} else {
511-
512-
// no valid postgresql connection - use that one:
513-
sb.append(postgresJDBCDriverReusedTimestampUtils.toString(null, tmpd));
514-
}
503+
sb.append(postgresJDBCDriverReusedTimestampUtils.toString(null, tmpd));
515504
} else if (o instanceof Map) {
516505
final Map<?, ?> map = (Map<?, ?>) o;
517506
sb.append(HStore.serialize(map));

src/test/java/org/zalando/sprocwrapper/SimpleIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import java.util.List;
1818
import java.util.Optional;
1919
import javax.sql.DataSource;
20-
import javax.validation.ConstraintViolationException;
20+
import jakarta.validation.ConstraintViolationException;
2121

2222
import com.google.common.collect.Lists;
2323
import com.google.common.collect.Sets;

src/test/java/org/zalando/sprocwrapper/example/ExampleDomainObjectWithValidation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package org.zalando.sprocwrapper.example;
22

3-
import javax.validation.constraints.Max;
4-
import javax.validation.constraints.Min;
5-
import javax.validation.constraints.NotNull;
3+
import jakarta.validation.constraints.Max;
4+
import jakarta.validation.constraints.Min;
5+
import jakarta.validation.constraints.NotNull;
66

77
import org.zalando.typemapper.annotations.DatabaseField;
88

src/test/java/org/zalando/sprocwrapper/example/ExampleValidationSProcService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.zalando.sprocwrapper.example;
22

3-
import javax.validation.constraints.NotNull;
3+
import jakarta.validation.constraints.NotNull;
44

55
import org.zalando.sprocwrapper.SProcCall;
66
import org.zalando.sprocwrapper.SProcCall.Validate;

0 commit comments

Comments
 (0)