/* * Copyright 2018 Google Inc. * * 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. * * This fuzzer exercises the agentx PDU parsing code. */ #include #include /* We build with the agent/mibgroup/agentx dir in an -I */ #include #include #include #include int LLVMFuzzerInitialize(int *argc, char ***argv) { if (getenv("NETSNMP_DEBUGGING") != NULL) { /* * Turn on all debugging, to help understand what * bits of the parser are running. */ snmp_enable_stderrlog(); snmp_set_do_debugging(1); debug_register_tokens(""); } return 0; } int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { netsnmp_pdu *pdu = SNMP_MALLOC_TYPEDEF(netsnmp_pdu); netsnmp_session session; session.version = AGENTX_VERSION_1; agentx_parse(&session, pdu, (unsigned char *)data, size); snmp_free_pdu(pdu); return 0; }