Coverage Report

Created: 2025-11-24 06:06

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/jpegoptim/fuzz/fuzz_manager.c
Line
Count
Source
1
#include <libgen.h>
2
#include <stdlib.h>
3
#include <string.h>
4
#include <unistd.h>
5
#include "fuzz_manager.h"
6
#include "jpegoptim.h"
7
8
fuzz_manager_t fuzz_manager = {0};
9
10
void generate_temp_file_name(char *buf, size_t size)
11
2
{
12
2
  int fd;
13
2
  strncpy(buf, "/dev/shm/fuzz_file_XXXXXX", size);
14
2
  if (-1 == (fd = mkstemp(buf)))
15
0
  {
16
0
    perror("mkstemp");
17
0
    exit(EXIT_FAILURE);
18
0
  }
19
2
  close(fd);
20
2
}
21
22
void fuzz_manager_init()
23
635
{
24
635
  if (fuzz_manager.is_init)
25
634
  {
26
634
    return;
27
634
  }
28
29
1
  fuzz_set_target_size(-75);
30
31
1
  fuzz_manager.is_init = true;
32
1
  fuzz_manager.log_fh = fopen("/dev/null", "a"); // Do not log
33
34
1
  generate_temp_file_name(fuzz_manager.fuzz_file_name, PATH_MAX);
35
1
  generate_temp_file_name(fuzz_manager.new_fuzz_file_name, PATH_MAX);
36
37
1
  strncpy(fuzz_manager.tmp_dir, fuzz_manager.fuzz_file_name, PATH_MAX);
38
1
  dirname(fuzz_manager.tmp_dir);
39
  // Ensure the temp path ends with a /
40
1
  size_t tmp_len = strnlen(fuzz_manager.tmp_dir, PATH_MAX);
41
42
1
  if (tmp_len < PATH_MAX - 1 && fuzz_manager.tmp_dir[tmp_len - 1] != '/')
43
1
  {
44
1
    fuzz_manager.tmp_dir[tmp_len] = '/';
45
1
    fuzz_manager.tmp_dir[tmp_len + 1] = '\0';
46
1
  }
47
1
}