Coverage Report

Created: 2025-12-31 06:37

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gnutls/lib/record.h
Line
Count
Source
1
/*
2
 * Copyright (C) 2000-2012 Free Software Foundation, Inc.
3
 *
4
 * Author: Nikos Mavrogiannopoulos
5
 *
6
 * This file is part of GnuTLS.
7
 *
8
 * The GnuTLS is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU Lesser General Public License
10
 * as published by the Free Software Foundation; either version 2.1 of
11
 * the License, or (at your option) any later version.
12
 *
13
 * This library is distributed in the hope that it will be useful, but
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 * Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Lesser General Public License
19
 * along with this program.  If not, see <https://www.gnu.org/licenses/>
20
 *
21
 */
22
23
#ifndef GNUTLS_LIB_RECORD_H
24
#define GNUTLS_LIB_RECORD_H
25
26
#include <gnutls/gnutls.h>
27
#include "buffers.h"
28
#include "constate.h"
29
30
ssize_t _gnutls_send_tlen_int(gnutls_session_t session, content_type_t type,
31
            gnutls_handshake_description_t htype,
32
            unsigned int epoch_rel, const void *data,
33
            size_t sizeofdata, size_t min_pad,
34
            unsigned int mflags);
35
36
inline static ssize_t
37
_gnutls_send_int(gnutls_session_t session, content_type_t type,
38
     gnutls_handshake_description_t htype, unsigned int epoch_rel,
39
     const void *_data, size_t data_size, unsigned int mflags)
40
76.8k
{
41
76.8k
  return _gnutls_send_tlen_int(session, type, htype, epoch_rel, _data,
42
76.8k
             data_size, 0, mflags);
43
76.8k
}
Unexecuted instantiation: cert-cred-x509.c:_gnutls_send_int
Unexecuted instantiation: kx.c:_gnutls_send_int
Unexecuted instantiation: state.c:_gnutls_send_int
Unexecuted instantiation: dtls.c:_gnutls_send_int
Unexecuted instantiation: system_override.c:_gnutls_send_int
Unexecuted instantiation: prf.c:_gnutls_send_int
Unexecuted instantiation: dtls-sw.c:_gnutls_send_int
Unexecuted instantiation: ocsp-api.c:_gnutls_send_int
Unexecuted instantiation: heartbeat.c:_gnutls_send_int
Unexecuted instantiation: key_share.c:_gnutls_send_int
Unexecuted instantiation: pre_shared_key.c:_gnutls_send_int
Unexecuted instantiation: session_ticket.c:_gnutls_send_int
Unexecuted instantiation: status_request.c:_gnutls_send_int
Unexecuted instantiation: supported_versions.c:_gnutls_send_int
Unexecuted instantiation: cert.c:_gnutls_send_int
Unexecuted instantiation: record.c:_gnutls_send_int
Unexecuted instantiation: cipher.c:_gnutls_send_int
Unexecuted instantiation: handshake-tls13.c:_gnutls_send_int
buffers.c:_gnutls_send_int
Line
Count
Source
40
76.8k
{
41
76.8k
  return _gnutls_send_tlen_int(session, type, htype, epoch_rel, _data,
42
76.8k
             data_size, 0, mflags);
43
76.8k
}
Unexecuted instantiation: handshake.c:_gnutls_send_int
Unexecuted instantiation: sslv2_compat.c:_gnutls_send_int
Unexecuted instantiation: constate.c:_gnutls_send_int
Unexecuted instantiation: alert.c:_gnutls_send_int
Unexecuted instantiation: handshake-checks.c:_gnutls_send_int
Unexecuted instantiation: encrypted_extensions.c:_gnutls_send_int
Unexecuted instantiation: certificate_request.c:_gnutls_send_int
Unexecuted instantiation: certificate_verify.c:_gnutls_send_int
Unexecuted instantiation: finished.c:_gnutls_send_int
Unexecuted instantiation: key_update.c:_gnutls_send_int
Unexecuted instantiation: hello_retry.c:_gnutls_send_int
Unexecuted instantiation: certificate.c:_gnutls_send_int
Unexecuted instantiation: early_data.c:_gnutls_send_int
Unexecuted instantiation: post_handshake.c:_gnutls_send_int
44
45
ssize_t _gnutls_recv_int(gnutls_session_t session, content_type_t type,
46
       uint8_t *data, size_t sizeofdata, void *seq,
47
       unsigned int ms);
