Coverage Report

Created: 2026-08-25 06:40

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libzip/lib/zip_source_at_eof.c
Line
Count
Source
1
#include "zipint.h"
2
3
9.82k
ZIP_EXTERN int zip_source_at_eof(zip_source_t *src) {
4
9.82k
    zip_uint8_t d[1];
5
9.82k
    zip_int64_t n;
6
7
9.82k
    if (!ZIP_SOURCE_IS_OPEN_READING(src)) {
8
0
        zip_error_set(&src->error, ZIP_ER_INVAL, 0);
9
0
        return -1;
10
0
    }
11
12
9.82k
    if (!src->eof) {
13
7.78k
        if (src->supports & ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_AT_EOF)) {
14
1.67k
            n = _zip_source_call(src, NULL, 0, ZIP_SOURCE_AT_EOF);
15
1.67k
            if (n < 0) {
16
0
                return -1;
17
0
            }
18
1.67k
            if (n != 0) {
19
1.15k
                src->eof = true;
20
1.15k
            }
21
1.67k
        }
22
6.11k
        else {
23
6.11k
            n = zip_source_read(src, d, sizeof(d));
24
6.11k
            if (n < 0) {
25
2.79k
                return -1;
26
2.79k
            }
27
3.31k
            if (n > 0) {
28
992
                if (src->supports & ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK)) {
29
0
                    if (zip_source_seek(src, -1, SEEK_CUR) < 0) {
30
0
                        return -1;
31
0
                    }
32
0
                }
33
992
                else {
34
992
                    src->have_next_byte = true;
35
992
                    src->next_byte = d[0];
36
992
                    src->bytes_read -= 1;
37
992
                }
38
992
            }
39
3.31k
        }
40
7.78k
    }
41
42
7.02k
    return src->eof ? 1 : 0;
43
9.82k
}