Blame t/bad_pointers_t.c

Packit Service 7145e0
#include "maxminddb_test_helper.h"
Packit Service 7145e0
Packit Service 7145e0
void run_tests(int mode, const char *mode_desc)
Packit Service 7145e0
{
Packit Service 7145e0
    const char *filename = "MaxMind-DB-test-broken-pointers-24.mmdb";
Packit Service 7145e0
    const char *path = test_database_path(filename);
Packit Service 7145e0
    MMDB_s *mmdb = open_ok(path, mode, mode_desc);
Packit Service 7145e0
    free((void *)path);
Packit Service 7145e0
Packit Service 7145e0
    {
Packit Service 7145e0
        const char *ip = "1.1.1.16";
Packit Service 7145e0
        MMDB_lookup_result_s result =
Packit Service 7145e0
            lookup_string_ok(mmdb, ip, filename, mode_desc);
Packit Service 7145e0
Packit Service 7145e0
        MMDB_entry_data_s entry_data;
Packit Service 7145e0
        int status = MMDB_get_value(&result.entry, &entry_data, NULL);
Packit Service 7145e0
Packit Service 7145e0
        cmp_ok(
Packit Service 7145e0
            status, "==", MMDB_INVALID_DATA_ERROR,
Packit Service 7145e0
            "MMDB_get_value returns MMDB_INVALID_DATA_ERROR for bad pointer in data section");
Packit Service 7145e0
Packit Service 7145e0
        MMDB_entry_data_list_s *entry_data_list;
Packit Service 7145e0
        status = MMDB_get_entry_data_list(&result.entry, &entry_data_list);
Packit Service 7145e0
Packit Service 7145e0
        cmp_ok(
Packit Service 7145e0
            status, "==", MMDB_INVALID_DATA_ERROR,
Packit Service 7145e0
            "MMDB_get_entry_data_list returns MMDB_INVALID_DATA_ERROR for bad pointer in data section");
Packit Service 7145e0
Packit Service 7145e0
        MMDB_free_entry_data_list(entry_data_list);
Packit Service 7145e0
    }
Packit Service 7145e0
Packit Service 7145e0
    {
Packit Service 7145e0
        const char *ip = "1.1.1.32";
Packit Service 7145e0
Packit Service 7145e0
        int gai_error, mmdb_error;
Packit Service 7145e0
        MMDB_lookup_result_s UNUSED(result) =
Packit Service 7145e0
            MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error);
Packit Service 7145e0
Packit Service 7145e0
        cmp_ok(
Packit Service 7145e0
            mmdb_error, "==", MMDB_CORRUPT_SEARCH_TREE_ERROR,
Packit Service 7145e0
            "MMDB_lookup_string sets mmdb_error to MMDB_CORRUPT_SEARCH_TREE_ERROR when a search tree record points outside the data section");
Packit Service 7145e0
    }
Packit Service 7145e0
Packit Service 7145e0
    MMDB_close(mmdb);
Packit Service 7145e0
    free(mmdb);
Packit Service 7145e0
}
Packit Service 7145e0
Packit Service 7145e0
int main(void)
Packit Service 7145e0
{
Packit Service 7145e0
    plan(NO_PLAN);
Packit Service 7145e0
    for_all_modes(&run_tests);
Packit Service 7145e0
    done_testing();
Packit Service 7145e0
}