Coverage Report

Created: 2026-09-14 06:32

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/glib/fuzzing/fuzz_key.c
Line
Count
Source
1
/*
2
 * Copyright 2018 pdknsk
3
 * Copyright 2020 Endless OS Foundation, LLC
4
 *
5
 * SPDX-License-Identifier: LGPL-2.1-or-later
6
 *
7
 * This library is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * This library is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
19
 */
20
21
#include "fuzz.h"
22
23
static void
24
test_parse (const gchar   *data,
25
            size_t         size,
26
            GKeyFileFlags  flags)
27
8.61k
{
28
8.61k
  GKeyFile *key = NULL;
29
8.61k
  char *comment = NULL;
30
8.61k
  char **list = NULL;
31
32
8.61k
  key = g_key_file_new ();
33
8.61k
  g_key_file_load_from_data (key, (const gchar*) data, size, G_KEY_FILE_NONE,
34
8.61k
                             NULL);
35
36
  /* Also try some additional parsing and see if it crashes */
37
8.61k
  comment = g_key_file_get_comment (key, "group", "key", NULL);
38
8.61k
  g_free (comment);
39
40
8.61k
  list = g_key_file_get_locale_string_list (key, "group", "key", "de", NULL, NULL);
41
8.61k
  g_strfreev (list);
42
43
8.61k
  g_key_file_free (key);
44
8.61k
}
45
46
int
47
LLVMFuzzerTestOneInput (const unsigned char *data, size_t size)
48
19.4k
{
49
19.4k
  fuzz_set_logging_func ();
50
51
19.4k
  test_parse ((const gchar *) data, size, G_KEY_FILE_NONE);
52
19.4k
  test_parse ((const gchar *) data, size, G_KEY_FILE_KEEP_COMMENTS);
53
19.4k
  test_parse ((const gchar *) data, size, G_KEY_FILE_KEEP_TRANSLATIONS);
54
55
19.4k
  return 0;
56
19.4k
}