Skip to content

[Chore] Merge release/4.2.1 to main#1920

Merged
JiahuiWho merged 6 commits intomainfrom
merge-4.2.1-to-main
Apr 8, 2026
Merged

[Chore] Merge release/4.2.1 to main#1920
JiahuiWho merged 6 commits intomainfrom
merge-4.2.1-to-main

Conversation

@JiahuiWho
Copy link
Copy Markdown
Contributor

Description

Merge release/4.2.1 to main

Context

Git flow

Testing

  • ./gradlew test

Documentation

N/A

Known limitations

N/A

### Description

Merge `main` to `develop`

### Context

Git flow

### Testing

- `./gradlew test`

### Documentation

N/A

### Known limitations

N/A
### Description

Add private network validation to
`ClientDomainHelper.fetchSigningKeyFromClientDomain()` to block SSRF via
user-controlled `client_domain` parameter

### Context

- TODO: describe why this change was made

### Testing

- `./gradlew test`
- New unit tests for all blocked address ranges (loopback, localhost,
link-local, 10.x, 172.16.x, 192.168.x)

### Documentation

N/A

### Known limitations

N/A
#1916)

### Description
                                          
Verify the transaction's creator matches the caller's JWT token before
resolving customer data

### Context

An authenticated user could access or modify any customer's KYC data by
providing another user's `transaction_id` in SEP-12 GET/PUT
`/sep12/customer` requests.

### Testing

- `./gradlew test`
- Added test for mismatched/null/matching creator 

### Documentation

N/A

### Known limitations

N/A
…int (#1917)

### Description

- Add 50KB size limit on `transaction` field in SEP-10 POST `/auth`
before XDR parsing
- Reduce existing SEP-45 `authorization_entries` size limit from 100KB
to 50KB

### Context

Valid SEP-10/SEP-45 auth payloads are small (a few KB). Limiting input
size before XDR deserialization prevents unnecessary memory allocation
from oversized payloads.

### Testing

- `./gradlew test`

### Documentation

N/A

### Known limitations

N/A
### Description

This bumps the version to 4.2.1

### Context

Patch release

### Testing

- `./gradlew test`

### Documentation

N/A

### Known limitations

N/A
… range (#1918)

### Description

- Fix MEMO_ID validation to support the full Stellar uint64 range (0 to
18,446,744,073,709,551,615)
- Replace Long.parseLong and Long.longValue() with BigInteger for
MEMO_ID parsing and conversion
- Consolidate memo ID creation into a shared MemoHelper.makeMemoId()
method

### Context

Partner reported that SEP-24 requests with refund_memo
11872666534918305457 were rejected with "Invalid Memo" due to this
refund_memo value above Java's `Long.MAX_VALUE
`(9,223,372,036,854,775,807)

Stellar protocol defines `MEMO_ID` as uint64, but the platform was using
Java's signed long for parsing, which only supports half the range.

The same issue existed in SEP-10 memo validation, `xdrMemoToString`
(used by the payment observer for memo matching), and muxed account memo
handling in `DefaultPaymentListener`

### Testing

  - ./gradlew test
  - Added new unit tests to cover all cases

### Documentation

N/A

### Known limitations

N/A
@JiahuiWho JiahuiWho marked this pull request as ready for review April 8, 2026 22:06
Copy link
Copy Markdown
Contributor

@marwen-abid marwen-abid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 🚨 Please make sure to Merge Pull Request, not squash.
    LGTM

@JiahuiWho JiahuiWho merged commit 7efab9e into main Apr 8, 2026
17 checks passed
@JiahuiWho JiahuiWho deleted the merge-4.2.1-to-main branch April 8, 2026 22:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants