Skip to content

Commit 75ec6d6

Browse files
committed
add fuzz test for base32 util
1 parent 75337af commit 75ec6d6

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

fuzz/src/base32.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// This file is Copyright its original authors, visible in version control
2+
// history.
3+
//
4+
// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
5+
// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
7+
// You may not use this file except in accordance with one or both of these
8+
// licenses.
9+
10+
use lightning::util::base32;
11+
12+
use crate::utils::test_logger;
13+
14+
#[inline]
15+
pub fn do_test(data: &[u8]) {
16+
let res = base32::encode(base32::Alphabet::Crockford, data);
17+
assert_eq!(&base32::decode(base32::Alphabet::Crockford, &res).unwrap()[..], data);
18+
19+
if let Ok(s) = std::str::from_utf8(data) {
20+
if let Some(decoded) = base32::decode(base32::Alphabet::Crockford,s) {
21+
assert_eq!(&base32::encode(base32::Alphabet::Crockford,&decoded), &s.to_ascii_lowercase());
22+
}
23+
}
24+
}
25+
26+
pub fn base32_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
27+
do_test(data);
28+
}
29+
30+
#[no_mangle]
31+
pub extern "C" fn base32_run(data: *const u8, datalen: usize) {
32+
do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
33+
}

fuzz/src/bin/gen_target.sh

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ GEN_TEST refund_deser
2020
GEN_TEST router
2121
GEN_TEST zbase32
2222
GEN_TEST indexedmap
23+
GEN_TEST base32
2324

2425
GEN_TEST msg_accept_channel msg_targets::
2526
GEN_TEST msg_announcement_signatures msg_targets::

fuzz/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,6 @@ pub mod process_network_graph;
2828
pub mod refund_deser;
2929
pub mod router;
3030
pub mod zbase32;
31+
pub mod base32;
3132

3233
pub mod msg_targets;

fuzz/targets.h

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ void refund_deser_run(const unsigned char* data, size_t data_len);
1313
void router_run(const unsigned char* data, size_t data_len);
1414
void zbase32_run(const unsigned char* data, size_t data_len);
1515
void indexedmap_run(const unsigned char* data, size_t data_len);
16+
void base32_run(const unsigned char* data, size_t data_len);
1617
void msg_accept_channel_run(const unsigned char* data, size_t data_len);
1718
void msg_announcement_signatures_run(const unsigned char* data, size_t data_len);
1819
void msg_channel_reestablish_run(const unsigned char* data, size_t data_len);

0 commit comments

Comments
 (0)