/src/gnutls/lib/str_array.h
Line  | Count  | Source (jump to first uncovered line)  | 
1  |  | /*  | 
2  |  |  * Copyright (C) 2011-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_STR_ARRAY_H  | 
24  |  | #define GNUTLS_LIB_STR_ARRAY_H  | 
25  |  |  | 
26  |  | #include "gnutls_int.h"  | 
27  |  | #include "errors.h"  | 
28  |  |  | 
29  |  | /* Functionality to allow an array of strings. Strings  | 
30  |  |  * are allowed to be added to the list and matched against it.  | 
31  |  |  */  | 
32  |  |  | 
33  |  | typedef struct gnutls_str_array_st { | 
34  |  |   char *str;  | 
35  |  |   unsigned int len;  | 
36  |  |   struct gnutls_str_array_st *next;  | 
37  |  | } *gnutls_str_array_t;  | 
38  |  |  | 
39  |  | inline static void _gnutls_str_array_init(gnutls_str_array_t *head)  | 
40  | 0  | { | 
41  | 0  |   *head = NULL;  | 
42  | 0  | } Unexecuted instantiation: handshake-tls13.c:_gnutls_str_array_init Unexecuted instantiation: handshake.c:_gnutls_str_array_init Unexecuted instantiation: auth.c:_gnutls_str_array_init Unexecuted instantiation: session_pack.c:_gnutls_str_array_init Unexecuted instantiation: cert-cred.c:_gnutls_str_array_init Unexecuted instantiation: state.c:_gnutls_str_array_init Unexecuted instantiation: cert-cred-x509.c:_gnutls_str_array_init Unexecuted instantiation: pcert.c:_gnutls_str_array_init Unexecuted instantiation: dh-session.c:_gnutls_str_array_init Unexecuted instantiation: cert-session.c:_gnutls_str_array_init Unexecuted instantiation: handshake-checks.c:_gnutls_str_array_init Unexecuted instantiation: ocsp-api.c:_gnutls_str_array_init Unexecuted instantiation: certificate_request.c:_gnutls_str_array_init Unexecuted instantiation: certificate_verify.c:_gnutls_str_array_init Unexecuted instantiation: tls13-sig.c:_gnutls_str_array_init Unexecuted instantiation: hello_retry.c:_gnutls_str_array_init Unexecuted instantiation: session_ticket.c:_gnutls_str_array_init Unexecuted instantiation: certificate.c:_gnutls_str_array_init Unexecuted instantiation: post_handshake.c:_gnutls_str_array_init Unexecuted instantiation: ocsp.c:_gnutls_str_array_init Unexecuted instantiation: key_share.c:_gnutls_str_array_init Unexecuted instantiation: status_request.c:_gnutls_str_array_init Unexecuted instantiation: supported_groups.c:_gnutls_str_array_init Unexecuted instantiation: cert.c:_gnutls_str_array_init Unexecuted instantiation: ciphersuites.c:_gnutls_str_array_init Unexecuted instantiation: fingerprint.c:_gnutls_str_array_init Unexecuted instantiation: tls-sig.c:_gnutls_str_array_init Unexecuted instantiation: dhe.c:_gnutls_str_array_init Unexecuted instantiation: ecdhe.c:_gnutls_str_array_init Unexecuted instantiation: rsa.c:_gnutls_str_array_init Unexecuted instantiation: rsa_psk.c:_gnutls_str_array_init Unexecuted instantiation: vko_gost.c:_gnutls_str_array_init  | 
43  |  |  | 
44  |  | inline static void _gnutls_str_array_clear(gnutls_str_array_t *head)  | 
45  | 0  | { | 
46  | 0  |   gnutls_str_array_t prev, array = *head;  | 
47  |  | 
  | 
48  | 0  |   while (array != NULL) { | 
49  | 0  |     prev = array;  | 
50  | 0  |     array = prev->next;  | 
51  | 0  |     gnutls_free(prev);  | 
52  | 0  |   }  | 
53  | 0  |   *head = NULL;  | 
54  | 0  | } Unexecuted instantiation: handshake-tls13.c:_gnutls_str_array_clear Unexecuted instantiation: handshake.c:_gnutls_str_array_clear Unexecuted instantiation: auth.c:_gnutls_str_array_clear Unexecuted instantiation: session_pack.c:_gnutls_str_array_clear Unexecuted instantiation: cert-cred.c:_gnutls_str_array_clear Unexecuted instantiation: state.c:_gnutls_str_array_clear Unexecuted instantiation: cert-cred-x509.c:_gnutls_str_array_clear Unexecuted instantiation: pcert.c:_gnutls_str_array_clear Unexecuted instantiation: dh-session.c:_gnutls_str_array_clear Unexecuted instantiation: cert-session.c:_gnutls_str_array_clear Unexecuted instantiation: handshake-checks.c:_gnutls_str_array_clear Unexecuted instantiation: ocsp-api.c:_gnutls_str_array_clear Unexecuted instantiation: certificate_request.c:_gnutls_str_array_clear Unexecuted instantiation: certificate_verify.c:_gnutls_str_array_clear Unexecuted instantiation: tls13-sig.c:_gnutls_str_array_clear Unexecuted instantiation: hello_retry.c:_gnutls_str_array_clear Unexecuted instantiation: session_ticket.c:_gnutls_str_array_clear Unexecuted instantiation: certificate.c:_gnutls_str_array_clear Unexecuted instantiation: post_handshake.c:_gnutls_str_array_clear Unexecuted instantiation: ocsp.c:_gnutls_str_array_clear Unexecuted instantiation: key_share.c:_gnutls_str_array_clear Unexecuted instantiation: status_request.c:_gnutls_str_array_clear Unexecuted instantiation: supported_groups.c:_gnutls_str_array_clear Unexecuted instantiation: cert.c:_gnutls_str_array_clear Unexecuted instantiation: ciphersuites.c:_gnutls_str_array_clear Unexecuted instantiation: fingerprint.c:_gnutls_str_array_clear Unexecuted instantiation: tls-sig.c:_gnutls_str_array_clear Unexecuted instantiation: dhe.c:_gnutls_str_array_clear Unexecuted instantiation: ecdhe.c:_gnutls_str_array_clear Unexecuted instantiation: rsa.c:_gnutls_str_array_clear Unexecuted instantiation: rsa_psk.c:_gnutls_str_array_clear Unexecuted instantiation: vko_gost.c:_gnutls_str_array_clear  | 
55  |  |  | 
56  |  | inline static int _gnutls_str_array_match(gnutls_str_array_t head,  | 
57  |  |             const char *str)  | 
58  | 0  | { | 
59  | 0  |   gnutls_str_array_t array = head;  | 
60  |  | 
  | 
61  | 0  |   while (array != NULL) { | 
62  | 0  |     if (strcmp(array->str, str) == 0)  | 
63  | 0  |       return 1;  | 
64  | 0  |     array = array->next;  | 
65  | 0  |   }  | 
66  |  |  | 
67  | 0  |   return 0;  | 
68  | 0  | } Unexecuted instantiation: handshake-tls13.c:_gnutls_str_array_match Unexecuted instantiation: handshake.c:_gnutls_str_array_match Unexecuted instantiation: auth.c:_gnutls_str_array_match Unexecuted instantiation: session_pack.c:_gnutls_str_array_match Unexecuted instantiation: cert-cred.c:_gnutls_str_array_match Unexecuted instantiation: state.c:_gnutls_str_array_match Unexecuted instantiation: cert-cred-x509.c:_gnutls_str_array_match Unexecuted instantiation: pcert.c:_gnutls_str_array_match Unexecuted instantiation: dh-session.c:_gnutls_str_array_match Unexecuted instantiation: cert-session.c:_gnutls_str_array_match Unexecuted instantiation: handshake-checks.c:_gnutls_str_array_match Unexecuted instantiation: ocsp-api.c:_gnutls_str_array_match Unexecuted instantiation: certificate_request.c:_gnutls_str_array_match Unexecuted instantiation: certificate_verify.c:_gnutls_str_array_match Unexecuted instantiation: tls13-sig.c:_gnutls_str_array_match Unexecuted instantiation: hello_retry.c:_gnutls_str_array_match Unexecuted instantiation: session_ticket.c:_gnutls_str_array_match Unexecuted instantiation: certificate.c:_gnutls_str_array_match Unexecuted instantiation: post_handshake.c:_gnutls_str_array_match Unexecuted instantiation: ocsp.c:_gnutls_str_array_match Unexecuted instantiation: key_share.c:_gnutls_str_array_match Unexecuted instantiation: status_request.c:_gnutls_str_array_match Unexecuted instantiation: supported_groups.c:_gnutls_str_array_match Unexecuted instantiation: cert.c:_gnutls_str_array_match Unexecuted instantiation: ciphersuites.c:_gnutls_str_array_match Unexecuted instantiation: fingerprint.c:_gnutls_str_array_match Unexecuted instantiation: tls-sig.c:_gnutls_str_array_match Unexecuted instantiation: dhe.c:_gnutls_str_array_match Unexecuted instantiation: ecdhe.c:_gnutls_str_array_match Unexecuted instantiation: rsa.c:_gnutls_str_array_match Unexecuted instantiation: rsa_psk.c:_gnutls_str_array_match Unexecuted instantiation: vko_gost.c:_gnutls_str_array_match  | 
69  |  |  | 
70  |  | inline static void append(gnutls_str_array_t array, const char *str, int len)  | 
71  | 0  | { | 
72  | 0  |   array->str = ((char *)array) + sizeof(struct gnutls_str_array_st);  | 
73  | 0  |   memcpy(array->str, str, len);  | 
74  | 0  |   array->str[len] = 0;  | 
75  | 0  |   array->len = len;  | 
76  | 0  |   array->next = NULL;  | 
77  | 0  | } Unexecuted instantiation: handshake-tls13.c:append Unexecuted instantiation: handshake.c:append Unexecuted instantiation: auth.c:append Unexecuted instantiation: session_pack.c:append Unexecuted instantiation: cert-cred.c:append Unexecuted instantiation: state.c:append Unexecuted instantiation: cert-cred-x509.c:append Unexecuted instantiation: pcert.c:append Unexecuted instantiation: dh-session.c:append Unexecuted instantiation: cert-session.c:append Unexecuted instantiation: handshake-checks.c:append Unexecuted instantiation: ocsp-api.c:append Unexecuted instantiation: certificate_request.c:append Unexecuted instantiation: certificate_verify.c:append Unexecuted instantiation: tls13-sig.c:append Unexecuted instantiation: hello_retry.c:append Unexecuted instantiation: session_ticket.c:append Unexecuted instantiation: certificate.c:append Unexecuted instantiation: post_handshake.c:append Unexecuted instantiation: ocsp.c:append Unexecuted instantiation: key_share.c:append Unexecuted instantiation: status_request.c:append Unexecuted instantiation: supported_groups.c:append Unexecuted instantiation: cert.c:append Unexecuted instantiation: ciphersuites.c:append Unexecuted instantiation: fingerprint.c:append Unexecuted instantiation: tls-sig.c:append Unexecuted instantiation: dhe.c:append Unexecuted instantiation: ecdhe.c:append Unexecuted instantiation: rsa.c:append Unexecuted instantiation: rsa_psk.c:append Unexecuted instantiation: vko_gost.c:append  | 
78  |  |  | 
79  |  | inline static int _gnutls_str_array_append(gnutls_str_array_t *head,  | 
80  |  |              const char *str, int len)  | 
81  | 0  | { | 
82  | 0  |   gnutls_str_array_t prev, array;  | 
83  | 0  |   if (*head == NULL) { | 
84  | 0  |     *head = gnutls_malloc(len + 1 +  | 
85  | 0  |               sizeof(struct gnutls_str_array_st));  | 
86  | 0  |     if (*head == NULL)  | 
87  | 0  |       return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);  | 
88  |  |  | 
89  | 0  |     array = *head;  | 
90  | 0  |     append(array, str, len);  | 
91  | 0  |   } else { | 
92  | 0  |     array = *head;  | 
93  | 0  |     prev = array;  | 
94  | 0  |     while (array != NULL) { | 
95  | 0  |       prev = array;  | 
96  | 0  |       array = prev->next;  | 
97  | 0  |     }  | 
98  | 0  |     prev->next = gnutls_malloc(len + 1 +  | 
99  | 0  |              sizeof(struct gnutls_str_array_st));  | 
100  |  | 
  | 
101  | 0  |     array = prev->next;  | 
102  |  | 
  | 
103  | 0  |     if (array == NULL)  | 
104  | 0  |       return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);  | 
105  |  |  | 
106  | 0  |     append(array, str, len);  | 
107  | 0  |   }  | 
108  |  |  | 
109  | 0  |   return 0;  | 
110  | 0  | } Unexecuted instantiation: handshake-tls13.c:_gnutls_str_array_append Unexecuted instantiation: handshake.c:_gnutls_str_array_append Unexecuted instantiation: auth.c:_gnutls_str_array_append Unexecuted instantiation: session_pack.c:_gnutls_str_array_append Unexecuted instantiation: cert-cred.c:_gnutls_str_array_append Unexecuted instantiation: state.c:_gnutls_str_array_append Unexecuted instantiation: cert-cred-x509.c:_gnutls_str_array_append Unexecuted instantiation: pcert.c:_gnutls_str_array_append Unexecuted instantiation: dh-session.c:_gnutls_str_array_append Unexecuted instantiation: cert-session.c:_gnutls_str_array_append Unexecuted instantiation: handshake-checks.c:_gnutls_str_array_append Unexecuted instantiation: ocsp-api.c:_gnutls_str_array_append Unexecuted instantiation: certificate_request.c:_gnutls_str_array_append Unexecuted instantiation: certificate_verify.c:_gnutls_str_array_append Unexecuted instantiation: tls13-sig.c:_gnutls_str_array_append Unexecuted instantiation: hello_retry.c:_gnutls_str_array_append Unexecuted instantiation: session_ticket.c:_gnutls_str_array_append Unexecuted instantiation: certificate.c:_gnutls_str_array_append Unexecuted instantiation: post_handshake.c:_gnutls_str_array_append Unexecuted instantiation: ocsp.c:_gnutls_str_array_append Unexecuted instantiation: key_share.c:_gnutls_str_array_append Unexecuted instantiation: status_request.c:_gnutls_str_array_append Unexecuted instantiation: supported_groups.c:_gnutls_str_array_append Unexecuted instantiation: cert.c:_gnutls_str_array_append Unexecuted instantiation: ciphersuites.c:_gnutls_str_array_append Unexecuted instantiation: fingerprint.c:_gnutls_str_array_append Unexecuted instantiation: tls-sig.c:_gnutls_str_array_append Unexecuted instantiation: dhe.c:_gnutls_str_array_append Unexecuted instantiation: ecdhe.c:_gnutls_str_array_append Unexecuted instantiation: rsa.c:_gnutls_str_array_append Unexecuted instantiation: rsa_psk.c:_gnutls_str_array_append Unexecuted instantiation: vko_gost.c:_gnutls_str_array_append  | 
111  |  |  | 
112  |  | inline static int _gnutls_str_array_append_idna(gnutls_str_array_t *head,  | 
113  |  |             const char *name, size_t size)  | 
114  | 0  | { | 
115  | 0  |   int ret;  | 
116  | 0  |   gnutls_datum_t ahost;  | 
117  |  |  | 
118  |  |   /* convert the provided hostname to ACE-Labels domain. */  | 
119  | 0  |   ret = gnutls_idna_map(name, size, &ahost, 0);  | 
120  | 0  |   if (ret < 0) { | 
121  | 0  |     _gnutls_debug_log(  | 
122  | 0  |       "unable to convert hostname %s to IDNA format\n", name);  | 
123  |  |     /* insert the raw name */  | 
124  | 0  |     return _gnutls_str_array_append(head, name, size);  | 
125  | 0  |   }  | 
126  |  |  | 
127  | 0  |   ret = _gnutls_str_array_append(head, (char *)ahost.data, ahost.size);  | 
128  | 0  |   gnutls_free(ahost.data);  | 
129  |  | 
  | 
130  | 0  |   return ret;  | 
131  | 0  | } Unexecuted instantiation: handshake-tls13.c:_gnutls_str_array_append_idna Unexecuted instantiation: handshake.c:_gnutls_str_array_append_idna Unexecuted instantiation: auth.c:_gnutls_str_array_append_idna Unexecuted instantiation: session_pack.c:_gnutls_str_array_append_idna Unexecuted instantiation: cert-cred.c:_gnutls_str_array_append_idna Unexecuted instantiation: state.c:_gnutls_str_array_append_idna Unexecuted instantiation: cert-cred-x509.c:_gnutls_str_array_append_idna Unexecuted instantiation: pcert.c:_gnutls_str_array_append_idna Unexecuted instantiation: dh-session.c:_gnutls_str_array_append_idna Unexecuted instantiation: cert-session.c:_gnutls_str_array_append_idna Unexecuted instantiation: handshake-checks.c:_gnutls_str_array_append_idna Unexecuted instantiation: ocsp-api.c:_gnutls_str_array_append_idna Unexecuted instantiation: certificate_request.c:_gnutls_str_array_append_idna Unexecuted instantiation: certificate_verify.c:_gnutls_str_array_append_idna Unexecuted instantiation: tls13-sig.c:_gnutls_str_array_append_idna Unexecuted instantiation: hello_retry.c:_gnutls_str_array_append_idna Unexecuted instantiation: session_ticket.c:_gnutls_str_array_append_idna Unexecuted instantiation: certificate.c:_gnutls_str_array_append_idna Unexecuted instantiation: post_handshake.c:_gnutls_str_array_append_idna Unexecuted instantiation: ocsp.c:_gnutls_str_array_append_idna Unexecuted instantiation: key_share.c:_gnutls_str_array_append_idna Unexecuted instantiation: status_request.c:_gnutls_str_array_append_idna Unexecuted instantiation: supported_groups.c:_gnutls_str_array_append_idna Unexecuted instantiation: cert.c:_gnutls_str_array_append_idna Unexecuted instantiation: ciphersuites.c:_gnutls_str_array_append_idna Unexecuted instantiation: fingerprint.c:_gnutls_str_array_append_idna Unexecuted instantiation: tls-sig.c:_gnutls_str_array_append_idna Unexecuted instantiation: dhe.c:_gnutls_str_array_append_idna Unexecuted instantiation: ecdhe.c:_gnutls_str_array_append_idna Unexecuted instantiation: rsa.c:_gnutls_str_array_append_idna Unexecuted instantiation: rsa_psk.c:_gnutls_str_array_append_idna Unexecuted instantiation: vko_gost.c:_gnutls_str_array_append_idna  | 
132  |  |  | 
133  |  | #endif /* GNUTLS_LIB_STR_ARRAY_H */  |