From 7fbc35db183651f2f26cd7e56eebc9a3ca5f369e Mon Sep 17 00:00:00 2001 From: Jonas Theis <4181434+jonastheis@users.noreply.github.com> Date: Thu, 5 Jun 2025 17:20:54 +0800 Subject: [PATCH] fix(blob clients): nil pointer with unexpected blob client response (#1195) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix nil pointer with unexpected blob client response * chore: auto version bump [bot] --- params/version.go | 2 +- rollup/da_syncer/blob_client/blob_scan_client.go | 6 ++++++ rollup/da_syncer/blob_client/block_native_client.go | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/params/version.go b/params/version.go index dd5c54baa4..7a5726b9fd 100644 --- a/params/version.go +++ b/params/version.go @@ -24,7 +24,7 @@ import ( const ( VersionMajor = 5 // Major version component of the current release VersionMinor = 8 // Minor version component of the current release - VersionPatch = 51 // Patch version component of the current release + VersionPatch = 52 // Patch version component of the current release VersionMeta = "mainnet" // Version metadata to append to the version string ) diff --git a/rollup/da_syncer/blob_client/blob_scan_client.go b/rollup/da_syncer/blob_client/blob_scan_client.go index 75fe4fdfbd..c4756ed695 100644 --- a/rollup/da_syncer/blob_client/blob_scan_client.go +++ b/rollup/da_syncer/blob_client/blob_scan_client.go @@ -64,6 +64,12 @@ func (c *BlobScanClient) GetBlobByVersionedHashAndBlockTime(ctx context.Context, if err != nil { return nil, fmt.Errorf("failed to decode result into struct, err: %w", err) } + + // check that blob data is not empty + if len(result.Data) < 2 { + return nil, fmt.Errorf("blob data is too short to be valid, expected at least 2 characters, got: %s, versioned hash: %s", result.Data, versionedHash.String()) + } + blobBytes, err := hex.DecodeString(result.Data[2:]) if err != nil { return nil, fmt.Errorf("failed to decode data to bytes, err: %w", err) diff --git a/rollup/da_syncer/blob_client/block_native_client.go b/rollup/da_syncer/blob_client/block_native_client.go index d96f54a3cf..b3ec31ba62 100644 --- a/rollup/da_syncer/blob_client/block_native_client.go +++ b/rollup/da_syncer/blob_client/block_native_client.go @@ -59,6 +59,12 @@ func (c *BlockNativeClient) GetBlobByVersionedHashAndBlockTime(ctx context.Conte if err != nil { return nil, fmt.Errorf("failed to decode result into struct, err: %w", err) } + + // check that blob data is not empty + if len(result.Blob.Data) < 2 { + return nil, fmt.Errorf("blob data is too short to be valid, expected at least 2 characters, got: %s, versioned hash: %s", result.Blob.Data, versionedHash.String()) + } + blobBytes, err := hex.DecodeString(result.Blob.Data[2:]) if err != nil { return nil, fmt.Errorf("failed to decode data to bytes, err: %w", err)