48
49
inline static unsigned max_record_recv_size(gnutls_session_t session)
50
7.77M
{
51
7.77M
  unsigned size;
52
53
7.77M
  if (session->internals.max_recv_size == 0) {
54
7.15M
    size = session->security_parameters.max_record_recv_size +
55
7.15M
           RECORD_HEADER_SIZE(session);
56
7.15M
    if (session->internals.allow_large_records != 0)
57
0
      size += EXTRA_COMP_SIZE;
58
7.15M
  } else {
59
615k
    size = session->internals.max_recv_size;
60
615k
  }
61
62
7.77M
  return size;
63
7.77M
}
Unexecuted instantiation: cert-cred-x509.c:max_record_recv_size
Unexecuted instantiation: kx.c:max_record_recv_size
Unexecuted instantiation: state.c:max_record_recv_size
Unexecuted instantiation: dtls.c:max_record_recv_size
Unexecuted instantiation: system_override.c:max_record_recv_size
Unexecuted instantiation: prf.c:max_record_recv_size
Unexecuted instantiation: dtls-sw.c:max_record_recv_size
Unexecuted instantiation: ocsp-api.c:max_record_recv_size
Unexecuted instantiation: heartbeat.c:max_record_recv_size
Unexecuted instantiation: key_share.c:max_record_recv_size
Unexecuted instantiation: pre_shared_key.c:max_record_recv_size
Unexecuted instantiation: session_ticket.c:max_record_recv_size
Unexecuted instantiation: status_request.c:max_record_recv_size
Unexecuted instantiation: supported_versions.c:max_record_recv_size
Unexecuted instantiation: cert.c:max_record_recv_size
record.c:max_record_recv_size
Line
Count
Source
50
1.18M
{
51
1.18M
  unsigned size;
52
53
1.18M
  if (session->internals.max_recv_size == 0) {
54
1.10M
    size = session->security_parameters.max_record_recv_size +
55
1.10M
           RECORD_HEADER_SIZE(session);
56
1.10M
    if (session->internals.allow_large_records != 0)
57
0
      size += EXTRA_COMP_SIZE;
58
1.10M
  } else {
59
85.5k
    size = session->internals.max_recv_size;
60
85.5k
  }
61
62
1.18M
  return size;
63
1.18M
}
Unexecuted instantiation: cipher.c:max_record_recv_size
Unexecuted instantiation: handshake-tls13.c:max_record_recv_size
buffers.c:max_record_recv_size
Line
Count
Source
50
6.58M
{
51
6.58M
  unsigned size;
52
53
6.58M
  if (session->internals.max_recv_size == 0) {
54
6.05M
    size = session->security_parameters.max_record_recv_size +
55
6.05M
           RECORD_HEADER_SIZE(session);
56
6.05M
    if (session->internals.allow_large_records != 0)
57
0
      size += EXTRA_COMP_SIZE;
58
6.05M
  } else {
59
530k
    size = session->internals.max_recv_size;
60
530k
  }
61
62
6.58M
  return size;
63
6.58M
}
Unexecuted instantiation: handshake.c:max_record_recv_size
Unexecuted instantiation: sslv2_compat.c:max_record_recv_size
Unexecuted instantiation: constate.c:max_record_recv_size
Unexecuted instantiation: alert.c:max_record_recv_size
Unexecuted instantiation: handshake-checks.c:max_record_recv_size
Unexecuted instantiation: encrypted_extensions.c:max_record_recv_size
Unexecuted instantiation: certificate_request.c:max_record_recv_size
Unexecuted instantiation: certificate_verify.c:max_record_recv_size
Unexecuted instantiation: finished.c:max_record_recv_size
Unexecuted instantiation: key_update.c:max_record_recv_size
Unexecuted instantiation: hello_retry.c:max_record_recv_size
Unexecuted instantiation: certificate.c:max_record_recv_size
Unexecuted instantiation: early_data.c:max_record_recv_size
Unexecuted instantiation: post_handshake.c:max_record_recv_size
64
65
inline static unsigned max_decrypted_size(gnutls_session_t session)
66
2.28M
{
67
2.28M
  unsigned size = 0;
68
69
2.28M
  if (session->internals.allow_large_records != 0)
70
0
    size += EXTRA_COMP_SIZE;
71
72
2.28M
  size += session->security_parameters.max_record_recv_size;
73
74
2.28M
  return size;
75
2.28M
}
Unexecuted instantiation: cert-cred-x509.c:max_decrypted_size
Unexecuted instantiation: kx.c:max_decrypted_size
Unexecuted instantiation: state.c:max_decrypted_size
Unexecuted instantiation: dtls.c:max_decrypted_size
Unexecuted instantiation: system_override.c:max_decrypted_size
Unexecuted instantiation: prf.c:max_decrypted_size
Unexecuted instantiation: dtls-sw.c:max_decrypted_size
Unexecuted instantiation: ocsp-api.c:max_decrypted_size
Unexecuted instantiation: heartbeat.c:max_decrypted_size
Unexecuted instantiation: key_share.c:max_decrypted_size
Unexecuted instantiation: pre_shared_key.c:max_decrypted_size
Unexecuted instantiation: session_ticket.c:max_decrypted_size
Unexecuted instantiation: status_request.c:max_decrypted_size
Unexecuted instantiation: supported_versions.c:max_decrypted_size
Unexecuted instantiation: cert.c:max_decrypted_size
record.c:max_decrypted_size
Line
Count
Source
66
2.28M
{
67
2.28M
  unsigned size = 0;
68
69
2.28M
  if (session->internals.allow_large_records != 0)
70
0
    size += EXTRA_COMP_SIZE;
71
72
2.28M
  size += session->security_parameters.max_record_recv_size;
73
74
2.28M
  return size;
75
2.28M
}
cipher.c:max_decrypted_size
Line
Count
Source
66
1
{
67
1
  unsigned size = 0;
68
69
1
  if (session->internals.allow_large_records != 0)
70
0
    size += EXTRA_COMP_SIZE;
71
72
1
  size += session->security_parameters.max_record_recv_size;
73
74
1
  return size;
75
1
}
Unexecuted instantiation: handshake-tls13.c:max_decrypted_size
Unexecuted instantiation: buffers.c:max_decrypted_size
Unexecuted instantiation: handshake.c:max_decrypted_size
Unexecuted instantiation: sslv2_compat.c:max_decrypted_size
Unexecuted instantiation: constate.c:max_decrypted_size
Unexecuted instantiation: alert.c:max_decrypted_size
Unexecuted instantiation: handshake-checks.c:max_decrypted_size
Unexecuted instantiation: encrypted_extensions.c:max_decrypted_size
Unexecuted instantiation: certificate_request.c:max_decrypted_size
Unexecuted instantiation: certificate_verify.c:max_decrypted_size
Unexecuted instantiation: finished.c:max_decrypted_size
Unexecuted instantiation: key_update.c:max_decrypted_size
Unexecuted instantiation: hello_retry.c:max_decrypted_size
Unexecuted instantiation: certificate.c:max_decrypted_size
Unexecuted instantiation: early_data.c:max_decrypted_size
Unexecuted instantiation: post_handshake.c:max_decrypted_size
76
77
/* Returns the headers + any IV that the ciphersuite
78
 * requires */
