[libc-commits] [libc] [libc][fuzzing] Improve printf long double fuzzing (PR #172113)
Michael Jones via libc-commits
libc-commits at lists.llvm.org
Tue Dec 16 10:25:35 PST 2025
================
@@ -101,16 +103,19 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
prec = (prec << 8) + data[cur];
} else if (cur < sizeof(raw_num) + sizeof(prec) + sizeof(width)) {
width = (width << 8) + data[cur];
+ } else if (cur < sizeof(raw_num) + sizeof(prec) + sizeof(width) +
+ sizeof(ld_raw_num)) {
+ ld_raw_num = (ld_raw_num << 8) + data[cur];
}
}
num = LIBC_NAMESPACE::fputil::FPBits<double>(raw_num).get_val();
+ ld_num = LIBC_NAMESPACE::fputil::FPBits<long double>(ld_raw_num).get_val();
- // While we could create a "ld_raw_num" from additional bytes, it's much
- // easier to stick with simply casting num to long double. This avoids the
- // issues around 80 bit long doubles, especially unnormal and pseudo-denormal
- // numbers, which MPFR doesn't handle well.
- long double ld_num = static_cast<long double>(num);
+ // checking the same value in double and long double could help find
+ // mismatches. Mostly this is here to match previous behavior where this was
----------------
michaelrj-google wrote:
updated the comment.
https://github.com/llvm/llvm-project/pull/172113
More information about the libc-commits
mailing list