Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | static SRTP_PROTECTION_PROFILE srtp_known_profiles[] = { | - |
5 | { | - |
6 | "SRTP_AES128_CM_SHA1_80", | - |
7 | 0x0001, | - |
8 | }, | - |
9 | { | - |
10 | "SRTP_AES128_CM_SHA1_32", | - |
11 | 0x0002, | - |
12 | }, | - |
13 | { | - |
14 | "SRTP_AEAD_AES_128_GCM", | - |
15 | 0x0007, | - |
16 | }, | - |
17 | { | - |
18 | "SRTP_AEAD_AES_256_GCM", | - |
19 | 0x0008, | - |
20 | }, | - |
21 | {0} | - |
22 | }; | - |
23 | | - |
24 | static int find_profile_by_name(char *profile_name, | - |
25 | SRTP_PROTECTION_PROFILE **pptr, size_t len) | - |
26 | { | - |
27 | SRTP_PROTECTION_PROFILE *p; | - |
28 | | - |
29 | p = srtp_known_profiles; | - |
30 | while (p->nameTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
31 | if ((TRUE | never evaluated | FALSE | never evaluated |
len == strlen(p->name))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
32 | && | - |
33 | (TRUE | never evaluated | FALSE | never evaluated |
__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
34 | lenTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
35 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
36 | p->nameTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
37 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
38 | p->nameTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
39 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
40 | lenTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
41 | ))TRUE | never evaluated | FALSE | never evaluated |
) || (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
42 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
43 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
44 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
45 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
46 | lenTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
47 | ))TRUE | never evaluated | FALSE | never evaluated |
)) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
48 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
49 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
50 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
51 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
52 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
53 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
54 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
55 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
56 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
57 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
58 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
59 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
60 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
61 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
62 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
63 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
64 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
65 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
66 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
67 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
68 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
69 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
70 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
71 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
72 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
73 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
74 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
75 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
76 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
77 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
78 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
79 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
80 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
81 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
82 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
83 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
84 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
85 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
86 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
87 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
88 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
89 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
90 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
91 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
92 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
93 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( p->name ))[3] - __s2[3]); | 0 |
94 | p->nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( p->name ))[3] - __s2[3]); | 0 |
95 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
96 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
97 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
98 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
99 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
100 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
101 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
102 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
103 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
104 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
105 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
106 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
107 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
108 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
109 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
110 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
111 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
112 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
113 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
114 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
115 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
116 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
117 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
118 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
119 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
120 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
121 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( profile_name ))[3] - __s2[3]); | 0 |
122 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( profile_name ))[3] - __s2[3]); | 0 |
123 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
124 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
125 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
126 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
127 | )))); }) : strncmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
128 | p->nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
129 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
130 | profile_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
131 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
132 | lenTRUE | never evaluated | FALSE | never evaluated |
| 0 |
133 | ))) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
134 | == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
135 | *pptr = p; | - |
136 | return never executed: return 0; 0;never executed: return 0; | 0 |
137 | } | - |
138 | | - |
139 | p++; | - |
140 | } never executed: end of block | 0 |
141 | | - |
142 | return never executed: return 1; 1;never executed: return 1; | 0 |
143 | } | - |
144 | | - |
145 | static int ssl_ctx_make_profiles(const char *profiles_string, | - |
146 | struct stack_st_SRTP_PROTECTION_PROFILE **out) | - |
147 | { | - |
148 | struct stack_st_SRTP_PROTECTION_PROFILE *profiles; | - |
149 | | - |
150 | char *col; | - |
151 | char *ptr = (char *)profiles_string; | - |
152 | SRTP_PROTECTION_PROFILE *p; | - |
153 | | - |
154 | if ((TRUE | never evaluated | FALSE | never evaluated |
profiles = sk_SRTP_PROTECTION_PROFILE_new_null()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
155 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
156 | ) { | - |
157 | ERR_put_error(20,(309),(362),__FILE__,72) | - |
158 | ; | - |
159 | return never executed: return 1; 1;never executed: return 1; | 0 |
160 | } | - |
161 | | - |
162 | do { | - |
163 | col = | - |
164 | (__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
165 | ':'TRUE | never evaluated | FALSE | never evaluated |
| 0 |
166 | )TRUE | never evaluated | FALSE | never evaluated |
&& !__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
167 | ptrTRUE | never evaluated | FALSE | never evaluated |
| 0 |
168 | )TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
169 | ':'TRUE | never evaluated | FALSE | never evaluated |
| 0 |
170 | ) == '\0'TRUE | never evaluated | FALSE | never evaluated |
? (char *) __rawmemchr ( | 0 |
171 | ptr | - |
172 | , | - |
173 | ':' | - |
174 | ) : __builtin_strchr ( | - |
175 | ptr | - |
176 | , | - |
177 | ':' | - |
178 | ))) | - |
179 | ; | - |
180 | | - |
181 | if (!find_profile_by_name(ptr, &p, col ? (size_t)(col - ptr)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
182 | : strlen(ptr))TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
183 | if (sk_SRTP_PROTECTION_PROFILE_find(profiles, p) >= 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
184 | ERR_put_error(20,(309),(353),__FILE__,83) | - |
185 | ; | - |
186 | goto never executed: goto err; err;never executed: goto err; | 0 |
187 | } | - |
188 | | - |
189 | if (!sk_SRTP_PROTECTION_PROFILE_push(profiles, p)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
190 | ERR_put_error(20,(309),(362),__FILE__,89) | - |
191 | ; | - |
192 | goto never executed: goto err; err;never executed: goto err; | 0 |
193 | } | - |
194 | } never executed: end of block else { | 0 |
195 | ERR_put_error(20,(309),(364),__FILE__,94) | - |
196 | ; | - |
197 | goto never executed: goto err; err;never executed: goto err; | 0 |
198 | } | - |
199 | | - |
200 | if (colTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
201 | ptr = col + 1; never executed: ptr = col + 1; | 0 |
202 | } never executed: end of block while (colTRUE | never evaluated | FALSE | never evaluated |
); | 0 |
203 | | - |
204 | sk_SRTP_PROTECTION_PROFILE_free(*out); | - |
205 | | - |
206 | *out = profiles; | - |
207 | | - |
208 | return never executed: return 0; 0;never executed: return 0; | 0 |
209 | err: | - |
210 | sk_SRTP_PROTECTION_PROFILE_free(profiles); | - |
211 | return never executed: return 1; 1;never executed: return 1; | 0 |
212 | } | - |
213 | | - |
214 | int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles) | - |
215 | { | - |
216 | return never executed: return ssl_ctx_make_profiles(profiles, &ctx->srtp_profiles); ssl_ctx_make_profiles(profiles, &ctx->srtp_profiles);never executed: return ssl_ctx_make_profiles(profiles, &ctx->srtp_profiles); | 0 |
217 | } | - |
218 | | - |
219 | int SSL_set_tlsext_use_srtp(SSL *s, const char *profiles) | - |
220 | { | - |
221 | return never executed: return ssl_ctx_make_profiles(profiles, &s->srtp_profiles); ssl_ctx_make_profiles(profiles, &s->srtp_profiles);never executed: return ssl_ctx_make_profiles(profiles, &s->srtp_profiles); | 0 |
222 | } | - |
223 | | - |
224 | struct stack_st_SRTP_PROTECTION_PROFILE *SSL_get_srtp_profiles(SSL *s) | - |
225 | { | - |
226 | if (s != TRUE | evaluated 4939 times by 1 test | FALSE | never evaluated |
| 0-4939 |
227 | ((void *)0)TRUE | evaluated 4939 times by 1 test | FALSE | never evaluated |
| 0-4939 |
228 | ) { | - |
229 | if (s->srtp_profiles != TRUE | never evaluated | FALSE | evaluated 4939 times by 1 test |
| 0-4939 |
230 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 4939 times by 1 test |
| 0-4939 |
231 | ) { | - |
232 | return never executed: return s->srtp_profiles; s->srtp_profiles;never executed: return s->srtp_profiles; | 0 |
233 | } else if ((TRUE | evaluated 4939 times by 1 test | FALSE | never evaluated |
s->ctx != TRUE | evaluated 4939 times by 1 test | FALSE | never evaluated |
| 0-4939 |
234 | ((void *)0)TRUE | evaluated 4939 times by 1 test | FALSE | never evaluated |
| 0-4939 |
235 | )TRUE | evaluated 4939 times by 1 test | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | evaluated 4939 times by 1 test |
s->ctx->srtp_profiles != TRUE | never evaluated | FALSE | evaluated 4939 times by 1 test |
| 0-4939 |
236 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 4939 times by 1 test |
| 0-4939 |
237 | )TRUE | never evaluated | FALSE | evaluated 4939 times by 1 test |
) { | 0-4939 |
238 | return never executed: return s->ctx->srtp_profiles; s->ctx->srtp_profiles;never executed: return s->ctx->srtp_profiles; | 0 |
239 | } | - |
240 | }executed 4939 times by 1 test: end of block | 4939 |
241 | | - |
242 | returnexecuted 4939 times by 1 test: return ((void *)0) ; executed 4939 times by 1 test: return ((void *)0) ; | 4939 |
243 | ((void *)0)executed 4939 times by 1 test: return ((void *)0) ; | 4939 |
244 | ;executed 4939 times by 1 test: return ((void *)0) ; | 4939 |
245 | } | - |
246 | | - |
247 | SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s) | - |
248 | { | - |
249 | returnexecuted 191 times by 1 test: return s->srtp_profile; s->srtp_profile;executed 191 times by 1 test: return s->srtp_profile; | 191 |
250 | } | - |
| | |