[libc-commits] [libc] [libc] Add a differential fuzzer for inet_ntop (PR #207977)
Pavel Labath via libc-commits
libc-commits at lists.llvm.org
Wed Jul 8 04:08:57 PDT 2026
================
@@ -0,0 +1,106 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Differential fuzz test for llvm-libc inet_ntop implementation.
+///
+//===----------------------------------------------------------------------===//
+
+#include "src/arpa/inet/inet_ntop.h"
+#include <arpa/inet.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+ if (size < 1)
+ return 0;
+
+ uint8_t af_selector = data[0];
+
+ int af = (af_selector & 0x80) ? AF_INET : AF_INET6;
+ socklen_t dst_size = data[0] % 64;
+
+ // Extract address bytes. We allocate 16 bytes for IPv6, IPv4 will only use 4.
+ uint8_t address_bytes[16] = {0};
+ size_t payload_size = size - 1;
+ size_t copy_size = payload_size > 16 ? 16 : payload_size;
+ memcpy(address_bytes, data + 1, copy_size);
+
+ // Setup buffers for dst
+ constexpr size_t BUFFER_SIZE = 128;
+ char ref_dst[BUFFER_SIZE];
+ char impl_dst[BUFFER_SIZE];
+
+ // Initialize buffers with sentinel
+ memset(ref_dst, 0x5A, BUFFER_SIZE);
----------------
labath wrote:
Done.
https://github.com/llvm/llvm-project/pull/207977
More information about the libc-commits
mailing list