/src/gnutls/lib/mbuffers.h
Line  | Count  | Source (jump to first uncovered line)  | 
1  |  | /*  | 
2  |  |  * Copyright (C) 2009-2012 Free Software Foundation, Inc.  | 
3  |  |  *  | 
4  |  |  * Author: Jonathan Bastien-Filiatrault  | 
5  |  |  *  | 
6  |  |  * This file is part of GNUTLS.  | 
7  |  |  *  | 
8  |  |  * The GNUTLS library 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_MBUFFERS_H  | 
24  |  | #define GNUTLS_LIB_MBUFFERS_H  | 
25  |  |  | 
26  |  | #include "gnutls_int.h"  | 
27  |  | #include "errors.h"  | 
28  |  | #include <assert.h>  | 
29  |  |  | 
30  |  | void _mbuffer_head_init(mbuffer_head_st *buf);  | 
31  |  | void _mbuffer_head_clear(mbuffer_head_st *buf);  | 
32  |  | void _mbuffer_enqueue(mbuffer_head_st *buf, mbuffer_st *bufel);  | 
33  |  | mbuffer_st *_mbuffer_dequeue(mbuffer_head_st *buf, mbuffer_st *bufel);  | 
34  |  | int _mbuffer_head_remove_bytes(mbuffer_head_st *buf, size_t bytes);  | 
35  |  | mbuffer_st *_mbuffer_alloc(size_t maximum_size);  | 
36  |  | int _mbuffer_linearize(mbuffer_head_st *buf);  | 
37  |  |  | 
38  |  | mbuffer_st *_mbuffer_head_get_first(mbuffer_head_st *buf, gnutls_datum_t *msg);  | 
39  |  | mbuffer_st *_mbuffer_head_get_next(mbuffer_st *cur, gnutls_datum_t *msg);  | 
40  |  |  | 
41  |  | void _mbuffer_head_push_first(mbuffer_head_st *buf, mbuffer_st *bufel);  | 
42  |  |  | 
43  |  | mbuffer_st *_mbuffer_head_pop_first(mbuffer_head_st *buf);  | 
44  |  |  | 
45  |  | /* This is dangerous since it will replace bufel with a new  | 
46  |  |  * one.  | 
47  |  |  */  | 
48  |  | int _mbuffer_append_data(mbuffer_st *bufel, void *newdata, size_t newdata_size);  | 
49  |  |  | 
50  |  | /* For "user" use. One can have buffer data and header.  | 
51  |  |  */  | 
52  |  |  | 
53  |  | inline static void *_mbuffer_get_uhead_ptr(mbuffer_st *bufel)  | 
54  | 0  | { | 
55  | 0  |   return bufel->msg.data + bufel->mark;  | 
56  | 0  | } Unexecuted instantiation: record.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: cipher.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: handshake-tls13.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: mbuffers.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: buffers.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: handshake.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: kx.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: session.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: sslv2_compat.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: constate.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: alert.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: state.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: cert-cred-x509.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: dtls.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: system_override.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: prf.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: handshake-checks.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: dtls-sw.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: ocsp-api.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: encrypted_extensions.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: certificate_request.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: certificate_verify.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: finished.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: key_update.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: hello_retry.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: session_ticket.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: certificate.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: early_data.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: post_handshake.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: heartbeat.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: key_share.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: pre_shared_key.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: status_request.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: supported_versions.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: cert.c:_mbuffer_get_uhead_ptr Unexecuted instantiation: tls-sig.c:_mbuffer_get_uhead_ptr  | 
57  |  |  | 
58  |  | inline static void *_mbuffer_get_udata_ptr(mbuffer_st *bufel)  | 
59  | 0  | { | 
60  | 0  |   return bufel->msg.data + bufel->uhead_mark + bufel->mark;  | 
61  | 0  | } Unexecuted instantiation: record.c:_mbuffer_get_udata_ptr Unexecuted instantiation: cipher.c:_mbuffer_get_udata_ptr Unexecuted instantiation: handshake-tls13.c:_mbuffer_get_udata_ptr Unexecuted instantiation: mbuffers.c:_mbuffer_get_udata_ptr Unexecuted instantiation: buffers.c:_mbuffer_get_udata_ptr Unexecuted instantiation: handshake.c:_mbuffer_get_udata_ptr Unexecuted instantiation: kx.c:_mbuffer_get_udata_ptr Unexecuted instantiation: session.c:_mbuffer_get_udata_ptr Unexecuted instantiation: sslv2_compat.c:_mbuffer_get_udata_ptr Unexecuted instantiation: constate.c:_mbuffer_get_udata_ptr Unexecuted instantiation: alert.c:_mbuffer_get_udata_ptr Unexecuted instantiation: state.c:_mbuffer_get_udata_ptr Unexecuted instantiation: cert-cred-x509.c:_mbuffer_get_udata_ptr Unexecuted instantiation: dtls.c:_mbuffer_get_udata_ptr Unexecuted instantiation: system_override.c:_mbuffer_get_udata_ptr Unexecuted instantiation: prf.c:_mbuffer_get_udata_ptr Unexecuted instantiation: handshake-checks.c:_mbuffer_get_udata_ptr Unexecuted instantiation: dtls-sw.c:_mbuffer_get_udata_ptr Unexecuted instantiation: ocsp-api.c:_mbuffer_get_udata_ptr Unexecuted instantiation: encrypted_extensions.c:_mbuffer_get_udata_ptr Unexecuted instantiation: certificate_request.c:_mbuffer_get_udata_ptr Unexecuted instantiation: certificate_verify.c:_mbuffer_get_udata_ptr Unexecuted instantiation: finished.c:_mbuffer_get_udata_ptr Unexecuted instantiation: key_update.c:_mbuffer_get_udata_ptr Unexecuted instantiation: hello_retry.c:_mbuffer_get_udata_ptr Unexecuted instantiation: session_ticket.c:_mbuffer_get_udata_ptr Unexecuted instantiation: certificate.c:_mbuffer_get_udata_ptr Unexecuted instantiation: early_data.c:_mbuffer_get_udata_ptr Unexecuted instantiation: post_handshake.c:_mbuffer_get_udata_ptr Unexecuted instantiation: heartbeat.c:_mbuffer_get_udata_ptr Unexecuted instantiation: key_share.c:_mbuffer_get_udata_ptr Unexecuted instantiation: pre_shared_key.c:_mbuffer_get_udata_ptr Unexecuted instantiation: status_request.c:_mbuffer_get_udata_ptr Unexecuted instantiation: supported_versions.c:_mbuffer_get_udata_ptr Unexecuted instantiation: cert.c:_mbuffer_get_udata_ptr Unexecuted instantiation: tls-sig.c:_mbuffer_get_udata_ptr  | 
62  |  |  | 
63  |  | inline static void _mbuffer_set_udata_size(mbuffer_st *bufel, size_t size)  | 
64  | 0  | { | 
65  | 0  |   bufel->msg.size = size + bufel->uhead_mark + bufel->mark;  | 
66  | 0  | } Unexecuted instantiation: record.c:_mbuffer_set_udata_size Unexecuted instantiation: cipher.c:_mbuffer_set_udata_size Unexecuted instantiation: handshake-tls13.c:_mbuffer_set_udata_size Unexecuted instantiation: mbuffers.c:_mbuffer_set_udata_size Unexecuted instantiation: buffers.c:_mbuffer_set_udata_size Unexecuted instantiation: handshake.c:_mbuffer_set_udata_size Unexecuted instantiation: kx.c:_mbuffer_set_udata_size Unexecuted instantiation: session.c:_mbuffer_set_udata_size Unexecuted instantiation: sslv2_compat.c:_mbuffer_set_udata_size Unexecuted instantiation: constate.c:_mbuffer_set_udata_size Unexecuted instantiation: alert.c:_mbuffer_set_udata_size Unexecuted instantiation: state.c:_mbuffer_set_udata_size Unexecuted instantiation: cert-cred-x509.c:_mbuffer_set_udata_size Unexecuted instantiation: dtls.c:_mbuffer_set_udata_size Unexecuted instantiation: system_override.c:_mbuffer_set_udata_size Unexecuted instantiation: prf.c:_mbuffer_set_udata_size Unexecuted instantiation: handshake-checks.c:_mbuffer_set_udata_size Unexecuted instantiation: dtls-sw.c:_mbuffer_set_udata_size Unexecuted instantiation: ocsp-api.c:_mbuffer_set_udata_size Unexecuted instantiation: encrypted_extensions.c:_mbuffer_set_udata_size Unexecuted instantiation: certificate_request.c:_mbuffer_set_udata_size Unexecuted instantiation: certificate_verify.c:_mbuffer_set_udata_size Unexecuted instantiation: finished.c:_mbuffer_set_udata_size Unexecuted instantiation: key_update.c:_mbuffer_set_udata_size Unexecuted instantiation: hello_retry.c:_mbuffer_set_udata_size Unexecuted instantiation: session_ticket.c:_mbuffer_set_udata_size Unexecuted instantiation: certificate.c:_mbuffer_set_udata_size Unexecuted instantiation: early_data.c:_mbuffer_set_udata_size Unexecuted instantiation: post_handshake.c:_mbuffer_set_udata_size Unexecuted instantiation: heartbeat.c:_mbuffer_set_udata_size Unexecuted instantiation: key_share.c:_mbuffer_set_udata_size Unexecuted instantiation: pre_shared_key.c:_mbuffer_set_udata_size Unexecuted instantiation: status_request.c:_mbuffer_set_udata_size Unexecuted instantiation: supported_versions.c:_mbuffer_set_udata_size Unexecuted instantiation: cert.c:_mbuffer_set_udata_size Unexecuted instantiation: tls-sig.c:_mbuffer_set_udata_size  | 
67  |  |  | 
68  |  | inline static void _mbuffer_set_udata(mbuffer_st *bufel, void *data,  | 
69  |  |               size_t data_size)  | 
70  | 0  | { | 
71  | 0  |   memcpy(_mbuffer_get_udata_ptr(bufel), data, data_size);  | 
72  | 0  |   _mbuffer_set_udata_size(bufel, data_size);  | 
73  | 0  | } Unexecuted instantiation: record.c:_mbuffer_set_udata Unexecuted instantiation: cipher.c:_mbuffer_set_udata Unexecuted instantiation: handshake-tls13.c:_mbuffer_set_udata Unexecuted instantiation: mbuffers.c:_mbuffer_set_udata Unexecuted instantiation: buffers.c:_mbuffer_set_udata Unexecuted instantiation: handshake.c:_mbuffer_set_udata Unexecuted instantiation: kx.c:_mbuffer_set_udata Unexecuted instantiation: session.c:_mbuffer_set_udata Unexecuted instantiation: sslv2_compat.c:_mbuffer_set_udata Unexecuted instantiation: constate.c:_mbuffer_set_udata Unexecuted instantiation: alert.c:_mbuffer_set_udata Unexecuted instantiation: state.c:_mbuffer_set_udata Unexecuted instantiation: cert-cred-x509.c:_mbuffer_set_udata Unexecuted instantiation: dtls.c:_mbuffer_set_udata Unexecuted instantiation: system_override.c:_mbuffer_set_udata Unexecuted instantiation: prf.c:_mbuffer_set_udata Unexecuted instantiation: handshake-checks.c:_mbuffer_set_udata Unexecuted instantiation: dtls-sw.c:_mbuffer_set_udata Unexecuted instantiation: ocsp-api.c:_mbuffer_set_udata Unexecuted instantiation: encrypted_extensions.c:_mbuffer_set_udata Unexecuted instantiation: certificate_request.c:_mbuffer_set_udata Unexecuted instantiation: certificate_verify.c:_mbuffer_set_udata Unexecuted instantiation: finished.c:_mbuffer_set_udata Unexecuted instantiation: key_update.c:_mbuffer_set_udata Unexecuted instantiation: hello_retry.c:_mbuffer_set_udata Unexecuted instantiation: session_ticket.c:_mbuffer_set_udata Unexecuted instantiation: certificate.c:_mbuffer_set_udata Unexecuted instantiation: early_data.c:_mbuffer_set_udata Unexecuted instantiation: post_handshake.c:_mbuffer_set_udata Unexecuted instantiation: heartbeat.c:_mbuffer_set_udata Unexecuted instantiation: key_share.c:_mbuffer_set_udata Unexecuted instantiation: pre_shared_key.c:_mbuffer_set_udata Unexecuted instantiation: status_request.c:_mbuffer_set_udata Unexecuted instantiation: supported_versions.c:_mbuffer_set_udata Unexecuted instantiation: cert.c:_mbuffer_set_udata Unexecuted instantiation: tls-sig.c:_mbuffer_set_udata  | 
74  |  |  | 
75  |  | inline static size_t _mbuffer_get_udata_size(mbuffer_st *bufel)  | 
76  | 0  | { | 
77  | 0  |   return bufel->msg.size - bufel->uhead_mark - bufel->mark;  | 
78  | 0  | } Unexecuted instantiation: record.c:_mbuffer_get_udata_size Unexecuted instantiation: cipher.c:_mbuffer_get_udata_size Unexecuted instantiation: handshake-tls13.c:_mbuffer_get_udata_size Unexecuted instantiation: mbuffers.c:_mbuffer_get_udata_size Unexecuted instantiation: buffers.c:_mbuffer_get_udata_size Unexecuted instantiation: handshake.c:_mbuffer_get_udata_size Unexecuted instantiation: kx.c:_mbuffer_get_udata_size Unexecuted instantiation: session.c:_mbuffer_get_udata_size Unexecuted instantiation: sslv2_compat.c:_mbuffer_get_udata_size Unexecuted instantiation: constate.c:_mbuffer_get_udata_size Unexecuted instantiation: alert.c:_mbuffer_get_udata_size Unexecuted instantiation: state.c:_mbuffer_get_udata_size Unexecuted instantiation: cert-cred-x509.c:_mbuffer_get_udata_size Unexecuted instantiation: dtls.c:_mbuffer_get_udata_size Unexecuted instantiation: system_override.c:_mbuffer_get_udata_size Unexecuted instantiation: prf.c:_mbuffer_get_udata_size Unexecuted instantiation: handshake-checks.c:_mbuffer_get_udata_size Unexecuted instantiation: dtls-sw.c:_mbuffer_get_udata_size Unexecuted instantiation: ocsp-api.c:_mbuffer_get_udata_size Unexecuted instantiation: encrypted_extensions.c:_mbuffer_get_udata_size Unexecuted instantiation: certificate_request.c:_mbuffer_get_udata_size Unexecuted instantiation: certificate_verify.c:_mbuffer_get_udata_size Unexecuted instantiation: finished.c:_mbuffer_get_udata_size Unexecuted instantiation: key_update.c:_mbuffer_get_udata_size Unexecuted instantiation: hello_retry.c:_mbuffer_get_udata_size Unexecuted instantiation: session_ticket.c:_mbuffer_get_udata_size Unexecuted instantiation: certificate.c:_mbuffer_get_udata_size Unexecuted instantiation: early_data.c:_mbuffer_get_udata_size Unexecuted instantiation: post_handshake.c:_mbuffer_get_udata_size Unexecuted instantiation: heartbeat.c:_mbuffer_get_udata_size Unexecuted instantiation: key_share.c:_mbuffer_get_udata_size Unexecuted instantiation: pre_shared_key.c:_mbuffer_get_udata_size Unexecuted instantiation: status_request.c:_mbuffer_get_udata_size Unexecuted instantiation: supported_versions.c:_mbuffer_get_udata_size Unexecuted instantiation: cert.c:_mbuffer_get_udata_size Unexecuted instantiation: tls-sig.c:_mbuffer_get_udata_size  | 
79  |  |  | 
80  |  | /* discards size bytes from the begging of the buffer */  | 
81  |  | inline static void _mbuffer_consume(mbuffer_head_st *buf, mbuffer_st *bufel,  | 
82  |  |             size_t size)  | 
83  | 0  | { | 
84  | 0  |   bufel->uhead_mark = 0;  | 
85  | 0  |   if (bufel->mark + size < bufel->msg.size)  | 
86  | 0  |     bufel->mark += size;  | 
87  | 0  |   else  | 
88  | 0  |     bufel->mark = bufel->msg.size;  | 
89  |  | 
  | 
90  | 0  |   buf->byte_length -= size;  | 
91  | 0  | } Unexecuted instantiation: record.c:_mbuffer_consume Unexecuted instantiation: cipher.c:_mbuffer_consume Unexecuted instantiation: handshake-tls13.c:_mbuffer_consume Unexecuted instantiation: mbuffers.c:_mbuffer_consume Unexecuted instantiation: buffers.c:_mbuffer_consume Unexecuted instantiation: handshake.c:_mbuffer_consume Unexecuted instantiation: kx.c:_mbuffer_consume Unexecuted instantiation: session.c:_mbuffer_consume Unexecuted instantiation: sslv2_compat.c:_mbuffer_consume Unexecuted instantiation: constate.c:_mbuffer_consume Unexecuted instantiation: alert.c:_mbuffer_consume Unexecuted instantiation: state.c:_mbuffer_consume Unexecuted instantiation: cert-cred-x509.c:_mbuffer_consume Unexecuted instantiation: dtls.c:_mbuffer_consume Unexecuted instantiation: system_override.c:_mbuffer_consume Unexecuted instantiation: prf.c:_mbuffer_consume Unexecuted instantiation: handshake-checks.c:_mbuffer_consume Unexecuted instantiation: dtls-sw.c:_mbuffer_consume Unexecuted instantiation: ocsp-api.c:_mbuffer_consume Unexecuted instantiation: encrypted_extensions.c:_mbuffer_consume Unexecuted instantiation: certificate_request.c:_mbuffer_consume Unexecuted instantiation: certificate_verify.c:_mbuffer_consume Unexecuted instantiation: finished.c:_mbuffer_consume Unexecuted instantiation: key_update.c:_mbuffer_consume Unexecuted instantiation: hello_retry.c:_mbuffer_consume Unexecuted instantiation: session_ticket.c:_mbuffer_consume Unexecuted instantiation: certificate.c:_mbuffer_consume Unexecuted instantiation: early_data.c:_mbuffer_consume Unexecuted instantiation: post_handshake.c:_mbuffer_consume Unexecuted instantiation: heartbeat.c:_mbuffer_consume Unexecuted instantiation: key_share.c:_mbuffer_consume Unexecuted instantiation: pre_shared_key.c:_mbuffer_consume Unexecuted instantiation: status_request.c:_mbuffer_consume Unexecuted instantiation: supported_versions.c:_mbuffer_consume Unexecuted instantiation: cert.c:_mbuffer_consume Unexecuted instantiation: tls-sig.c:_mbuffer_consume  | 
92  |  |  | 
93  |  | inline static size_t _mbuffer_get_uhead_size(mbuffer_st *bufel)  | 
94  | 0  | { | 
95  | 0  |   return bufel->uhead_mark;  | 
96  | 0  | } Unexecuted instantiation: record.c:_mbuffer_get_uhead_size Unexecuted instantiation: cipher.c:_mbuffer_get_uhead_size Unexecuted instantiation: handshake-tls13.c:_mbuffer_get_uhead_size Unexecuted instantiation: mbuffers.c:_mbuffer_get_uhead_size Unexecuted instantiation: buffers.c:_mbuffer_get_uhead_size Unexecuted instantiation: handshake.c:_mbuffer_get_uhead_size Unexecuted instantiation: kx.c:_mbuffer_get_uhead_size Unexecuted instantiation: session.c:_mbuffer_get_uhead_size Unexecuted instantiation: sslv2_compat.c:_mbuffer_get_uhead_size Unexecuted instantiation: constate.c:_mbuffer_get_uhead_size Unexecuted instantiation: alert.c:_mbuffer_get_uhead_size Unexecuted instantiation: state.c:_mbuffer_get_uhead_size Unexecuted instantiation: cert-cred-x509.c:_mbuffer_get_uhead_size Unexecuted instantiation: dtls.c:_mbuffer_get_uhead_size Unexecuted instantiation: system_override.c:_mbuffer_get_uhead_size Unexecuted instantiation: prf.c:_mbuffer_get_uhead_size Unexecuted instantiation: handshake-checks.c:_mbuffer_get_uhead_size Unexecuted instantiation: dtls-sw.c:_mbuffer_get_uhead_size Unexecuted instantiation: ocsp-api.c:_mbuffer_get_uhead_size Unexecuted instantiation: encrypted_extensions.c:_mbuffer_get_uhead_size Unexecuted instantiation: certificate_request.c:_mbuffer_get_uhead_size Unexecuted instantiation: certificate_verify.c:_mbuffer_get_uhead_size Unexecuted instantiation: finished.c:_mbuffer_get_uhead_size Unexecuted instantiation: key_update.c:_mbuffer_get_uhead_size Unexecuted instantiation: hello_retry.c:_mbuffer_get_uhead_size Unexecuted instantiation: session_ticket.c:_mbuffer_get_uhead_size Unexecuted instantiation: certificate.c:_mbuffer_get_uhead_size Unexecuted instantiation: early_data.c:_mbuffer_get_uhead_size Unexecuted instantiation: post_handshake.c:_mbuffer_get_uhead_size Unexecuted instantiation: heartbeat.c:_mbuffer_get_uhead_size Unexecuted instantiation: key_share.c:_mbuffer_get_uhead_size Unexecuted instantiation: pre_shared_key.c:_mbuffer_get_uhead_size Unexecuted instantiation: status_request.c:_mbuffer_get_uhead_size Unexecuted instantiation: supported_versions.c:_mbuffer_get_uhead_size Unexecuted instantiation: cert.c:_mbuffer_get_uhead_size Unexecuted instantiation: tls-sig.c:_mbuffer_get_uhead_size  | 
97  |  |  | 
98  |  | inline static void _mbuffer_set_uhead_size(mbuffer_st *bufel, size_t size)  | 
99  | 0  | { | 
100  | 0  |   bufel->uhead_mark = size;  | 
101  | 0  | } Unexecuted instantiation: record.c:_mbuffer_set_uhead_size Unexecuted instantiation: cipher.c:_mbuffer_set_uhead_size Unexecuted instantiation: handshake-tls13.c:_mbuffer_set_uhead_size Unexecuted instantiation: mbuffers.c:_mbuffer_set_uhead_size Unexecuted instantiation: buffers.c:_mbuffer_set_uhead_size Unexecuted instantiation: handshake.c:_mbuffer_set_uhead_size Unexecuted instantiation: kx.c:_mbuffer_set_uhead_size Unexecuted instantiation: session.c:_mbuffer_set_uhead_size Unexecuted instantiation: sslv2_compat.c:_mbuffer_set_uhead_size Unexecuted instantiation: constate.c:_mbuffer_set_uhead_size Unexecuted instantiation: alert.c:_mbuffer_set_uhead_size Unexecuted instantiation: state.c:_mbuffer_set_uhead_size Unexecuted instantiation: cert-cred-x509.c:_mbuffer_set_uhead_size Unexecuted instantiation: dtls.c:_mbuffer_set_uhead_size Unexecuted instantiation: system_override.c:_mbuffer_set_uhead_size Unexecuted instantiation: prf.c:_mbuffer_set_uhead_size Unexecuted instantiation: handshake-checks.c:_mbuffer_set_uhead_size Unexecuted instantiation: dtls-sw.c:_mbuffer_set_uhead_size Unexecuted instantiation: ocsp-api.c:_mbuffer_set_uhead_size Unexecuted instantiation: encrypted_extensions.c:_mbuffer_set_uhead_size Unexecuted instantiation: certificate_request.c:_mbuffer_set_uhead_size Unexecuted instantiation: certificate_verify.c:_mbuffer_set_uhead_size Unexecuted instantiation: finished.c:_mbuffer_set_uhead_size Unexecuted instantiation: key_update.c:_mbuffer_set_uhead_size Unexecuted instantiation: hello_retry.c:_mbuffer_set_uhead_size Unexecuted instantiation: session_ticket.c:_mbuffer_set_uhead_size Unexecuted instantiation: certificate.c:_mbuffer_set_uhead_size Unexecuted instantiation: early_data.c:_mbuffer_set_uhead_size Unexecuted instantiation: post_handshake.c:_mbuffer_set_uhead_size Unexecuted instantiation: heartbeat.c:_mbuffer_set_uhead_size Unexecuted instantiation: key_share.c:_mbuffer_set_uhead_size Unexecuted instantiation: pre_shared_key.c:_mbuffer_set_uhead_size Unexecuted instantiation: status_request.c:_mbuffer_set_uhead_size Unexecuted instantiation: supported_versions.c:_mbuffer_set_uhead_size Unexecuted instantiation: cert.c:_mbuffer_set_uhead_size Unexecuted instantiation: tls-sig.c:_mbuffer_set_uhead_size  | 
102  |  |  | 
103  |  | inline static void _mbuffer_init(mbuffer_st *bufel, size_t max)  | 
104  | 0  | { | 
105  | 0  |   memset(bufel, 0, sizeof(*bufel));  | 
106  | 0  |   bufel->maximum_size = max;  | 
107  |  |  | 
108  |  |   /* payload points after the mbuffer_st structure */  | 
109  | 0  |   bufel->msg.data = (uint8_t *)bufel + sizeof(mbuffer_st);  | 
110  | 0  | } Unexecuted instantiation: record.c:_mbuffer_init Unexecuted instantiation: cipher.c:_mbuffer_init Unexecuted instantiation: handshake-tls13.c:_mbuffer_init Unexecuted instantiation: mbuffers.c:_mbuffer_init Unexecuted instantiation: buffers.c:_mbuffer_init Unexecuted instantiation: handshake.c:_mbuffer_init Unexecuted instantiation: kx.c:_mbuffer_init Unexecuted instantiation: session.c:_mbuffer_init Unexecuted instantiation: sslv2_compat.c:_mbuffer_init Unexecuted instantiation: constate.c:_mbuffer_init Unexecuted instantiation: alert.c:_mbuffer_init Unexecuted instantiation: state.c:_mbuffer_init Unexecuted instantiation: cert-cred-x509.c:_mbuffer_init Unexecuted instantiation: dtls.c:_mbuffer_init Unexecuted instantiation: system_override.c:_mbuffer_init Unexecuted instantiation: prf.c:_mbuffer_init Unexecuted instantiation: handshake-checks.c:_mbuffer_init Unexecuted instantiation: dtls-sw.c:_mbuffer_init Unexecuted instantiation: ocsp-api.c:_mbuffer_init Unexecuted instantiation: encrypted_extensions.c:_mbuffer_init Unexecuted instantiation: certificate_request.c:_mbuffer_init Unexecuted instantiation: certificate_verify.c:_mbuffer_init Unexecuted instantiation: finished.c:_mbuffer_init Unexecuted instantiation: key_update.c:_mbuffer_init Unexecuted instantiation: hello_retry.c:_mbuffer_init Unexecuted instantiation: session_ticket.c:_mbuffer_init Unexecuted instantiation: certificate.c:_mbuffer_init Unexecuted instantiation: early_data.c:_mbuffer_init Unexecuted instantiation: post_handshake.c:_mbuffer_init Unexecuted instantiation: heartbeat.c:_mbuffer_init Unexecuted instantiation: key_share.c:_mbuffer_init Unexecuted instantiation: pre_shared_key.c:_mbuffer_init Unexecuted instantiation: status_request.c:_mbuffer_init Unexecuted instantiation: supported_versions.c:_mbuffer_init Unexecuted instantiation: cert.c:_mbuffer_init Unexecuted instantiation: tls-sig.c:_mbuffer_init  | 
111  |  |  | 
112  |  | /* Helper functions to utilize a gnutls_buffer_st in order  | 
113  |  |  * to generate a gnutls_mbuffer_st, without multiple allocations.  | 
114  |  |  */  | 
115  |  | inline static int _gnutls_buffer_init_mbuffer(gnutls_buffer_st *buf,  | 
116  |  |                 size_t header_size)  | 
117  | 0  | { | 
118  | 0  |   int ret;  | 
119  | 0  |   mbuffer_st *bufel;  | 
120  |  | 
  | 
121  | 0  |   _gnutls_buffer_init(buf);  | 
122  |  | 
  | 
123  | 0  |   ret = _gnutls_buffer_resize(buf, sizeof(mbuffer_st) + header_size);  | 
124  | 0  |   if (ret < 0)  | 
125  | 0  |     return gnutls_assert_val(ret);  | 
126  |  |  | 
127  |  |   /* we store the uhead size on the uninitialized bufel, only to read  | 
128  |  |    * it back on _gnutls_buffer_to_mbuffer(). */  | 
129  | 0  |   bufel = (void *)buf->data;  | 
130  | 0  |   _mbuffer_set_uhead_size(bufel, header_size);  | 
131  |  | 
  | 
132  | 0  |   buf->length = sizeof(mbuffer_st) + header_size;  | 
133  |  | 
  | 
134  | 0  |   return 0;  | 
135  | 0  | } Unexecuted instantiation: record.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: cipher.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: handshake-tls13.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: mbuffers.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: buffers.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: handshake.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: kx.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: session.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: sslv2_compat.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: constate.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: alert.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: state.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: cert-cred-x509.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: dtls.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: system_override.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: prf.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: handshake-checks.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: dtls-sw.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: ocsp-api.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: encrypted_extensions.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: certificate_request.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: certificate_verify.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: finished.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: key_update.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: hello_retry.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: session_ticket.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: certificate.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: early_data.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: post_handshake.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: heartbeat.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: key_share.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: pre_shared_key.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: status_request.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: supported_versions.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: cert.c:_gnutls_buffer_init_mbuffer Unexecuted instantiation: tls-sig.c:_gnutls_buffer_init_mbuffer  | 
136  |  |  | 
137  |  | #define _gnutls_buffer_init_handshake_mbuffer(b) \  | 
138  | 0  |   _gnutls_buffer_init_mbuffer(b, HANDSHAKE_HEADER_SIZE(session))  | 
139  |  |  | 
140  |  | /* Cannot fail */  | 
141  |  | inline static mbuffer_st *_gnutls_buffer_to_mbuffer(gnutls_buffer_st *buf)  | 
142  | 0  | { | 
143  | 0  |   mbuffer_st *bufel;  | 
144  | 0  |   unsigned header_size;  | 
145  |  | 
  | 
146  | 0  |   bufel = (void *)buf->data;  | 
147  |  | 
  | 
148  | 0  |   header_size = _mbuffer_get_uhead_size(bufel);  | 
149  | 0  |   assert(buf->length >= sizeof(mbuffer_st) + header_size);  | 
150  |  |  | 
151  | 0  |   _mbuffer_init(bufel, buf->length - sizeof(mbuffer_st));  | 
152  |  | 
  | 
153  | 0  |   _mbuffer_set_udata_size(bufel, buf->length - sizeof(mbuffer_st));  | 
154  | 0  |   _mbuffer_set_uhead_size(bufel, header_size);  | 
155  |  | 
  | 
156  | 0  |   _gnutls_buffer_init(buf); /* avoid double frees */  | 
157  |  | 
  | 
158  | 0  |   return bufel;  | 
159  | 0  | } Unexecuted instantiation: record.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: cipher.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: handshake-tls13.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: mbuffers.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: buffers.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: handshake.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: kx.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: session.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: sslv2_compat.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: constate.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: alert.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: state.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: cert-cred-x509.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: dtls.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: system_override.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: prf.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: handshake-checks.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: dtls-sw.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: ocsp-api.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: encrypted_extensions.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: certificate_request.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: certificate_verify.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: finished.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: key_update.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: hello_retry.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: session_ticket.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: certificate.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: early_data.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: post_handshake.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: heartbeat.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: key_share.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: pre_shared_key.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: status_request.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: supported_versions.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: cert.c:_gnutls_buffer_to_mbuffer Unexecuted instantiation: tls-sig.c:_gnutls_buffer_to_mbuffer  | 
160  |  |  | 
161  |  | inline static mbuffer_st *_gnutls_handshake_alloc(gnutls_session_t session,  | 
162  |  |               size_t maximum)  | 
163  | 0  | { | 
164  | 0  |   mbuffer_st *bufel =  | 
165  | 0  |     _mbuffer_alloc(HANDSHAKE_HEADER_SIZE(session) + maximum);  | 
166  |  | 
  | 
167  | 0  |   if (!bufel)  | 
168  | 0  |     return NULL;  | 
169  |  |  | 
170  | 0  |   _mbuffer_set_uhead_size(bufel, HANDSHAKE_HEADER_SIZE(session));  | 
171  | 0  |   _mbuffer_set_udata_size(bufel, maximum);  | 
172  |  | 
  | 
173  | 0  |   return bufel;  | 
174  | 0  | } Unexecuted instantiation: record.c:_gnutls_handshake_alloc Unexecuted instantiation: cipher.c:_gnutls_handshake_alloc Unexecuted instantiation: handshake-tls13.c:_gnutls_handshake_alloc Unexecuted instantiation: mbuffers.c:_gnutls_handshake_alloc Unexecuted instantiation: buffers.c:_gnutls_handshake_alloc Unexecuted instantiation: handshake.c:_gnutls_handshake_alloc Unexecuted instantiation: kx.c:_gnutls_handshake_alloc Unexecuted instantiation: session.c:_gnutls_handshake_alloc Unexecuted instantiation: sslv2_compat.c:_gnutls_handshake_alloc Unexecuted instantiation: constate.c:_gnutls_handshake_alloc Unexecuted instantiation: alert.c:_gnutls_handshake_alloc Unexecuted instantiation: state.c:_gnutls_handshake_alloc Unexecuted instantiation: cert-cred-x509.c:_gnutls_handshake_alloc Unexecuted instantiation: dtls.c:_gnutls_handshake_alloc Unexecuted instantiation: system_override.c:_gnutls_handshake_alloc Unexecuted instantiation: prf.c:_gnutls_handshake_alloc Unexecuted instantiation: handshake-checks.c:_gnutls_handshake_alloc Unexecuted instantiation: dtls-sw.c:_gnutls_handshake_alloc Unexecuted instantiation: ocsp-api.c:_gnutls_handshake_alloc Unexecuted instantiation: encrypted_extensions.c:_gnutls_handshake_alloc Unexecuted instantiation: certificate_request.c:_gnutls_handshake_alloc Unexecuted instantiation: certificate_verify.c:_gnutls_handshake_alloc Unexecuted instantiation: finished.c:_gnutls_handshake_alloc Unexecuted instantiation: key_update.c:_gnutls_handshake_alloc Unexecuted instantiation: hello_retry.c:_gnutls_handshake_alloc Unexecuted instantiation: session_ticket.c:_gnutls_handshake_alloc Unexecuted instantiation: certificate.c:_gnutls_handshake_alloc Unexecuted instantiation: early_data.c:_gnutls_handshake_alloc Unexecuted instantiation: post_handshake.c:_gnutls_handshake_alloc Unexecuted instantiation: heartbeat.c:_gnutls_handshake_alloc Unexecuted instantiation: key_share.c:_gnutls_handshake_alloc Unexecuted instantiation: pre_shared_key.c:_gnutls_handshake_alloc Unexecuted instantiation: status_request.c:_gnutls_handshake_alloc Unexecuted instantiation: supported_versions.c:_gnutls_handshake_alloc Unexecuted instantiation: cert.c:_gnutls_handshake_alloc Unexecuted instantiation: tls-sig.c:_gnutls_handshake_alloc  | 
175  |  |  | 
176  |  | /* Free a segment, if the pointer is not NULL  | 
177  |  |  *  | 
178  |  |  * We take a ** to detect and fix double free bugs (the dangling  | 
179  |  |  * pointer case). It also makes sure the pointer has a known value  | 
180  |  |  * after freeing.  | 
181  |  |  */  | 
182  |  | inline static void _mbuffer_xfree(mbuffer_st **bufel)  | 
183  | 0  | { | 
184  | 0  |   if (*bufel)  | 
185  | 0  |     gnutls_free(*bufel);  | 
186  |  | 
  | 
187  | 0  |   *bufel = NULL;  | 
188  | 0  | } Unexecuted instantiation: record.c:_mbuffer_xfree Unexecuted instantiation: cipher.c:_mbuffer_xfree Unexecuted instantiation: handshake-tls13.c:_mbuffer_xfree Unexecuted instantiation: mbuffers.c:_mbuffer_xfree Unexecuted instantiation: buffers.c:_mbuffer_xfree Unexecuted instantiation: handshake.c:_mbuffer_xfree Unexecuted instantiation: kx.c:_mbuffer_xfree Unexecuted instantiation: session.c:_mbuffer_xfree Unexecuted instantiation: sslv2_compat.c:_mbuffer_xfree Unexecuted instantiation: constate.c:_mbuffer_xfree Unexecuted instantiation: alert.c:_mbuffer_xfree Unexecuted instantiation: state.c:_mbuffer_xfree Unexecuted instantiation: cert-cred-x509.c:_mbuffer_xfree Unexecuted instantiation: dtls.c:_mbuffer_xfree Unexecuted instantiation: system_override.c:_mbuffer_xfree Unexecuted instantiation: prf.c:_mbuffer_xfree Unexecuted instantiation: handshake-checks.c:_mbuffer_xfree Unexecuted instantiation: dtls-sw.c:_mbuffer_xfree Unexecuted instantiation: ocsp-api.c:_mbuffer_xfree Unexecuted instantiation: encrypted_extensions.c:_mbuffer_xfree Unexecuted instantiation: certificate_request.c:_mbuffer_xfree Unexecuted instantiation: certificate_verify.c:_mbuffer_xfree Unexecuted instantiation: finished.c:_mbuffer_xfree Unexecuted instantiation: key_update.c:_mbuffer_xfree Unexecuted instantiation: hello_retry.c:_mbuffer_xfree Unexecuted instantiation: session_ticket.c:_mbuffer_xfree Unexecuted instantiation: certificate.c:_mbuffer_xfree Unexecuted instantiation: early_data.c:_mbuffer_xfree Unexecuted instantiation: post_handshake.c:_mbuffer_xfree Unexecuted instantiation: heartbeat.c:_mbuffer_xfree Unexecuted instantiation: key_share.c:_mbuffer_xfree Unexecuted instantiation: pre_shared_key.c:_mbuffer_xfree Unexecuted instantiation: status_request.c:_mbuffer_xfree Unexecuted instantiation: supported_versions.c:_mbuffer_xfree Unexecuted instantiation: cert.c:_mbuffer_xfree Unexecuted instantiation: tls-sig.c:_mbuffer_xfree  | 
189  |  |  | 
190  |  | #ifdef ENABLE_ALIGN16  | 
191  |  | mbuffer_st *_mbuffer_alloc_align16(size_t maximum_size, unsigned align_pos);  | 
192  |  | int _mbuffer_linearize_align16(mbuffer_head_st *buf, unsigned align_pos);  | 
193  |  | #else  | 
194  |  | #define _mbuffer_alloc_align16(x, y) _mbuffer_alloc(x)  | 
195  |  | #define _mbuffer_linearize_align16(x, y) _mbuffer_linearize(x)  | 
196  |  | #endif  | 
197  |  |  | 
198  |  | #endif /* GNUTLS_LIB_MBUFFERS_H */  |