sms-part-3gpp|cdma: new fuzzer tests
This commit is contained in:

committed by
Aleksander Morgado

parent
ea441d0f89
commit
3aefc983b5
@@ -423,6 +423,8 @@ if enable_gtk_doc
|
|||||||
subdir('docs/reference/libmm-glib')
|
subdir('docs/reference/libmm-glib')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
enable_fuzzer = get_option('fuzzer')
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
output: 'config.h',
|
output: 'config.h',
|
||||||
configuration: config_h,
|
configuration: config_h,
|
||||||
@@ -465,4 +467,5 @@ summary({
|
|||||||
'bash completion': enable_bash_completion,
|
'bash completion': enable_bash_completion,
|
||||||
'vala bindings': enable_vapi,
|
'vala bindings': enable_vapi,
|
||||||
'code coverage': get_option('b_coverage'),
|
'code coverage': get_option('b_coverage'),
|
||||||
|
'fuzzer': enable_fuzzer,
|
||||||
}, section: 'Miscellaneous')
|
}, section: 'Miscellaneous')
|
||||||
|
@@ -100,3 +100,5 @@ option('man', type: 'boolean', value: true, description: 'build manual pages')
|
|||||||
option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')
|
option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')
|
||||||
|
|
||||||
option('bash_completion', type: 'boolean', value: true, description: 'install bash completion files')
|
option('bash_completion', type: 'boolean', value: true, description: 'install bash completion files')
|
||||||
|
|
||||||
|
option('fuzzer', type: 'boolean', value: false, description: 'build fuzzer tests')
|
||||||
|
@@ -37,3 +37,18 @@ foreach test_unit, test_deps: test_units
|
|||||||
|
|
||||||
test(test_name, exe)
|
test(test_name, exe)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
if get_option('fuzzer')
|
||||||
|
fuzzer_tests = ['test-sms-part-3gpp-fuzzer',
|
||||||
|
'test-sms-part-3gpp-tr-fuzzer',
|
||||||
|
'test-sms-part-cdma-fuzzer']
|
||||||
|
foreach fuzzer_test: fuzzer_tests
|
||||||
|
exe = executable(
|
||||||
|
fuzzer_test,
|
||||||
|
sources: fuzzer_test + '.c',
|
||||||
|
include_directories: top_inc,
|
||||||
|
dependencies: libhelpers_dep,
|
||||||
|
link_args : '-fsanitize=fuzzer',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
endif
|
39
src/tests/test-sms-part-3gpp-fuzzer.c
Normal file
39
src/tests/test-sms-part-3gpp-fuzzer.c
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2023 Google, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
#define _LIBMM_INSIDE_MM
|
||||||
|
#include <libmm-glib.h>
|
||||||
|
|
||||||
|
#include "mm-sms-part-3gpp.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
LLVMFuzzerTestOneInput (const uint8_t *data,
|
||||||
|
size_t size)
|
||||||
|
{
|
||||||
|
g_autoptr(MMSmsPart) part = NULL;
|
||||||
|
g_autoptr(GError) error = NULL;
|
||||||
|
|
||||||
|
if (!size)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
part = mm_sms_part_3gpp_new_from_binary_pdu (0, data, size, NULL, FALSE, &error);
|
||||||
|
g_assert (part || error);
|
||||||
|
return 0;
|
||||||
|
}
|
39
src/tests/test-sms-part-3gpp-tr-fuzzer.c
Normal file
39
src/tests/test-sms-part-3gpp-tr-fuzzer.c
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2023 Google, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
#define _LIBMM_INSIDE_MM
|
||||||
|
#include <libmm-glib.h>
|
||||||
|
|
||||||
|
#include "mm-sms-part-3gpp.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
LLVMFuzzerTestOneInput (const uint8_t *data,
|
||||||
|
size_t size)
|
||||||
|
{
|
||||||
|
g_autoptr(MMSmsPart) part = NULL;
|
||||||
|
g_autoptr(GError) error = NULL;
|
||||||
|
|
||||||
|
if (!size)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
part = mm_sms_part_3gpp_new_from_binary_pdu (0, data, size, NULL, TRUE, &error);
|
||||||
|
g_assert (part || error);
|
||||||
|
return 0;
|
||||||
|
}
|
39
src/tests/test-sms-part-cdma-fuzzer.c
Normal file
39
src/tests/test-sms-part-cdma-fuzzer.c
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details:
|
||||||
|
*
|
||||||
|
* Copyright (C) 2023 Google, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
#define _LIBMM_INSIDE_MM
|
||||||
|
#include <libmm-glib.h>
|
||||||
|
|
||||||
|
#include "mm-sms-part-cdma.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
LLVMFuzzerTestOneInput (const uint8_t *data,
|
||||||
|
size_t size)
|
||||||
|
{
|
||||||
|
g_autoptr(MMSmsPart) part = NULL;
|
||||||
|
g_autoptr(GError) error = NULL;
|
||||||
|
|
||||||
|
if (!size)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
part = mm_sms_part_cdma_new_from_binary_pdu (0, data, size, NULL, &error);
|
||||||
|
g_assert (part || error);
|
||||||
|
return 0;
|
||||||
|
}
|
Reference in New Issue
Block a user