OpenCoverage

ssh-pkcs11-helper.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssh/src/ssh-pkcs11-helper.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12-
13-
14struct pkcs11_keyinfo {-
15 struct sshkey *key;-
16 char *providername;-
17 struct { struct pkcs11_keyinfo *tqe_next; struct pkcs11_keyinfo **tqe_prev; } next;-
18};-
19-
20struct { struct pkcs11_keyinfo *tqh_first; struct pkcs11_keyinfo **tqh_last; } pkcs11_keylist;-
21-
22-
23-
24-
25struct sshbuf *iqueue;-
26struct sshbuf *oqueue;-
27-
28static void-
29add_key(struct sshkey *k, char *name)-
30{-
31 struct pkcs11_keyinfo *ki;-
32-
33 ki = xcalloc(1, sizeof(*ki));-
34 ki->providername = xstrdup(name);-
35 ki->key = k;-
36 do { (ki)->next.tqe_next = -
37((void *)0)-
38; (ki)->next.tqe_prev = (&pkcs11_keylist)->tqh_last; *(&pkcs11_keylist)->tqh_last = (ki); (&pkcs11_keylist)->tqh_last = &(ki)->next.tqe_next; } while (0);-
39}
never executed: end of block
0
40-
41static void-
42del_keys_by_name(char *name)-
43{-
44 struct pkcs11_keyinfo *ki, *nxt;-
45-
46 for (ki = ((&pkcs11_keylist)->tqh_first); ki
kiDescription
TRUEnever evaluated
FALSEnever evaluated
; ki = nxt) {
0
47 nxt = ((ki)->next.tqe_next);-
48 if (!
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
49 __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
50 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
51 ) && __builtin_constant_p (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
52 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
53 ) && (__s1_len = __builtin_strlen (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
54 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
55 ), __s2_len = __builtin_strlen (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
56 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
57 ), (!((size_t)(const void *)((
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
58 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
59 ) + 1) - (size_t)(const void *)(
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
60 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
61 ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
62 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
63 ) + 1) - (size_t)(const void *)(
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
64 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
65 ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
66 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
67 ,
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
68 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
69 ) : (__builtin_constant_p (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
70 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
71 ) && ((size_t)(const void *)((
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
72 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
73 ) + 1) - (size_t)(const void *)(
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
74 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
75 ) == 1) && (__s1_len = __builtin_strlen (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
76 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
77 ), __s1_len < 4) ? (__builtin_constant_p (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
78 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
79 ) && ((size_t)(const void *)((
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
80 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
81 ) + 1) - (size_t)(const void *)(
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
82 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
83 ) == 1) ? __builtin_strcmp (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
84 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
85 ,
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
86 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
87 ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
88 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
89 ); int __result = (((const unsigned char *) (const char *) (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
90 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
91 ))[0] - __s2[0]); if (__s1_len > 0
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) { __result = (((const unsigned char *) (const char *) (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
92 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
93 ))[1] - __s2[1]); if (__s1_len > 1
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) { __result = (((const unsigned char *) (const char *) (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
94 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
95 ))[2] - __s2[2]); if (__s1_len > 2
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) __result = (((const unsigned char *) (const char *) (
never executed: __result = (((const unsigned char *) (const char *) ( ki->providername ))[3] - __s2[3]);
0
96 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
never executed: __result = (((const unsigned char *) (const char *) ( ki->providername ))[3] - __s2[3]);
0
97 ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
98 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
99 ) && ((size_t)(const void *)((
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
100 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
101 ) + 1) - (size_t)(const void *)(
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
102 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
103 ) == 1) && (__s2_len = __builtin_strlen (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
104 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
105 ), __s2_len < 4) ? (__builtin_constant_p (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
106 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
107 ) && ((size_t)(const void *)((
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
108 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
109 ) + 1) - (size_t)(const void *)(
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
110 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
111 ) == 1) ? __builtin_strcmp (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
112 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
113 ,
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
114 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
115 ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
116 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
117 ); int __result = (((const unsigned char *) (const char *) (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
118 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
119 ))[0] - __s2[0]); if (__s2_len > 0
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) { __result = (((const unsigned char *) (const char *) (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
120 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
121 ))[1] - __s2[1]); if (__s2_len > 1
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) { __result = (((const unsigned char *) (const char *) (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
122 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
123 ))[2] - __s2[2]); if (__s2_len > 2
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
&& __result == 0
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
) __result = (((const unsigned char *) (const char *) (
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
0
124 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
0
125 ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
126 ki->providername
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
127 ,
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
128 name
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
129 )))); })
! __extension_... name )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
130 ) {-
131 do { if (((
((ki)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ki)->next.tqe_next) !=
((ki)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
132 ((void *)0)
((ki)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
133 ) (
never executed: (ki)->next.tqe_next->next.tqe_prev = (ki)->next.tqe_prev;
ki)->next.tqe_next->next.tqe_prev = (ki)->next.tqe_prev;
never executed: (ki)->next.tqe_next->next.tqe_prev = (ki)->next.tqe_prev;
else (
never executed: (&pkcs11_keylist)->tqh_last = (ki)->next.tqe_prev;
&pkcs11_keylist)->tqh_last = (ki)->next.tqe_prev;
never executed: (&pkcs11_keylist)->tqh_last = (ki)->next.tqe_prev;
*(ki)->next.tqe_prev = (ki)->next.tqe_next; ; ; } while (0);
0
134 free(ki->providername);-
135 sshkey_free(ki->key);-
136 free(ki);-
137 }
never executed: end of block
0
138 }
never executed: end of block
0
139}
never executed: end of block
0
140-
141-
142static struct sshkey *-
143lookup_key(struct sshkey *k)-
144{-
145 struct pkcs11_keyinfo *ki;-
146-
147 for((ki) = ((&pkcs11_keylist)->tqh_first); (
(ki) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ki) !=
(ki) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
148((
(ki) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
(ki) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
void *)0)
(ki) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
149; (ki) = ((ki)->next.tqe_next)) {-
150 debug("check %p %s", ki, ki->providername);-
151 if (sshkey_equal(k, ki->key)
sshkey_equal(k, ki->key)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
152 return
never executed: return (ki->key);
(ki->key);
never executed: return (ki->key);
0
153 }
never executed: end of block
0
154 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
155 ((void *)0)
never executed: return ( ((void *)0) );
0
156 );
never executed: return ( ((void *)0) );
0
157}-
158-
159static void-
160send_msg(struct sshbuf *m)-
161{-
162 int r;-
163-
164 if ((
(r = sshbuf_pu...ueue, m)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_stringb(oqueue, m)) != 0
(r = sshbuf_pu...ueue, m)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
165 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
166}
never executed: end of block
0
167-
168static void-
169process_add(void)-
170{-
171 char *name, *pin;-
172 struct sshkey **keys;-
173 int r, i, nkeys;-
174 u_char *blob;-
175 size_t blen;-
176 struct sshbuf *msg;-
177-
178 if ((
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
msg = sshbuf_new()) ==
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
179 ((void *)0)
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
180 )-
181 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
182 if ((
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(iqueue, &name,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
183 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
184 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
185 (
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(iqueue, &pin,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
186 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
187 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
188 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
189 if ((
(nkeys = pkcs1...n, &keys)) > 0Description
TRUEnever evaluated
FALSEnever evaluated
nkeys = pkcs11_add_provider(name, pin, &keys)) > 0
(nkeys = pkcs1...n, &keys)) > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
190 if ((
(r = sshbuf_pu...msg, 12)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u8(msg,
(r = sshbuf_pu...msg, 12)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
191 12)) != 0
(r = sshbuf_pu...msg, 12)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
192 (
(r = sshbuf_pu..., nkeys)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u32(msg, nkeys)) != 0
(r = sshbuf_pu..., nkeys)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
193 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
194 for (i = 0; i < nkeys
i < nkeysDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
195 if ((
(r = sshkey_to..., &blen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshkey_to_blob(keys[i], &blob, &blen)) != 0
(r = sshkey_to..., &blen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
196 debug("%s: sshkey_to_blob: %s",-
197 __func__, ssh_err(r));-
198 continue;
never executed: continue;
0
199 }-
200 if ((
(r = sshbuf_pu...b, blen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_string(msg, blob, blen)) != 0
(r = sshbuf_pu...b, blen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
201 (
(r = sshbuf_pu...g, name)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_cstring(msg, name)) != 0
(r = sshbuf_pu...g, name)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
202 fatal("%s: buffer error: %s",
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
203 __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
204 free(blob);-
205 add_key(keys[i], name);-
206 }
never executed: end of block
0
207 free(keys);-
208 }
never executed: end of block
else {
0
209 if ((
(r = sshbuf_pu...(msg, 5)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u8(msg, 5)) != 0
(r = sshbuf_pu...(msg, 5)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
210 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
211 }
never executed: end of block
0
212 free(pin);-
213 free(name);-
214 send_msg(msg);-
215 sshbuf_free(msg);-
216}
never executed: end of block
0
217-
218static void-
219process_del(void)-
220{-
221 char *name, *pin;-
222 struct sshbuf *msg;-
223 int r;-
224-
225 if ((
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
msg = sshbuf_new()) ==
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
226 ((void *)0)
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
227 )-
228 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
229 if ((
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(iqueue, &name,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
230 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
231 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
232 (
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(iqueue, &pin,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
233 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
234 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
235 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
236 del_keys_by_name(name);-
237 if ((
(r = sshbuf_pu...? 6 : 5)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u8(msg, pkcs11_del_provider(name) == 0 ?
(r = sshbuf_pu...? 6 : 5)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
238 6 : 5)) != 0
(r = sshbuf_pu...? 6 : 5)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
239 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
240 free(pin);-
241 free(name);-
242 send_msg(msg);-
243 sshbuf_free(msg);-
244}
never executed: end of block
0
245-
246static void-
247process_sign(void)-
248{-
249 u_char *blob, *data, *signature = -
250 ((void *)0)-
251 ;-
252 size_t blen, dlen, slen = 0;-
253 int r, ok = -1;-
254 struct sshkey *key, *found;-
255 struct sshbuf *msg;-
256-
257-
258 if ((
(r = sshbuf_ge..., &blen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_string(iqueue, &blob, &blen)) != 0
(r = sshbuf_ge..., &blen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
259 (
(r = sshbuf_ge..., &dlen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_string(iqueue, &data, &dlen)) != 0
(r = sshbuf_ge..., &dlen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
260 (
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u32(iqueue,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
261 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
262 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
263 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
264-
265 if ((
(r = sshkey_fr...n, &key)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshkey_from_blob(blob, blen, &key)) != 0
(r = sshkey_fr...n, &key)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
266 error("%s: sshkey_from_blob: %s", __func__, ssh_err(r));
never executed: error("%s: sshkey_from_blob: %s", __func__, ssh_err(r));
0
267 else {-
268 if ((
(found = looku...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
found = lookup_key(key)) !=
(found = looku...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
269 ((void *)0)
(found = looku...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
270 ) {-
271-
272 int ret;-
273-
274 slen = RSA_size(key->rsa);-
275 signature = xmalloc(slen);-
276 if ((
(ret = RSA_pri...sa, 1 )) != -1Description
TRUEnever evaluated
FALSEnever evaluated
ret = RSA_private_encrypt(dlen, data, signature,
(ret = RSA_pri...sa, 1 )) != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
277 found->rsa,
(ret = RSA_pri...sa, 1 )) != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
278 1
(ret = RSA_pri...sa, 1 )) != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
279 )) != -1
(ret = RSA_pri...sa, 1 )) != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
280 slen = ret;-
281 ok = 0;-
282 }
never executed: end of block
0
283-
284 }
never executed: end of block
0
285 sshkey_free(key);-
286 }
never executed: end of block
0
287 if ((
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
msg = sshbuf_new()) ==
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
288 ((void *)0)
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
289 )-
290 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
291 if (ok == 0
ok == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
292 if ((
(r = sshbuf_pu...msg, 14)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u8(msg, 14)) != 0
(r = sshbuf_pu...msg, 14)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
293 (
(r = sshbuf_pu...e, slen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_string(msg, signature, slen)) != 0
(r = sshbuf_pu...e, slen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
294 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
295 }
never executed: end of block
else {
0
296 if ((
(r = sshbuf_pu...msg, 30)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u8(msg, 30)) != 0
(r = sshbuf_pu...msg, 30)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
297 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
298 }
never executed: end of block
0
299 free(data);-
300 free(blob);-
301 free(signature);-
302 send_msg(msg);-
303 sshbuf_free(msg);-
304}
never executed: end of block
0
305-
306static void-
307process(void)-
308{-
309 u_int msg_len;-
310 u_int buf_len;-
311 u_int consumed;-
312 u_char type;-
313 const u_char *cp;-
314 int r;-
315-
316 buf_len = sshbuf_len(iqueue);-
317 if (buf_len < 5
buf_len < 5Description
TRUEnever evaluated
FALSEnever evaluated
)
0
318 return;
never executed: return;
0
319 cp = sshbuf_ptr(iqueue);-
320 msg_len = get_u32(cp);-
321 if (msg_len > 10240
msg_len > 10240Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
322 error("bad message len %d", msg_len);-
323 cleanup_exit(11);-
324 }
never executed: end of block
0
325 if (buf_len < msg_len + 4
buf_len < msg_len + 4Description
TRUEnever evaluated
FALSEnever evaluated
)
0
326 return;
never executed: return;
0
327 if ((
(r = sshbuf_co...ueue, 4)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_consume(iqueue, 4)) != 0
(r = sshbuf_co...ueue, 4)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
328 (
(r = sshbuf_ge..., &type)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u8(iqueue, &type)) != 0
(r = sshbuf_ge..., &type)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
329 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
330 buf_len -= 4;-
331 switch (type) {-
332 case
never executed: case 20:
20:
never executed: case 20:
0
333 debug("process_add");-
334 process_add();-
335 break;
never executed: break;
0
336 case
never executed: case 21:
21:
never executed: case 21:
0
337 debug("process_del");-
338 process_del();-
339 break;
never executed: break;
0
340 case
never executed: case 13:
13:
never executed: case 13:
0
341 debug("process_sign");-
342 process_sign();-
343 break;
never executed: break;
0
344 default
never executed: default:
:
never executed: default:
0
345 error("Unknown message %d", type);-
346 break;
never executed: break;
0
347 }-
348-
349 if (buf_len < sshbuf_len(iqueue)
buf_len < sshbuf_len(iqueue)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
350 error("iqueue grew unexpectedly");-
351 cleanup_exit(255);-
352 }
never executed: end of block
0
353 consumed = buf_len - sshbuf_len(iqueue);-
354 if (msg_len < consumed
msg_len < consumedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
355 error("msg_len %d < consumed %d", msg_len, consumed);-
356 cleanup_exit(255);-
357 }
never executed: end of block
0
358 if (msg_len > consumed
msg_len > consumedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
359 if ((
(r = sshbuf_co...onsumed)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_consume(iqueue, msg_len - consumed)) != 0
(r = sshbuf_co...onsumed)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
360 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
361 }
never executed: end of block
0
362}
never executed: end of block
0
363-
364void-
365cleanup_exit(int i)-
366{-
367-
368 _exit(i);-
369}
never executed: end of block
0
370-
371int-
372main(int argc, char **argv)-
373{-
374 fd_set *rset, *wset;-
375 int r, in, out, max, log_stderr = 0;-
376 ssize_t len, olen, set_size;-
377 SyslogFacility log_facility = SYSLOG_FACILITY_AUTH;-
378 LogLevel log_level = SYSLOG_LEVEL_ERROR;-
379 char buf[4*4096];-
380-
381 extern char *__progname;-
382-
383 ssh_malloc_init();-
384 do { (&pkcs11_keylist)->tqh_first = -
385((void *)0)-
386; (&pkcs11_keylist)->tqh_last = &(&pkcs11_keylist)->tqh_first; } while (0);-
387 pkcs11_init(0);-
388-
389 seed_rng();-
390 __progname = ssh_get_progname(argv[0]);-
391-
392 log_init(__progname, log_level, log_facility, log_stderr);-
393-
394 in = -
395 0-
396 ;-
397 out = -
398 1-
399 ;-
400-
401 max = 0;-
402 if (in > max
in > maxDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
403 max = in;
never executed: max = in;
0
404 if (out > max
out > maxDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
405 max = out;
never executed: max = out;
0
406-
407 if ((
(iqueue = sshb...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
iqueue = sshbuf_new()) ==
(iqueue = sshb...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
408 ((void *)0)
(iqueue = sshb...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
409 )-
410 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
411 if ((
(oqueue = sshb...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
oqueue = sshbuf_new()) ==
(oqueue = sshb...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
412 ((void *)0)
(oqueue = sshb...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
413 )-
414 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
415-
416 set_size = -
417 (((-
418 max + 1-
419 ) + (((8 * (int) sizeof (__fd_mask))) - 1)) / ((8 * (int) sizeof (__fd_mask)))) -
420 * sizeof(fd_mask);-
421 rset = xmalloc(set_size);-
422 wset = xmalloc(set_size);-
423-
424 for (;;) {-
425 memset(rset, 0, set_size);-
426 memset(wset, 0, set_size);-
427-
428-
429-
430-
431-
432-
433 if ((
(r = sshbuf_ch...of(buf))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_check_reserve(iqueue, sizeof(buf))) == 0
(r = sshbuf_ch...of(buf))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
434 (
(r = sshbuf_ch..., 10240)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_check_reserve(oqueue, 10240)) == 0
(r = sshbuf_ch..., 10240)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
435 kludge_FD_SET(in, rset);
never executed: kludge_FD_SET(in, rset);
0
436 else if (r != -9
r != -9Description
TRUEnever evaluated
FALSEnever evaluated
)
0
437 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
438-
439 olen = sshbuf_len(oqueue);-
440 if (olen > 0
olen > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
441 kludge_FD_SET(out, wset);
never executed: kludge_FD_SET(out, wset);
0
442-
443 if (select(max+1, rset, wset,
select(max+1, ...oid *)0) ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
444 ((void *)0)
select(max+1, ...oid *)0) ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
445 ,
select(max+1, ...oid *)0) ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
446 ((void *)0)
select(max+1, ...oid *)0) ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
447 ) < 0
select(max+1, ...oid *)0) ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
448 if (-
449 (*
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
__errno_location ())
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
450 ==
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
451 4
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
452 )-
453 continue;
never executed: continue;
0
454 error("select: %s", strerror(-
455 (*__errno_location ())-
456 ));-
457 cleanup_exit(2);-
458 }
never executed: end of block
0
459-
460-
461 if (kludge_FD_ISSET(in, rset)
kludge_FD_ISSET(in, rset)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
462 len = read(in, buf, sizeof buf);-
463 if (len == 0
len == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
464 debug("read eof");-
465 cleanup_exit(0);-
466 }
never executed: end of block
else if (len < 0
len < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
467 error("read: %s", strerror(-
468 (*__errno_location ())-
469 ));-
470 cleanup_exit(1);-
471 }
never executed: end of block
else if ((
(r = sshbuf_pu...uf, len)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put(iqueue, buf, len)) != 0
(r = sshbuf_pu...uf, len)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
472 fatal("%s: buffer error: %s",-
473 __func__, ssh_err(r));-
474 }
never executed: end of block
0
475 }
never executed: end of block
0
476-
477 if (kludge_FD_ISSET(out, wset)
kludge_FD_ISSET(out, wset)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
478 len = write(out, sshbuf_ptr(oqueue), olen);-
479 if (len < 0
len < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
480 error("write: %s", strerror(-
481 (*__errno_location ())-
482 ));-
483 cleanup_exit(1);-
484 }
never executed: end of block
else if ((
(r = sshbuf_co...ue, len)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_consume(oqueue, len)) != 0
(r = sshbuf_co...ue, len)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
485 fatal("%s: buffer error: %s",-
486 __func__, ssh_err(r));-
487 }
never executed: end of block
0
488 }
never executed: end of block
0
489-
490-
491-
492-
493-
494-
495 if ((
(r = sshbuf_ch..., 10240)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_check_reserve(oqueue, 10240)) == 0
(r = sshbuf_ch..., 10240)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
496 process();
never executed: process();
0
497 else if (r != -9
r != -9Description
TRUEnever evaluated
FALSEnever evaluated
)
0
498 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
499 }
never executed: end of block
0
500}
never executed: end of block
0
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2