Rename string-parsing targets to parse_*
What changed, and why it matters
This commit simply renames two fuzz test files from 'deserialize_address.rs' to 'parse_address.rs' and 'outpoint_string.rs' to 'parse_outpoint.rs'. The actual code inside the files is unchanged. It is a routine cleanup with no security relevance.
No action needed; this is a non-functional rename.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff is a pure rename of two fuzz targets in the rust-bitcoin repository. File contents are byte-for-byte identical after the rename. No library code, APIs, parsing logic, or behavior is modified. The change affects only fuzz target naming conventions.
Changed components
fuzz/fuzz_targets/bitcoin/parse_address.rsfuzz/fuzz_targets/bitcoin/parse_outpoint.rsInspect captured patch +120 / −120
diff --git a/fuzz/fuzz_targets/bitcoin/deserialize_address.rs b/fuzz/fuzz_targets/bitcoin/deserialize_address.rs
deleted file mode 100644
index c862524a..00000000
--- a/fuzz/fuzz_targets/bitcoin/deserialize_address.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-use honggfuzz::fuzz;
-
-fn do_test(data: &[u8]) {
- let data_str = String::from_utf8_lossy(data);
- let addr = match data_str.parse::<bitcoin::address::Address<_>>() {
- Ok(addr) => addr.assume_checked(),
- Err(_) => return,
- };
- assert_eq!(addr.to_string(), data_str);
-}
-
-fn main() {
- loop {
- fuzz!(|data| {
- do_test(data);
- });
- }
-}
-
-#[cfg(all(test, fuzzing))]
-mod tests {
- fn extend_vec_from_hex(hex: &str, out: &mut Vec<u8>) {
- let mut b = 0;
- for (idx, c) in hex.as_bytes().iter().enumerate() {
- b <<= 4;
- match *c {
- b'A'..=b'F' => b |= c - b'A' + 10,
- b'a'..=b'f' => b |= c - b'a' + 10,
- b'0'..=b'9' => b |= c - b'0',
- _ => panic!("Bad hex"),
- }
- if (idx & 1) == 1 {
- out.push(b);
- b = 0;
- }
- }
- }
-
- #[test]
- fn duplicate_crash() {
- let mut a = Vec::new();
- extend_vec_from_hex("00000000", &mut a);
- super::do_test(&a);
- }
-}
diff --git a/fuzz/fuzz_targets/bitcoin/outpoint_string.rs b/fuzz/fuzz_targets/bitcoin/outpoint_string.rs
deleted file mode 100644
index 8d9fffec..00000000
--- a/fuzz/fuzz_targets/bitcoin/outpoint_string.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-use bitcoin::consensus::encode;
-use bitcoin::transaction::OutPoint;
-use honggfuzz::fuzz;
-
-fn do_test(data: &[u8]) {
- let lowercase: Vec<u8> = data
- .iter()
- .map(|c| match *c {
- b'A' => b'a',
- b'B' => b'b',
- b'C' => b'c',
- b'D' => b'd',
- b'E' => b'e',
- b'F' => b'f',
- x => x,
- })
- .collect();
- let data_str = match String::from_utf8(lowercase) {
- Err(_) => return,
- Ok(s) => s,
- };
- match data_str.parse::<OutPoint>() {
- Ok(op) => {
- assert_eq!(op.to_string().as_bytes(), data_str.as_bytes());
- }
- Err(_) => {
- // If we can't deserialize as a string, try consensus deserializing
- let res: Result<OutPoint, _> = encode::deserialize(data);
- if let Ok(deser) = res {
- let ser = encode::serialize(&deser);
- assert_eq!(ser, data);
- let string = deser.to_string();
- match string.parse::<OutPoint>() {
- Ok(destring) => assert_eq!(destring, deser),
- Err(_) => panic!(),
- }
- }
- }
- }
-}
-
-fn main() {
- loop {
- fuzz!(|data| {
- do_test(data);
- });
- }
-}
-
-#[cfg(all(test, fuzzing))]
-mod tests {
- fn extend_vec_from_hex(hex: &str, out: &mut Vec<u8>) {
- let mut b = 0;
- for (idx, c) in hex.as_bytes().iter().enumerate() {
- b <<= 4;
- match *c {
- b'A'..=b'F' => b |= c - b'A' + 10,
- b'a'..=b'f' => b |= c - b'a' + 10,
- b'0'..=b'9' => b |= c - b'0',
- _ => panic!("Bad hex"),
- }
- if (idx & 1) == 1 {
- out.push(b);
- b = 0;
- }
- }
- }
-
- #[test]
- fn duplicate_crash() {
- let mut a = Vec::new();
- extend_vec_from_hex("00", &mut a);
- super::do_test(&a);
- }
-}
diff --git a/fuzz/fuzz_targets/bitcoin/parse_address.rs b/fuzz/fuzz_targets/bitcoin/parse_address.rs
new file mode 100644
index 00000000..c862524a
--- /dev/null
+++ b/fuzz/fuzz_targets/bitcoin/parse_address.rs
@@ -0,0 +1,45 @@
+use honggfuzz::fuzz;
+
+fn do_test(data: &[u8]) {
+ let data_str = String::from_utf8_lossy(data);
+ let addr = match data_str.parse::<bitcoin::address::Address<_>>() {
+ Ok(addr) => addr.assume_checked(),
+ Err(_) => return,
+ };
+ assert_eq!(addr.to_string(), data_str);
+}
+
+fn main() {
+ loop {
+ fuzz!(|data| {
+ do_test(data);
+ });
+ }
+}
+
+#[cfg(all(test, fuzzing))]
+mod tests {
+ fn extend_vec_from_hex(hex: &str, out: &mut Vec<u8>) {
+ let mut b = 0;
+ for (idx, c) in hex.as_bytes().iter().enumerate() {
+ b <<= 4;
+ match *c {
+ b'A'..=b'F' => b |= c - b'A' + 10,
+ b'a'..=b'f' => b |= c - b'a' + 10,
+ b'0'..=b'9' => b |= c - b'0',
+ _ => panic!("Bad hex"),
+ }
+ if (idx & 1) == 1 {
+ out.push(b);
+ b = 0;
+ }
+ }
+ }
+
+ #[test]
+ fn duplicate_crash() {
+ let mut a = Vec::new();
+ extend_vec_from_hex("00000000", &mut a);
+ super::do_test(&a);
+ }
+}
diff --git a/fuzz/fuzz_targets/bitcoin/parse_outpoint.rs b/fuzz/fuzz_targets/bitcoin/parse_outpoint.rs
new file mode 100644
index 00000000..8d9fffec
--- /dev/null
+++ b/fuzz/fuzz_targets/bitcoin/parse_outpoint.rs
@@ -0,0 +1,75 @@
+use bitcoin::consensus::encode;
+use bitcoin::transaction::OutPoint;
+use honggfuzz::fuzz;
+
+fn do_test(data: &[u8]) {
+ let lowercase: Vec<u8> = data
+ .iter()
+ .map(|c| match *c {
+ b'A' => b'a',
+ b'B' => b'b',
+ b'C' => b'c',
+ b'D' => b'd',
+ b'E' => b'e',
+ b'F' => b'f',
+ x => x,
+ })
+ .collect();
+ let data_str = match String::from_utf8(lowercase) {
+ Err(_) => return,
+ Ok(s) => s,
+ };
+ match data_str.parse::<OutPoint>() {
+ Ok(op) => {
+ assert_eq!(op.to_string().as_bytes(), data_str.as_bytes());
+ }
+ Err(_) => {
+ // If we can't deserialize as a string, try consensus deserializing
+ let res: Result<OutPoint, _> = encode::deserialize(data);
+ if let Ok(deser) = res {
+ let ser = encode::serialize(&deser);
+ assert_eq!(ser, data);
+ let string = deser.to_string();
+ match string.parse::<OutPoint>() {
+ Ok(destring) => assert_eq!(destring, deser),
+ Err(_) => panic!(),
+ }
+ }
+ }
+ }
+}
+
+fn main() {
+ loop {
+ fuzz!(|data| {
+ do_test(data);
+ });
+ }
+}
+
+#[cfg(all(test, fuzzing))]
+mod tests {
+ fn extend_vec_from_hex(hex: &str, out: &mut Vec<u8>) {
+ let mut b = 0;
+ for (idx, c) in hex.as_bytes().iter().enumerate() {
+ b <<= 4;
+ match *c {
+ b'A'..=b'F' => b |= c - b'A' + 10,
+ b'a'..=b'f' => b |= c - b'a' + 10,
+ b'0'..=b'9' => b |= c - b'0',
+ _ => panic!("Bad hex"),
+ }
+ if (idx & 1) == 1 {
+ out.push(b);
+ b = 0;
+ }
+ }
+ }
+
+ #[test]
+ fn duplicate_crash() {
+ let mut a = Vec::new();
+ extend_vec_from_hex("00", &mut a);
+ super::do_test(&a);
+ }
+}
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.