79
inline static unsigned int get_total_headers(gnutls_session_t session)
80
2.09M
{
81
2.09M
  int ret;
82
2.09M
  record_parameters_st *params;
83
2.09M
  unsigned total = RECORD_HEADER_SIZE(session);
84
85
2.09M
  ret = _gnutls_epoch_get(session, EPOCH_WRITE_CURRENT, &params);
86
2.09M
  if (ret < 0) {
87
0
    return total;
88
0
  }
89
90
2.09M
  return total + _gnutls_cipher_get_explicit_iv_size(params->cipher);
91
2.09M
}
Unexecuted instantiation: cert-cred-x509.c:get_total_headers
Unexecuted instantiation: kx.c:get_total_headers
Unexecuted instantiation: state.c:get_total_headers
Unexecuted instantiation: dtls.c:get_total_headers
Unexecuted instantiation: system_override.c:get_total_headers
Unexecuted instantiation: prf.c:get_total_headers
Unexecuted instantiation: dtls-sw.c:get_total_headers
Unexecuted instantiation: ocsp-api.c:get_total_headers
Unexecuted instantiation: heartbeat.c:get_total_headers
Unexecuted instantiation: key_share.c:get_total_headers
Unexecuted instantiation: pre_shared_key.c:get_total_headers
Unexecuted instantiation: session_ticket.c:get_total_headers
Unexecuted instantiation: status_request.c:get_total_headers
Unexecuted instantiation: supported_versions.c:get_total_headers
Unexecuted instantiation: cert.c:get_total_headers
Unexecuted instantiation: record.c:get_total_headers
Unexecuted instantiation: cipher.c:get_total_headers
Unexecuted instantiation: handshake-tls13.c:get_total_headers
buffers.c:get_total_headers
Line
Count
Source
80
2.09M
{
81
2.09M
  int ret;
82
2.09M
  record_parameters_st *params;
83
2.09M
  unsigned total = RECORD_HEADER_SIZE(session);
84
85
2.09M
  ret = _gnutls_epoch_get(session, EPOCH_WRITE_CURRENT, &params);
86
2.09M
  if (ret < 0) {
87
0
    return total;
88
0
  }
89
90
2.09M
  return total + _gnutls_cipher_get_explicit_iv_size(params->cipher);
91
2.09M
}
Unexecuted instantiation: handshake.c:get_total_headers
Unexecuted instantiation: sslv2_compat.c:get_total_headers
Unexecuted instantiation: constate.c:get_total_headers
Unexecuted instantiation: alert.c:get_total_headers
Unexecuted instantiation: handshake-checks.c:get_total_headers
Unexecuted instantiation: encrypted_extensions.c:get_total_headers
Unexecuted instantiation: certificate_request.c:get_total_headers
Unexecuted instantiation: certificate_verify.c:get_total_headers
Unexecuted instantiation: finished.c:get_total_headers
Unexecuted instantiation: key_update.c:get_total_headers
Unexecuted instantiation: hello_retry.c:get_total_headers
Unexecuted instantiation: certificate.c:get_total_headers
Unexecuted instantiation: early_data.c:get_total_headers
Unexecuted instantiation: post_handshake.c:get_total_headers
92
93
inline static unsigned int get_total_headers2(gnutls_session_t session,
94
                record_parameters_st *params)
