blob: 05d65bbc71d27d4177640e308b3e53cb681469cf [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <fuzzer/FuzzedDataProvider.h>
#include "src/connectivity/bluetooth/core/bt-host/sdp/pdu.h"
#include "src/connectivity/bluetooth/core/bt-host/sdp/status.h"
namespace bt::sdp {
void fuzz(const uint8_t* data, size_t size) {
FuzzedDataProvider fuzzed_data(data, size);
uint8_t type = fuzzed_data.ConsumeIntegral<uint8_t>();
std::vector<uint8_t> remaining_bytes = fuzzed_data.ConsumeRemainingBytes<uint8_t>();
DynamicByteBuffer buf(remaining_bytes.size());
memcpy(buf.mutable_data(), remaining_bytes.data(), remaining_bytes.size());
Status status;
ErrorResponse error_response;
ServiceSearchResponse service_search_response;
ServiceAttributeResponse service_attribute_response;
ServiceSearchAttributeResponse service_search_attribute_response;
switch (type % 4) {
case 0:
status = error_response.Parse(buf);
break;
case 1:
status = service_search_response.Parse(buf);
break;
case 2:
status = service_attribute_response.Parse(buf);
break;
case 3:
status = service_search_attribute_response.Parse(buf);
break;
}
}
} // namespace bt::sdp
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
bt::sdp::fuzz(data, size);
return 0;
}