You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by lh...@apache.org on 2024/06/04 10:12:41 UTC
(pulsar) branch master updated: [improve] Validate range of argument before long -> int conversion (#22830)
This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 75293574665 [improve] Validate range of argument before long -> int conversion (#22830)
75293574665 is described below
commit 75293574665809ac6b439e0f20693fc607797f7a
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Tue Jun 4 03:12:33 2024 -0700
[improve] Validate range of argument before long -> int conversion (#22830)
---
.../org/apache/pulsar/broker/admin/impl/TransactionsBase.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TransactionsBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TransactionsBase.java
index 1014c9fe8e3..4fef0802ed4 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TransactionsBase.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/TransactionsBase.java
@@ -564,8 +564,15 @@ public abstract class TransactionsBase extends AdminResource {
protected CompletableFuture<Void> internalAbortTransaction(boolean authoritative, long mostSigBits,
long leastSigBits) {
+
+ if (mostSigBits < 0 || mostSigBits > Integer.MAX_VALUE) {
+ return CompletableFuture.failedFuture(new IllegalArgumentException("mostSigBits out of bounds"));
+ }
+
+ int partitionIdx = (int) mostSigBits;
+
return validateTopicOwnershipAsync(
- SystemTopicNames.TRANSACTION_COORDINATOR_ASSIGN.getPartition((int) mostSigBits), authoritative)
+ SystemTopicNames.TRANSACTION_COORDINATOR_ASSIGN.getPartition(partitionIdx), authoritative)
.thenCompose(__ -> validateSuperUserAccessAsync())
.thenCompose(__ -> pulsar().getTransactionMetadataStoreService()
.endTransaction(new TxnID(mostSigBits, leastSigBits), TxnAction.ABORT_VALUE, false));