95
2.45M
{
96
2.45M
  unsigned total = RECORD_HEADER_SIZE(session);
97
98
2.45M
  return total + _gnutls_cipher_get_explicit_iv_size(params->cipher);
99
2.45M
}
Unexecuted instantiation: cert-cred-x509.c:get_total_headers2
Unexecuted instantiation: kx.c:get_total_headers2
Unexecuted instantiation: state.c:get_total_headers2
Unexecuted instantiation: dtls.c:get_total_headers2
Unexecuted instantiation: system_override.c:get_total_headers2
Unexecuted instantiation: prf.c:get_total_headers2
Unexecuted instantiation: dtls-sw.c:get_total_headers2
Unexecuted instantiation: ocsp-api.c:get_total_headers2
Unexecuted instantiation: heartbeat.c:get_total_headers2
Unexecuted instantiation: key_share.c:get_total_headers2
Unexecuted instantiation: pre_shared_key.c:get_total_headers2
Unexecuted instantiation: session_ticket.c:get_total_headers2
Unexecuted instantiation: status_request.c:get_total_headers2
Unexecuted instantiation: supported_versions.c:get_total_headers2
Unexecuted instantiation: cert.c:get_total_headers2
record.c:get_total_headers2
Line
Count
Source
95
2.45M
{
96
2.45M
  unsigned total = RECORD_HEADER_SIZE(session);
97
98
2.45M
  return total + _gnutls_cipher_get_explicit_iv_size(params->cipher);
99
2.45M
}
Unexecuted instantiation: cipher.c:get_total_headers2
Unexecuted instantiation: handshake-tls13.c:get_total_headers2
Unexecuted instantiation: buffers.c:get_total_headers2
Unexecuted instantiation: handshake.c:get_total_headers2
Unexecuted instantiation: sslv2_compat.c:get_total_headers2
Unexecuted instantiation: constate.c:get_total_headers2
Unexecuted instantiation: alert.c:get_total_headers2
Unexecuted instantiation: handshake-checks.c:get_total_headers2
Unexecuted instantiation: encrypted_extensions.c:get_total_headers2
Unexecuted instantiation: certificate_request.c:get_total_headers2
Unexecuted instantiation: certificate_verify.c:get_total_headers2
Unexecuted instantiation: finished.c:get_total_headers2
Unexecuted instantiation: key_update.c:get_total_headers2
Unexecuted instantiation: hello_retry.c:get_total_headers2
Unexecuted instantiation: certificate.c:get_total_headers2
Unexecuted instantiation: early_data.c:get_total_headers2
Unexecuted instantiation: post_handshake.c:get_total_headers2
100
101
inline static void session_invalidate(gnutls_session_t session)
102
55.8k
{
103
55.8k
  session->internals.invalid_connection = 1;
104
55.8k
}
Unexecuted instantiation: cert-cred-x509.c:session_invalidate
Unexecuted instantiation: kx.c:session_invalidate
Unexecuted instantiation: state.c:session_invalidate
Unexecuted instantiation: dtls.c:session_invalidate
Unexecuted instantiation: system_override.c:session_invalidate
Unexecuted instantiation: prf.c:session_invalidate
Unexecuted instantiation: dtls-sw.c:session_invalidate
Unexecuted instantiation: ocsp-api.c:session_invalidate
Unexecuted instantiation: heartbeat.c:session_invalidate
Unexecuted instantiation: key_share.c:session_invalidate
Unexecuted instantiation: pre_shared_key.c:session_invalidate
Unexecuted instantiation: session_ticket.c:session_invalidate
Unexecuted instantiation: status_request.c:session_invalidate
Unexecuted instantiation: supported_versions.c:session_invalidate
Unexecuted instantiation: cert.c:session_invalidate
record.c:session_invalidate
Line
Count
Source
102
14.0k
{
103
14.0k
  session->internals.invalid_connection = 1;
104
14.0k
}
Unexecuted instantiation: cipher.c:session_invalidate
handshake-tls13.c:session_invalidate
Line
Count
Source
102
7.26k
{
103
7.26k
  session->internals.invalid_connection = 1;
104
7.26k
}
Unexecuted instantiation: buffers.c:session_invalidate
handshake.c:session_invalidate
Line
Count
Source
102
34.5k
{
103
34.5k
  session->internals.invalid_connection = 1;
104
34.5k
}
Unexecuted instantiation: sslv2_compat.c:session_invalidate
Unexecuted instantiation: constate.c:session_invalidate
Unexecuted instantiation: alert.c:session_invalidate
Unexecuted instantiation: handshake-checks.c:session_invalidate
Unexecuted instantiation: encrypted_extensions.c:session_invalidate
Unexecuted instantiation: certificate_request.c:session_invalidate
Unexecuted instantiation: certificate_verify.c:session_invalidate
Unexecuted instantiation: finished.c:session_invalidate
Unexecuted instantiation: key_update.c:session_invalidate
Unexecuted instantiation: hello_retry.c:session_invalidate
Unexecuted instantiation: certificate.c:session_invalidate
Unexecuted instantiation: early_data.c:session_invalidate
Unexecuted instantiation: post_handshake.c:session_invalidate
105
106
#endif /* GNUTLS_LIB_RECORD_H */