From 317e990ed206b854cc101cf07d3bcb9a8fbf4bde Mon Sep 17 00:00:00 2001 From: ysq Date: Sun, 14 Sep 2025 23:26:21 +0800 Subject: [PATCH] feat: upgrade to v0.4.10 --- Cargo.toml | 2 +- README.md | 4 ++-- README_CN.md | 4 ++-- .../event_parser/protocols/pumpfun/parser.rs | 18 ++++++++++++++++++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 85c1e1f..d9ac696 100755 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "solana-streamer-sdk" -version = "0.4.9" +version = "0.4.10" edition = "2021" authors = ["William ", "sgxiang ", "wei <1415121722@qq.com>"] repository = "https://github.com/0xfnzero/solana-streamer" diff --git a/README.md b/README.md index d787ac8..cabc47e 100755 --- a/README.md +++ b/README.md @@ -108,14 +108,14 @@ Add the dependency to your `Cargo.toml`: ```toml # Add to your Cargo.toml -solana-streamer-sdk = { path = "./solana-streamer", version = "0.4.9" } +solana-streamer-sdk = { path = "./solana-streamer", version = "0.4.10" } ``` ### Use crates.io ```toml # Add to your Cargo.toml -solana-streamer-sdk = "0.4.9" +solana-streamer-sdk = "0.4.10" ``` ## ⚙️ Configuration System diff --git a/README_CN.md b/README_CN.md index 035c6fb..d421481 100644 --- a/README_CN.md +++ b/README_CN.md @@ -107,14 +107,14 @@ git clone https://github.com/0xfnzero/solana-streamer ```toml # 添加到您的 Cargo.toml -solana-streamer-sdk = { path = "./solana-streamer", version = "0.4.9" } +solana-streamer-sdk = { path = "./solana-streamer", version = "0.4.10" } ``` ### 使用 crates.io ```toml # 添加到您的 Cargo.toml -solana-streamer-sdk = "0.4.9" +solana-streamer-sdk = "0.4.10" ``` ## ⚙️ 配置系统 diff --git a/src/streaming/event_parser/protocols/pumpfun/parser.rs b/src/streaming/event_parser/protocols/pumpfun/parser.rs index 58e1a0f..9f81879 100755 --- a/src/streaming/event_parser/protocols/pumpfun/parser.rs +++ b/src/streaming/event_parser/protocols/pumpfun/parser.rs @@ -105,16 +105,34 @@ fn parse_create_token_instruction( return None; } let mut offset = 0; + if offset + 4 > data.len() { + return None; + } let name_len = u32::from_le_bytes(data[offset..offset + 4].try_into().unwrap()) as usize; offset += 4; + if offset + name_len > data.len() { + return None; + } let name = String::from_utf8_lossy(&data[offset..offset + name_len]); offset += name_len; + if offset + 4 > data.len() { + return None; + } let symbol_len = u32::from_le_bytes(data[offset..offset + 4].try_into().unwrap()) as usize; offset += 4; + if offset + symbol_len > data.len() { + return None; + } let symbol = String::from_utf8_lossy(&data[offset..offset + symbol_len]); offset += symbol_len; + if offset + 4 > data.len() { + return None; + } let uri_len = u32::from_le_bytes(data[offset..offset + 4].try_into().unwrap()) as usize; offset += 4; + if offset + uri_len > data.len() { + return None; + } let uri = String::from_utf8_lossy(&data[offset..offset + uri_len]); offset += uri_len; let creator = if offset + 32 <= data.len() {