Skip to content

Commit 5f88acc

Browse files
committed
chore: apply patch
1 parent 1119cf7 commit 5f88acc

File tree

5 files changed

+44
-11
lines changed

5 files changed

+44
-11
lines changed

core/contractsapi/attestation_decoding.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,13 +546,19 @@ func ParseBooleanResult(payload []byte) (result bool, actionID uint16, err error
546546
return false, 0, fmt.Errorf("payload too short for data provider length")
547547
}
548548
dataProviderLen := readUint32BE(payload, offset)
549+
if offset+4+int(dataProviderLen) > len(payload) {
550+
return false, 0, fmt.Errorf("payload too short for data provider content")
551+
}
549552
offset += 4 + int(dataProviderLen)
550553

551554
// 5. Skip stream ID (length-prefixed)
552555
if offset+4 > len(payload) {
553556
return false, 0, fmt.Errorf("payload too short for stream ID length")
554557
}
555558
streamIDLen := readUint32BE(payload, offset)
559+
if offset+4+int(streamIDLen) > len(payload) {
560+
return false, 0, fmt.Errorf("payload too short for stream ID content")
561+
}
556562
offset += 4 + int(streamIDLen)
557563

558564
// 6. Read action ID (2 bytes)
@@ -572,6 +578,9 @@ func ParseBooleanResult(payload []byte) (result bool, actionID uint16, err error
572578
return false, actionID, fmt.Errorf("payload too short for arguments length")
573579
}
574580
argsLen := readUint32BE(payload, offset)
581+
if offset+4+int(argsLen) > len(payload) {
582+
return false, actionID, fmt.Errorf("payload too short for arguments content")
583+
}
575584
offset += 4 + int(argsLen)
576585

577586
// 8. Read result (length-prefixed)

core/contractsapi/order_book_markets_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ func TestEncodeQueryComponents_InvalidAddress(t *testing.T) {
9393
},
9494
{
9595
name: "Missing 0x prefix",
96-
dataProvider: "1111111111111111111111111111111111111111",
97-
expectError: "data_provider must be 42 characters",
96+
dataProvider: "xx1111111111111111111111111111111111111111",
97+
expectError: "data_provider must be 0x-prefixed",
9898
},
9999
}
100100

core/contractsapi/query_components.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,22 @@ import (
1212
var QueryComponentsABI abi.Arguments
1313

1414
func init() {
15-
addressType, _ := abi.NewType("address", "", nil)
16-
bytes32Type, _ := abi.NewType("bytes32", "", nil)
17-
stringType, _ := abi.NewType("string", "", nil)
18-
bytesType, _ := abi.NewType("bytes", "", nil)
15+
addressType, err := abi.NewType("address", "", nil)
16+
if err != nil {
17+
panic(fmt.Sprintf("failed to create address ABI type: %v", err))
18+
}
19+
bytes32Type, err := abi.NewType("bytes32", "", nil)
20+
if err != nil {
21+
panic(fmt.Sprintf("failed to create bytes32 ABI type: %v", err))
22+
}
23+
stringType, err := abi.NewType("string", "", nil)
24+
if err != nil {
25+
panic(fmt.Sprintf("failed to create string ABI type: %v", err))
26+
}
27+
bytesType, err := abi.NewType("bytes", "", nil)
28+
if err != nil {
29+
panic(fmt.Sprintf("failed to create bytes ABI type: %v", err))
30+
}
1931

2032
QueryComponentsABI = abi.Arguments{
2133
{Type: addressType, Name: "data_provider"},
@@ -103,7 +115,8 @@ func DecodeQueryComponents(encoded []byte) (dataProvider, streamID, actionID str
103115
return "", "", "", nil, fmt.Errorf("expected [32]byte for stream_id, got %T", unpacked[1])
104116
}
105117
// Find the actual length by looking for trailing zeros
106-
sidLen := 32
118+
// Default to 0 so all-zero bytes yields empty string
119+
sidLen := 0
107120
for i := 31; i >= 0; i-- {
108121
if sidBytes[i] != 0 {
109122
sidLen = i + 1

core/types/order_book_types_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package types
22

33
import (
4+
"fmt"
45
"testing"
56
"time"
67

@@ -267,7 +268,7 @@ func TestCreateMarketInput_Validate_ValidMaxSpreadRange(t *testing.T) {
267268
validSpreads := []int{1, 5, 10, 25, 50}
268269

269270
for _, spread := range validSpreads {
270-
t.Run(string(rune(spread+'0')), func(t *testing.T) {
271+
t.Run(fmt.Sprintf("%d", spread), func(t *testing.T) {
271272
input := CreateMarketInput{
272273
Bridge: "hoodi_tt2",
273274
QueryComponents: createValidQueryComponents(128),
@@ -322,7 +323,7 @@ func TestCreateMarketInput_Validate_ValidMinOrderSize(t *testing.T) {
322323
validSizes := []int64{1, 10, 100, 1000, 1000000}
323324

324325
for _, size := range validSizes {
325-
t.Run(string(rune(size)), func(t *testing.T) {
326+
t.Run(fmt.Sprintf("%d", size), func(t *testing.T) {
326327
input := CreateMarketInput{
327328
Bridge: "hoodi_tt2",
328329
QueryComponents: createValidQueryComponents(128),

tests/integration/batch_operations_test.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ func TestBatchOperations(t *testing.T) {
2929

3030
deployerWallet, err := kwilcrypto.Secp256k1PrivateKeyFromHex(AnonWalletPK)
3131
require.NoError(t, err, "failed to parse anon wallet private key")
32-
tnClient, err := tnclient.NewClient(ctx, TestKwilProvider, tnclient.WithSigner(auth.GetUserSigner(deployerWallet)))
33-
require.NoError(t, err, "failed to create client")
3432

3533
authorizeWalletToDeployStreams(t, ctx, fixture, deployerWallet)
3634

3735
t.Run("TestSequentialSmallBatches", func(t *testing.T) {
36+
// Create fresh client for this subtest to ensure clean nonce management
37+
tnClient, err := tnclient.NewClient(ctx, TestKwilProvider, tnclient.WithSigner(auth.GetUserSigner(deployerWallet)))
38+
require.NoError(t, err, "failed to create client")
39+
3840
streamId := util.GenerateStreamId("test-sequential-small")
3941
streamLocator := tnClient.OwnStreamLocator(streamId)
4042

@@ -107,6 +109,10 @@ func TestBatchOperations(t *testing.T) {
107109
})
108110

109111
t.Run("TestSequentialLargeBatches", func(t *testing.T) {
112+
// Create fresh client for this subtest to ensure clean nonce management
113+
tnClient, err := tnclient.NewClient(ctx, TestKwilProvider, tnclient.WithSigner(auth.GetUserSigner(deployerWallet)))
114+
require.NoError(t, err, "failed to create client")
115+
110116
streamId := util.GenerateStreamId("test-sequential-large")
111117
streamLocator := tnClient.OwnStreamLocator(streamId)
112118

@@ -184,6 +190,10 @@ func TestBatchOperations(t *testing.T) {
184190
t.Skip("Skipping flaky rapid single record inserts test in CI")
185191
}
186192

193+
// Create fresh client for this subtest to ensure clean nonce management
194+
tnClient, err := tnclient.NewClient(ctx, TestKwilProvider, tnclient.WithSigner(auth.GetUserSigner(deployerWallet)))
195+
require.NoError(t, err, "failed to create client")
196+
187197
streamId := util.GenerateStreamId("test-rapid-singles")
188198
streamLocator := tnClient.OwnStreamLocator(streamId)
189199

0 commit comments

Comments
 (0)