Skip to content

Commit 5eb0ec9

Browse files
liangyepianzhouTechnoboy-
authored andcommitted
[fix][sec] Add a check for the input time value (#22023)
1 parent 72e9bab commit 5eb0ec9

File tree

22 files changed

+43
-2
lines changed

22 files changed

+43
-2
lines changed

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/ManagedLedgerConfig.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ public int getMinimumRolloverTimeMs() {
170170
* the time unit
171171
*/
172172
public void setMinimumRolloverTime(int minimumRolloverTime, TimeUnit unit) {
173+
checkArgument(minimumRolloverTime >= 0);
173174
this.minimumRolloverTimeMs = (int) unit.toMillis(minimumRolloverTime);
174175
checkArgument(maximumRolloverTimeMs >= minimumRolloverTimeMs,
175176
"Minimum rollover time needs to be less than maximum rollover time");
@@ -195,6 +196,7 @@ public long getMaximumRolloverTimeMs() {
195196
* the time unit
196197
*/
197198
public void setMaximumRolloverTime(int maximumRolloverTime, TimeUnit unit) {
199+
checkArgument(maximumRolloverTime >= 0);
198200
this.maximumRolloverTimeMs = unit.toMillis(maximumRolloverTime);
199201
checkArgument(maximumRolloverTimeMs >= minimumRolloverTimeMs,
200202
"Maximum rollover time needs to be greater than minimum rollover time");
@@ -411,7 +413,8 @@ public ManagedLedgerConfig setThrottleMarkDelete(double throttleMarkDelete) {
411413
* time unit for retention time
412414
*/
413415
public ManagedLedgerConfig setRetentionTime(int retentionTime, TimeUnit unit) {
414-
this.retentionTimeMs = unit.toMillis(retentionTime);
416+
checkArgument(retentionTime >= -1, "The retention time should be -1, 0 or value > 0");
417+
this.retentionTimeMs = retentionTime != -1 ? unit.toMillis(retentionTime) : -1;
415418
return this;
416419
}
417420

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerFactoryMBeanImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.apache.bookkeeper.mledger.impl;
2020

21+
import static com.google.common.base.Preconditions.checkArgument;
2122
import java.util.concurrent.TimeUnit;
2223
import java.util.concurrent.atomic.LongAdder;
2324
import org.apache.bookkeeper.mledger.ManagedLedgerFactoryMXBean;
@@ -41,6 +42,7 @@ public ManagedLedgerFactoryMBeanImpl(ManagedLedgerFactoryImpl factory) throws Ex
4142
}
4243

4344
public void refreshStats(long period, TimeUnit unit) {
45+
checkArgument(period >= 0);
4446
double seconds = unit.toMillis(period) / 1000.0;
4547

4648
if (seconds <= 0.0) {

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerMBeanImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.apache.bookkeeper.mledger.impl;
2020

21+
import static com.google.common.base.Preconditions.checkArgument;
2122
import java.util.concurrent.TimeUnit;
2223
import java.util.concurrent.atomic.LongAdder;
2324
import org.apache.bookkeeper.mledger.ManagedCursor;
@@ -63,6 +64,7 @@ public ManagedLedgerMBeanImpl(ManagedLedgerImpl managedLedger) {
6364
}
6465

6566
public void refreshStats(long period, TimeUnit unit) {
67+
checkArgument(period >= 0);
6668
double seconds = unit.toMillis(period) / 1000.0;
6769
if (seconds <= 0.0) {
6870
// skip refreshing stats

pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/DimensionStats.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.apache.pulsar.broker.stats;
2020

21+
import static com.google.common.base.Preconditions.checkArgument;
2122
import static io.prometheus.client.CollectorRegistry.defaultRegistry;
2223
import io.prometheus.client.Collector;
2324
import io.prometheus.client.Summary;
@@ -70,6 +71,7 @@ public DimensionStats(String name, long updateDurationInSec) {
7071
}
7172

7273
public void recordDimensionTimeValue(long latency, TimeUnit unit) {
74+
checkArgument(latency >= 0);
7375
summary.observe(unit.toMillis(latency));
7476
}
7577

pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/metrics/LongAdderCounter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.apache.pulsar.broker.stats.prometheus.metrics;
2020

21+
import static com.google.common.base.Preconditions.checkArgument;
2122
import java.util.concurrent.TimeUnit;
2223
import java.util.concurrent.atomic.LongAdder;
2324
import org.apache.bookkeeper.stats.Counter;
@@ -57,6 +58,7 @@ public void addCount(long delta) {
5758

5859
@Override
5960
public void addLatency(long eventLatency, TimeUnit unit) {
61+
checkArgument(eventLatency >= 0);
6062
long valueMillis = unit.toMillis(eventLatency);
6163
counter.add(valueMillis);
6264
}

pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionRetentionTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,9 @@ private void checkTopicRetentionPolicy(String topicName, RetentionPolicies reten
257257
ManagedLedgerConfig config = pulsar.getBrokerService()
258258
.getManagedLedgerConfig(TopicName.get(topicName)).get();
259259
Assert.assertEquals(config.getRetentionSizeInMB(), retentionPolicies.getRetentionSizeInMB());
260-
Assert.assertEquals(config.getRetentionTimeMillis(),retentionPolicies.getRetentionTimeInMinutes() * 60000L);
260+
Assert.assertEquals(config.getRetentionTimeMillis(), retentionPolicies.getRetentionTimeInMinutes() < 0
261+
? retentionPolicies.getRetentionTimeInMinutes()
262+
: retentionPolicies.getRetentionTimeInMinutes() * 60000L);
261263
}
262264

263265
private void testCompactionCursorRetention(String topic) throws Exception {

pulsar-client-1x-base/pulsar-client-1x/src/main/java/org/apache/pulsar/client/api/ClientConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ public ClientConfiguration setServiceUrl(String serviceUrl) {
368368
* @param unit the time unit in which the duration is defined
369369
*/
370370
public void setConnectionTimeout(int duration, TimeUnit unit) {
371+
checkArgument(duration >= 0);
371372
confData.setConnectionTimeoutMs((int) unit.toMillis(duration));
372373
}
373374

pulsar-client-1x-base/pulsar-client-1x/src/main/java/org/apache/pulsar/client/api/ConsumerConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public long getAckTimeoutMillis() {
6969
* @return {@link ConsumerConfiguration}
7070
*/
7171
public ConsumerConfiguration setAckTimeout(long ackTimeout, TimeUnit timeUnit) {
72+
checkArgument(ackTimeout >= 0);
7273
long ackTimeoutMillis = timeUnit.toMillis(ackTimeout);
7374
checkArgument(ackTimeoutMillis >= minAckTimeoutMillis,
7475
"Ack timeout should be should be greater than " + minAckTimeoutMillis + " ms");

pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.apache.pulsar.client.admin.internal;
2020

21+
import static com.google.common.base.Preconditions.checkArgument;
2122
import java.util.Map;
2223
import java.util.Set;
2324
import java.util.concurrent.TimeUnit;
@@ -200,18 +201,21 @@ public PulsarAdminBuilder tlsProtocols(Set<String> tlsProtocols) {
200201

201202
@Override
202203
public PulsarAdminBuilder connectionTimeout(int connectionTimeout, TimeUnit connectionTimeoutUnit) {
204+
checkArgument(connectionTimeout >= 0);
203205
this.conf.setConnectionTimeoutMs((int) connectionTimeoutUnit.toMillis(connectionTimeout));
204206
return this;
205207
}
206208

207209
@Override
208210
public PulsarAdminBuilder readTimeout(int readTimeout, TimeUnit readTimeoutUnit) {
211+
checkArgument(readTimeout >= 0);
209212
this.conf.setReadTimeoutMs((int) readTimeoutUnit.toMillis(readTimeout));
210213
return this;
211214
}
212215

213216
@Override
214217
public PulsarAdminBuilder requestTimeout(int requestTimeout, TimeUnit requestTimeoutUnit) {
218+
checkArgument(requestTimeout >= 0);
215219
this.conf.setRequestTimeoutMs((int) requestTimeoutUnit.toMillis(requestTimeout));
216220
return this;
217221
}

pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TransactionsImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ public TransactionPendingAckStats getPendingAckStats(String topic, String subNam
168168
@Override
169169
public CompletableFuture<Map<String, TransactionMetadata>> getSlowTransactionsByCoordinatorIdAsync(
170170
Integer coordinatorId, long timeout, TimeUnit timeUnit) {
171+
checkArgument(timeout >= 0);
171172
WebTarget path = adminV3Transactions.path("slowTransactions");
172173
path = path.path(timeUnit.toMillis(timeout) + "");
173174
if (coordinatorId != null) {

0 commit comments

Comments
 (0)