From c3dce46c5f7cad6bc3cc91cc2c711ac089f25923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Fri, 8 May 2026 11:53:45 +0200 Subject: New upstream version 1.0.1+dfsg --- fuzz/FuzzingUtils.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 fuzz/FuzzingUtils.h (limited to 'fuzz/FuzzingUtils.h') diff --git a/fuzz/FuzzingUtils.h b/fuzz/FuzzingUtils.h new file mode 100644 index 0000000..74d27d3 --- /dev/null +++ b/fuzz/FuzzingUtils.h @@ -0,0 +1,44 @@ +// Copyright 2025 Mikhail Khachaiants +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef URI_FUZZING_UTILS_H +# define URI_FUZZING_UTILS_H 1 + +# include "uriparser/Uri.h" +# include +# include + +using UriString = std::basic_string; + +inline UriString tryConsumeBytesAsString(FuzzedDataProvider & fdp, size_t chars) { + UriString str(chars, 0); + const size_t bytes = fdp.ConsumeData(str.data(), chars * sizeof(URI_CHAR)); + // FuzzedDataProvider may provide less data than requested if the input is + // insufficiently long. We need to adjust the string length accordingly. + str.resize(bytes / sizeof(URI_CHAR)); + return str; +} + +inline UriString consumeRandomLengthString(FuzzedDataProvider & fdp) { + const size_t max_chars = fdp.remaining_bytes() / sizeof(URI_CHAR); + const size_t chars = fdp.ConsumeIntegralInRange(0, max_chars); + return tryConsumeBytesAsString(fdp, chars); +} + +inline UriString consumeRemainingBytesAsString(FuzzedDataProvider & fdp) { + const size_t chars = fdp.remaining_bytes() / sizeof(URI_CHAR); + return tryConsumeBytesAsString(fdp, chars); +} + +#endif /* URI_FUZZING_UTILS_H */ -- cgit v1.2.3