OpenCoverage

ssh-agent.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssh/src/ssh-agent.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12-
13-
14-
15-
16-
17-
18-
19-
20-
21-
22-
23-
24-
25-
26-
27-
28-
29-
30-
31-
32typedef enum {-
33 AUTH_UNUSED,-
34 AUTH_SOCKET,-
35 AUTH_CONNECTION-
36} sock_type;-
37-
38typedef struct {-
39 int fd;-
40 sock_type type;-
41 struct sshbuf *input;-
42 struct sshbuf *output;-
43 struct sshbuf *request;-
44} SocketEntry;-
45-
46u_int sockets_alloc = 0;-
47SocketEntry *sockets = -
48 ((void *)0)-
49 ;-
50-
51typedef struct identity {-
52 struct { struct identity *tqe_next; struct identity **tqe_prev; } next;-
53 struct sshkey *key;-
54 char *comment;-
55 char *provider;-
56 time_t death;-
57 u_int confirm;-
58} Identity;-
59-
60struct idtable {-
61 int nentries;-
62 struct idqueue { struct identity *tqh_first; struct identity **tqh_last; } idlist;-
63};-
64-
65-
66struct idtable *idtab;-
67-
68int max_fd = 0;-
69-
70-
71pid_t parent_pid = -1;-
72time_t parent_alive_interval = 0;-
73-
74-
75pid_t cleanup_pid = 0;-
76-
77-
78char socket_name[-
79 4096-
80 ];-
81char socket_dir[-
82 4096-
83 ];-
84-
85-
86static char *pkcs11_whitelist;-
87-
88-
89-
90-
91-
92int locked = 0;-
93u_char lock_pwhash[32];-
94u_char lock_salt[16];-
95-
96extern char *__progname;-
97-
98-
99static long lifetime = 0;-
100-
101static int fingerprint_hash = 2;-
102-
103static void-
104close_socket(SocketEntry *e)-
105{-
106 close(e->fd);-
107 e->fd = -1;-
108 e->type = AUTH_UNUSED;-
109 sshbuf_free(e->input);-
110 sshbuf_free(e->output);-
111 sshbuf_free(e->request);-
112}
never executed: end of block
0
113-
114static void-
115idtab_init(void)-
116{-
117 idtab = xcalloc(1, sizeof(*idtab));-
118 do { (&idtab->idlist)->tqh_first = -
119((void *)0)-
120; (&idtab->idlist)->tqh_last = &(&idtab->idlist)->tqh_first; } while (0);-
121 idtab->nentries = 0;-
122}
never executed: end of block
0
123-
124static void-
125free_identity(Identity *id)-
126{-
127 sshkey_free(id->key);-
128 free(id->provider);-
129 free(id->comment);-
130 free(id);-
131}
never executed: end of block
0
132-
133-
134static Identity *-
135lookup_identity(struct sshkey *key)-
136{-
137 Identity *id;-
138-
139 for((id) = ((&idtab->idlist)->tqh_first); (
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id) !=
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
140((
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
void *)0)
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
141; (id) = ((id)->next.tqe_next)) {-
142 if (sshkey_equal(key, id->key)
sshkey_equal(key, id->key)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
143 return
never executed: return (id);
(id);
never executed: return (id);
0
144 }
never executed: end of block
0
145 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
146 ((void *)0)
never executed: return ( ((void *)0) );
0
147 );
never executed: return ( ((void *)0) );
0
148}-
149-
150-
151static int-
152confirm_key(Identity *id)-
153{-
154 char *p;-
155 int ret = -1;-
156-
157 p = sshkey_fingerprint(id->key, fingerprint_hash, SSH_FP_DEFAULT);-
158 if (p !=
p != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
159 ((void *)0)
p != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
160 &&-
161 ask_permission("Allow use of key %s?\nKey fingerprint %s.",
ask_permission...d->comment, p)Description
TRUEnever evaluated
FALSEnever evaluated
0
162 id->comment, p)
ask_permission...d->comment, p)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
163 ret = 0;
never executed: ret = 0;
0
164 free(p);-
165-
166 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
167}-
168-
169static void-
170send_status(SocketEntry *e, int success)-
171{-
172 int r;-
173-
174 if ((
(r = sshbuf_pu...tput, 1)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u32(e->output, 1)) != 0
(r = sshbuf_pu...tput, 1)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
175 (
(r = sshbuf_pu...? 6 : 5)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u8(e->output, success ?
(r = sshbuf_pu...? 6 : 5)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
176 6 : 5)) != 0
(r = sshbuf_pu...? 6 : 5)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
177 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
178}
never executed: end of block
0
179-
180-
181static void-
182process_request_identities(SocketEntry *e)-
183{-
184 Identity *id;-
185 struct sshbuf *msg;-
186 int r;-
187-
188 if ((
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
msg = sshbuf_new()) ==
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
189 ((void *)0)
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
190 )-
191 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
192 if ((
(r = sshbuf_pu...msg, 12)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u8(msg, 12)) != 0
(r = sshbuf_pu...msg, 12)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
193 (
(r = sshbuf_pu...entries)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u32(msg, idtab->nentries)) != 0
(r = sshbuf_pu...entries)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
194 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
195 for((id) = ((&idtab->idlist)->tqh_first); (
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id) !=
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
196((
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
void *)0)
(id) != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
197; (id) = ((id)->next.tqe_next)) {-
198 if ((
(r = sshkey_pu...ZE_INFO)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshkey_puts_opts(id->key, msg, SSHKEY_SERIALIZE_INFO))
(r = sshkey_pu...ZE_INFO)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
199 != 0
(r = sshkey_pu...ZE_INFO)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
200 (
(r = sshbuf_pu...comment)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_cstring(msg, id->comment)) != 0
(r = sshbuf_pu...comment)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
201 error("%s: put key/comment: %s", __func__,-
202 ssh_err(r));-
203 continue;
never executed: continue;
0
204 }-
205 }
never executed: end of block
0
206 if ((
(r = sshbuf_pu...ut, msg)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_stringb(e->output, msg)) != 0
(r = sshbuf_pu...ut, msg)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
207 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
208 sshbuf_free(msg);-
209}
never executed: end of block
0
210-
211-
212static char *-
213agent_decode_alg(struct sshkey *key, u_int flags)-
214{-
215 if (key->type == KEY_RSA
key->type == KEY_RSADescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
216 if (flags & 0x02
flags & 0x02Description
TRUEnever evaluated
FALSEnever evaluated
)
0
217 return
never executed: return "rsa-sha2-256";
"rsa-sha2-256";
never executed: return "rsa-sha2-256";
0
218 else if (flags & 0x04
flags & 0x04Description
TRUEnever evaluated
FALSEnever evaluated
)
0
219 return
never executed: return "rsa-sha2-512";
"rsa-sha2-512";
never executed: return "rsa-sha2-512";
0
220 }
never executed: end of block
0
221 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
222 ((void *)0)
never executed: return ((void *)0) ;
0
223 ;
never executed: return ((void *)0) ;
0
224}-
225-
226-
227static void-
228process_sign_request2(SocketEntry *e)-
229{-
230 const u_char *data;-
231 u_char *signature = -
232 ((void *)0)-
233 ;-
234 size_t dlen, slen = 0;-
235 u_int compat = 0, flags;-
236 int r, ok = -1;-
237 struct sshbuf *msg;-
238 struct sshkey *key = -
239 ((void *)0)-
240 ;-
241 struct identity *id;-
242-
243 if ((
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
msg = sshbuf_new()) ==
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
244 ((void *)0)
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
245 )-
246 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
247 if ((
(r = sshkey_fr...t, &key)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshkey_froms(e->request, &key)) != 0
(r = sshkey_fr...t, &key)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
248 (
(r = sshbuf_ge..., &dlen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_string_direct(e->request, &data, &dlen)) != 0
(r = sshbuf_ge..., &dlen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
249 (
(r = sshbuf_ge... &flags)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u32(e->request, &flags)) != 0
(r = sshbuf_ge... &flags)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
250 error("%s: couldn't parse request: %s", __func__, ssh_err(r));-
251 goto
never executed: goto send;
send;
never executed: goto send;
0
252 }-
253-
254 if ((
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id = lookup_identity(key)) ==
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
255 ((void *)0)
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
256 ) {-
257 verbose("%s: %s key not found", __func__, sshkey_type(key));-
258 goto
never executed: goto send;
send;
never executed: goto send;
0
259 }-
260 if (id->confirm
id->confirmDescription
TRUEnever evaluated
FALSEnever evaluated
&& confirm_key(id) != 0
confirm_key(id) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
261 verbose("%s: user refused key", __func__);-
262 goto
never executed: goto send;
send;
never executed: goto send;
0
263 }-
264 if ((
(r = sshkey_si... compat)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshkey_sign(id->key, &signature, &slen,
(r = sshkey_si... compat)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
265 data, dlen, agent_decode_alg(key, flags), compat)) != 0
(r = sshkey_si... compat)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
266 error("%s: sshkey_sign: %s", __func__, ssh_err(r));-
267 goto
never executed: goto send;
send;
never executed: goto send;
0
268 }-
269-
270 ok = 0;-
271 send:
code before this statement never executed: send:
0
272 sshkey_free(key);-
273 if (ok == 0
ok == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
274 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
275 (
(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
276 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
277 }
never executed: end of block
else 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
278 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
279-
280 if ((
(r = sshbuf_pu...ut, msg)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_stringb(e->output, msg)) != 0
(r = sshbuf_pu...ut, msg)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
281 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
282-
283 sshbuf_free(msg);-
284 free(signature);-
285}
never executed: end of block
0
286-
287-
288static void-
289process_remove_identity(SocketEntry *e)-
290{-
291 int r, success = 0;-
292 struct sshkey *key = -
293 ((void *)0)-
294 ;-
295 Identity *id;-
296-
297 if ((
(r = sshkey_fr...t, &key)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshkey_froms(e->request, &key)) != 0
(r = sshkey_fr...t, &key)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
298 error("%s: get key: %s", __func__, ssh_err(r));-
299 goto
never executed: goto done;
done;
never executed: goto done;
0
300 }-
301 if ((
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id = lookup_identity(key)) ==
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
302 ((void *)0)
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
303 ) {-
304 debug("%s: key not found", __func__);-
305 goto
never executed: goto done;
done;
never executed: goto done;
0
306 }-
307-
308 if (idtab->nentries < 1
idtab->nentries < 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
309 fatal("%s: internal error: nentries %d",
never executed: fatal("%s: internal error: nentries %d", __func__, idtab->nentries);
0
310 __func__, idtab->nentries);
never executed: fatal("%s: internal error: nentries %d", __func__, idtab->nentries);
0
311 do { if (((
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id)->next.tqe_next) !=
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
312((
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
void *)0)
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
313) (
never executed: (id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
never executed: (id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
else (
never executed: (&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
never executed: (&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
*(id)->next.tqe_prev = (id)->next.tqe_next; ; ; } while (0);
0
314 free_identity(id);-
315 idtab->nentries--;-
316 sshkey_free(key);-
317 success = 1;-
318 done:
code before this statement never executed: done:
0
319 send_status(e, success);-
320}
never executed: end of block
0
321-
322static void-
323process_remove_all_identities(SocketEntry *e)-
324{-
325 Identity *id;-
326-
327-
328 for (id = ((&idtab->idlist)->tqh_first); id
idDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
329 id = ((&idtab->idlist)->tqh_first)) {-
330 do { if (((
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id)->next.tqe_next) !=
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
331 ((void *)0)
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
332 ) (
never executed: (id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
never executed: (id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
else (
never executed: (&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
never executed: (&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
*(id)->next.tqe_prev = (id)->next.tqe_next; ; ; } while (0);
0
333 free_identity(id);-
334 }
never executed: end of block
0
335-
336-
337 idtab->nentries = 0;-
338-
339-
340 send_status(e, 1);-
341}
never executed: end of block
0
342-
343-
344static time_t-
345reaper(void)-
346{-
347 time_t deadline = 0, now = monotime();-
348 Identity *id, *nxt;-
349-
350 for (id = ((&idtab->idlist)->tqh_first); id
idDescription
TRUEnever evaluated
FALSEnever evaluated
; id = nxt) {
0
351 nxt = ((id)->next.tqe_next);-
352 if (id->death == 0
id->death == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
353 continue;
never executed: continue;
0
354 if (now >= id->death
now >= id->deathDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
355 debug("expiring key '%s'", id->comment);-
356 do { if (((
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id)->next.tqe_next) !=
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
357 ((void *)0)
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
358 ) (
never executed: (id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
never executed: (id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
else (
never executed: (&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
never executed: (&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
*(id)->next.tqe_prev = (id)->next.tqe_next; ; ; } while (0);
0
359 free_identity(id);-
360 idtab->nentries--;-
361 }
never executed: end of block
else
0
362 deadline = (
(deadline == 0)Description
TRUEnever evaluated
FALSEnever evaluated
deadline == 0)
(deadline == 0)Description
TRUEnever evaluated
FALSEnever evaluated
? id->death :
never executed: deadline = (deadline == 0) ? id->death : (((deadline) < (id->death)) ? (deadline) : (id->death));
0
363 (((
((deadline) < (id->death))Description
TRUEnever evaluated
FALSEnever evaluated
deadline) < (id->death))
((deadline) < (id->death))Description
TRUEnever evaluated
FALSEnever evaluated
? (deadline) : (id->death));
never executed: deadline = (deadline == 0) ? id->death : (((deadline) < (id->death)) ? (deadline) : (id->death));
0
364 }-
365 if (deadline == 0
deadline == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| deadline <= now
deadline <= nowDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
366 return
never executed: return 0;
0;
never executed: return 0;
0
367 else-
368 return
never executed: return (deadline - now);
(deadline - now);
never executed: return (deadline - now);
0
369}-
370-
371static void-
372process_add_identity(SocketEntry *e)-
373{-
374 Identity *id;-
375 int success = 0, confirm = 0;-
376 u_int seconds, maxsign;-
377 char *comment = -
378 ((void *)0)-
379 ;-
380 time_t death = 0;-
381 struct sshkey *k = -
382 ((void *)0)-
383 ;-
384 u_char ctype;-
385 int r = -1;-
386-
387 if ((
(r = sshkey_pr...est, &k)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshkey_private_deserialize(e->request, &k)) != 0
(r = sshkey_pr...est, &k)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
388 k ==
k == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
389 ((void *)0)
k == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
390 ||-
391 (
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(e->request, &comment,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
392 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
393 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
394 error("%s: decode private key: %s", __func__, ssh_err(r));-
395 goto
never executed: goto err;
err;
never executed: goto err;
0
396 }-
397-
398 while (sshbuf_len(e->request)
sshbuf_len(e->request)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
399 if ((
(r = sshbuf_ge... &ctype)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u8(e->request, &ctype)) != 0
(r = sshbuf_ge... &ctype)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
400 error("%s: buffer error: %s", __func__, ssh_err(r));-
401 goto
never executed: goto err;
err;
never executed: goto err;
0
402 }-
403 switch (ctype) {-
404 case
never executed: case 1:
1:
never executed: case 1:
0
405 if ((
(r = sshbuf_ge...seconds)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u32(e->request, &seconds)) != 0
(r = sshbuf_ge...seconds)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
406 error("%s: bad lifetime constraint: %s",-
407 __func__, ssh_err(r));-
408 goto
never executed: goto err;
err;
never executed: goto err;
0
409 }-
410 death = monotime() + seconds;-
411 break;
never executed: break;
0
412 case
never executed: case 2:
2:
never executed: case 2:
0
413 confirm = 1;-
414 break;
never executed: break;
0
415 case
never executed: case 3:
3:
never executed: case 3:
0
416 if ((
(r = sshbuf_ge...maxsign)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u32(e->request, &maxsign)) != 0
(r = sshbuf_ge...maxsign)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
417 error("%s: bad maxsign constraint: %s",-
418 __func__, ssh_err(r));-
419 goto
never executed: goto err;
err;
never executed: goto err;
0
420 }-
421 if ((
(r = sshkey_en...maxsign)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshkey_enable_maxsign(k, maxsign)) != 0
(r = sshkey_en...maxsign)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
422 error("%s: cannot enable maxsign: %s",-
423 __func__, ssh_err(r));-
424 goto
never executed: goto err;
err;
never executed: goto err;
0
425 }-
426 break;
never executed: break;
0
427 default
never executed: default:
:
never executed: default:
0
428 error("%s: Unknown constraint %d", __func__, ctype);-
429 err:
code before this statement never executed: err:
0
430 sshbuf_reset(e->request);-
431 free(comment);-
432 sshkey_free(k);-
433 goto
never executed: goto send;
send;
never executed: goto send;
0
434 }-
435 }-
436-
437 success = 1;-
438 if (lifetime
lifetimeDescription
TRUEnever evaluated
FALSEnever evaluated
&& !death
!deathDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
439 death = monotime() + lifetime;
never executed: death = monotime() + lifetime;
0
440 if ((
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id = lookup_identity(k)) ==
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
441 ((void *)0)
(id = lookup_i...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
442 ) {-
443 id = xcalloc(1, sizeof(Identity));-
444 do { (id)->next.tqe_next = -
445 ((void *)0)-
446 ; (id)->next.tqe_prev = (&idtab->idlist)->tqh_last; *(&idtab->idlist)->tqh_last = (id); (&idtab->idlist)->tqh_last = &(id)->next.tqe_next; } while (0);-
447-
448 idtab->nentries++;-
449 }
never executed: end of block
else {
0
450-
451 sshkey_free(id->key);-
452 free(id->comment);-
453 }
never executed: end of block
0
454 id->key = k;-
455 id->comment = comment;-
456 id->death = death;-
457 id->confirm = confirm;-
458send:
code before this statement never executed: send:
0
459 send_status(e, success);-
460}
never executed: end of block
0
461-
462-
463static void-
464process_lock_agent(SocketEntry *e, int lock)-
465{-
466 int r, success = 0, delay;-
467 char *passwd;-
468 u_char passwdhash[32];-
469 static u_int fail_count = 0;-
470 size_t pwlen;-
471-
472-
473-
474-
475-
476-
477 if ((
(r = sshbuf_ge... &pwlen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(e->request, &passwd, &pwlen)) != 0
(r = sshbuf_ge... &pwlen)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
478 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
479 if (pwlen == 0
pwlen == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
480 debug("empty password not supported");-
481 }
never executed: end of block
else if (locked
lockedDescription
TRUEnever evaluated
FALSEnever evaluated
&& !lock
!lockDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
482 if (bcrypt_pbkdf(passwd, pwlen, lock_salt, sizeof(lock_salt),
bcrypt_pbkdf(p...dhash), 1) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
483 passwdhash, sizeof(passwdhash), 1) < 0
bcrypt_pbkdf(p...dhash), 1) < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
484 fatal("bcrypt_pbkdf");
never executed: fatal("bcrypt_pbkdf");
0
485 if (timingsafe_bcmp(passwdhash, lock_pwhash, 32) == 0
timingsafe_bcm...hash, 32) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
486 debug("agent unlocked");-
487 locked = 0;-
488 fail_count = 0;-
489 explicit_bzero(lock_pwhash, sizeof(lock_pwhash));-
490 success = 1;-
491 }
never executed: end of block
else {
0
492-
493 if (fail_count < 100
fail_count < 100Description
TRUEnever evaluated
FALSEnever evaluated
)
0
494 fail_count++;
never executed: fail_count++;
0
495 delay = 100000 * fail_count;-
496 debug("unlock failed, delaying %0.1lf seconds",-
497 (double)delay/1000000);-
498 usleep(delay);-
499 }
never executed: end of block
0
500 explicit_bzero(passwdhash, sizeof(passwdhash));-
501 }
never executed: end of block
else if (!locked
!lockedDescription
TRUEnever evaluated
FALSEnever evaluated
&& lock
lockDescription
TRUEnever evaluated
FALSEnever evaluated
)
{
0
502 debug("agent locked");-
503 locked = 1;-
504 arc4random_buf(lock_salt, sizeof(lock_salt));-
505 if (bcrypt_pbkdf(passwd, pwlen, lock_salt, sizeof(lock_salt),
bcrypt_pbkdf(p...whash), 1) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
506 lock_pwhash, sizeof(lock_pwhash), 1) < 0
bcrypt_pbkdf(p...whash), 1) < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
507 fatal("bcrypt_pbkdf");
never executed: fatal("bcrypt_pbkdf");
0
508 success = 1;-
509 }
never executed: end of block
0
510 explicit_bzero(passwd, pwlen);-
511 free(passwd);-
512 send_status(e, success);-
513}
never executed: end of block
0
514-
515static void-
516no_identities(SocketEntry *e)-
517{-
518 struct sshbuf *msg;-
519 int r;-
520-
521 if ((
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
msg = sshbuf_new()) ==
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
522 ((void *)0)
(msg = sshbuf_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
523 )-
524 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
525 if ((
(r = sshbuf_pu...msg, 12)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u8(msg, 12)) != 0
(r = sshbuf_pu...msg, 12)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
526 (
(r = sshbuf_pu...(msg, 0)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_u32(msg, 0)) != 0
(r = sshbuf_pu...(msg, 0)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
527 (
(r = sshbuf_pu...ut, msg)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put_stringb(e->output, msg)) != 0
(r = sshbuf_pu...ut, msg)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
528 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
529 sshbuf_free(msg);-
530}
never executed: end of block
0
531-
532-
533static void-
534process_add_smartcard_key(SocketEntry *e)-
535{-
536 char *provider = -
537 ((void *)0)-
538 , *pin = -
539 ((void *)0)-
540 , canonical_provider[-
541 4096-
542 ];-
543 int r, i, count = 0, success = 0, confirm = 0;-
544 u_int seconds;-
545 time_t death = 0;-
546 u_char type;-
547 struct sshkey **keys = -
548 ((void *)0)-
549 , *k;-
550 Identity *id;-
551-
552 if ((
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(e->request, &provider,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
553 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
554 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
555 (
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(e->request, &pin,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
556 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
557 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
558 error("%s: buffer error: %s", __func__, ssh_err(r));-
559 goto
never executed: goto send;
send;
never executed: goto send;
0
560 }-
561-
562 while (sshbuf_len(e->request)
sshbuf_len(e->request)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
563 if ((
(r = sshbuf_ge..., &type)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u8(e->request, &type)) != 0
(r = sshbuf_ge..., &type)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
564 error("%s: buffer error: %s", __func__, ssh_err(r));-
565 goto
never executed: goto send;
send;
never executed: goto send;
0
566 }-
567 switch (type) {-
568 case
never executed: case 1:
1:
never executed: case 1:
0
569 if ((
(r = sshbuf_ge...seconds)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u32(e->request, &seconds)) != 0
(r = sshbuf_ge...seconds)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
570 error("%s: buffer error: %s",-
571 __func__, ssh_err(r));-
572 goto
never executed: goto send;
send;
never executed: goto send;
0
573 }-
574 death = monotime() + seconds;-
575 break;
never executed: break;
0
576 case
never executed: case 2:
2:
never executed: case 2:
0
577 confirm = 1;-
578 break;
never executed: break;
0
579 default
never executed: default:
:
never executed: default:
0
580 error("%s: Unknown constraint type %d", __func__, type);-
581 goto
never executed: goto send;
send;
never executed: goto send;
0
582 }-
583 }-
584 if (_ssh_compat_realpath(provider, canonical_provider) ==
_ssh_compat_re...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
585 ((void *)0)
_ssh_compat_re...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
586 ) {-
587 verbose("failed PKCS#11 add of \"%.100s\": realpath: %s",-
588 provider, strerror(-
589 (*__errno_location ())-
590 ));-
591 goto
never executed: goto send;
send;
never executed: goto send;
0
592 }-
593 if (match_pattern_list(canonical_provider, pkcs11_whitelist, 0) != 1
match_pattern_...elist, 0) != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
594 verbose("refusing PKCS#11 add of \"%.100s\": "-
595 "provider not whitelisted", canonical_provider);-
596 goto
never executed: goto send;
send;
never executed: goto send;
0
597 }-
598 debug("%s: add %.100s", __func__, canonical_provider);-
599 if (lifetime
lifetimeDescription
TRUEnever evaluated
FALSEnever evaluated
&& !death
!deathDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
600 death = monotime() + lifetime;
never executed: death = monotime() + lifetime;
0
601-
602 count = pkcs11_add_provider(canonical_provider, pin, &keys);-
603 for (i = 0; i < count
i < countDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
604 k = keys[i];-
605 if (lookup_identity(k) ==
lookup_identit...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
606 ((void *)0)
lookup_identit...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
607 ) {-
608 id = xcalloc(1, sizeof(Identity));-
609 id->key = k;-
610 id->provider = xstrdup(canonical_provider);-
611 id->comment = xstrdup(canonical_provider);-
612 id->death = death;-
613 id->confirm = confirm;-
614 do { (id)->next.tqe_next = -
615 ((void *)0)-
616 ; (id)->next.tqe_prev = (&idtab->idlist)->tqh_last; *(&idtab->idlist)->tqh_last = (id); (&idtab->idlist)->tqh_last = &(id)->next.tqe_next; } while (0);-
617 idtab->nentries++;-
618 success = 1;-
619 }
never executed: end of block
else {
0
620 sshkey_free(k);-
621 }
never executed: end of block
0
622 keys[i] = -
623 ((void *)0)-
624 ;-
625 }
never executed: end of block
0
626send:
code before this statement never executed: send:
0
627 free(pin);-
628 free(provider);-
629 free(keys);-
630 send_status(e, success);-
631}
never executed: end of block
0
632-
633static void-
634process_remove_smartcard_key(SocketEntry *e)-
635{-
636 char *provider = -
637 ((void *)0)-
638 , *pin = -
639 ((void *)0)-
640 , canonical_provider[-
641 4096-
642 ];-
643 int r, success = 0;-
644 Identity *id, *nxt;-
645-
646 if ((
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(e->request, &provider,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
647 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
648 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
649 (
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_cstring(e->request, &pin,
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
650 ((void *)0)
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
651 )) != 0
(r = sshbuf_ge...d *)0) )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
652 error("%s: buffer error: %s", __func__, ssh_err(r));-
653 goto
never executed: goto send;
send;
never executed: goto send;
0
654 }-
655 free(pin);-
656-
657 if (_ssh_compat_realpath(provider, canonical_provider) ==
_ssh_compat_re...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
658 ((void *)0)
_ssh_compat_re...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
659 ) {-
660 verbose("failed PKCS#11 add of \"%.100s\": realpath: %s",-
661 provider, strerror(-
662 (*__errno_location ())-
663 ));-
664 goto
never executed: goto send;
send;
never executed: goto send;
0
665 }-
666-
667 debug("%s: remove %.100s", __func__, canonical_provider);-
668 for (id = ((&idtab->idlist)->tqh_first); id
idDescription
TRUEnever evaluated
FALSEnever evaluated
; id = nxt) {
0
669 nxt = ((id)->next.tqe_next);-
670-
671 if (id->provider ==
id->provider == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
672 ((void *)0)
id->provider == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
673 )-
674 continue;
never executed: continue;
0
675 if (!
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
676 __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
677 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
678 ) && __builtin_constant_p (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
679 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
680 ) && (__s1_len = __builtin_strlen (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
681 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
682 ), __s2_len = __builtin_strlen (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
683 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
684 ), (!((size_t)(const void *)((
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
685 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
686 ) + 1) - (size_t)(const void *)(
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
687 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
688 ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
689 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
690 ) + 1) - (size_t)(const void *)(
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
691 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
692 ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
693 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
694 ,
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
695 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
696 ) : (__builtin_constant_p (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
697 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
698 ) && ((size_t)(const void *)((
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
699 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
700 ) + 1) - (size_t)(const void *)(
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
701 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
702 ) == 1) && (__s1_len = __builtin_strlen (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
703 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
704 ), __s1_len < 4) ? (__builtin_constant_p (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
705 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
706 ) && ((size_t)(const void *)((
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
707 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
708 ) + 1) - (size_t)(const void *)(
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
709 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
710 ) == 1) ? __builtin_strcmp (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
711 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
712 ,
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
713 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
714 ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
715 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
716 ); int __result = (((const unsigned char *) (const char *) (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
717 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
718 ))[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_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
719 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
720 ))[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_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
721 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
722 ))[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 *) ( canonical_provider ))[3] - __s2[3]);
0
723 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
never executed: __result = (((const unsigned char *) (const char *) ( canonical_provider ))[3] - __s2[3]);
0
724 ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
725 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
726 ) && ((size_t)(const void *)((
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
727 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
728 ) + 1) - (size_t)(const void *)(
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
729 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
730 ) == 1) && (__s2_len = __builtin_strlen (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
731 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
732 ), __s2_len < 4) ? (__builtin_constant_p (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
733 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
734 ) && ((size_t)(const void *)((
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
735 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
736 ) + 1) - (size_t)(const void *)(
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
737 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
738 ) == 1) ? __builtin_strcmp (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
739 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
740 ,
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
741 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
742 ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
743 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
744 ); int __result = (((const unsigned char *) (const char *) (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
745 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
746 ))[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_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
747 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
748 ))[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_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
749 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
750 ))[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 *) ( id->provider ))[3] - __s2[3]);
0
751 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
never executed: __result = (((const unsigned char *) (const char *) ( id->provider ))[3] - __s2[3]);
0
752 ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
753 canonical_provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
754 ,
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
755 id->provider
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
756 )))); })
! __extension_...vider )))); })Description
TRUEnever evaluated
FALSEnever evaluated
0
757 ) {-
758 do { if (((
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
id)->next.tqe_next) !=
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
759 ((void *)0)
((id)->next.tq...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
760 ) (
never executed: (id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
never executed: (id)->next.tqe_next->next.tqe_prev = (id)->next.tqe_prev;
else (
never executed: (&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
never executed: (&idtab->idlist)->tqh_last = (id)->next.tqe_prev;
*(id)->next.tqe_prev = (id)->next.tqe_next; ; ; } while (0);
0
761 free_identity(id);-
762 idtab->nentries--;-
763 }
never executed: end of block
0
764 }
never executed: end of block
0
765 if (pkcs11_del_provider(canonical_provider) == 0
pkcs11_del_pro...provider) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
766 success = 1;
never executed: success = 1;
0
767 else-
768 error("%s: pkcs11_del_provider failed", __func__);
never executed: error("%s: pkcs11_del_provider failed", __func__);
0
769send:
code before this statement never executed: send:
0
770 free(provider);-
771 send_status(e, success);-
772}
never executed: end of block
0
773-
774-
775-
776-
777static int-
778process_message(u_int socknum)-
779{-
780 u_int msg_len;-
781 u_char type;-
782 const u_char *cp;-
783 int r;-
784 SocketEntry *e;-
785-
786 if (socknum >= sockets_alloc
socknum >= sockets_allocDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
787 fatal("%s: socket number %u >= allocated %u",-
788 __func__, socknum, sockets_alloc);-
789 }
never executed: end of block
0
790 e = &sockets[socknum];-
791-
792 if (sshbuf_len(e->input) < 5
sshbuf_len(e->input) < 5Description
TRUEnever evaluated
FALSEnever evaluated
)
0
793 return
never executed: return 0;
0;
never executed: return 0;
0
794 cp = sshbuf_ptr(e->input);-
795 msg_len = (((u_int32_t)(((const u_char *)(cp))[0]) << 24) | ((u_int32_t)(((const u_char *)(cp))[1]) << 16) | ((u_int32_t)(((const u_char *)(cp))[2]) << 8) | (u_int32_t)(((const u_char *)(cp))[3]));-
796 if (msg_len > (256*1024)
msg_len > (256*1024)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
797 debug("%s: socket %u (fd=%d) message too long %u > %u",-
798 __func__, socknum, e->fd, msg_len, (256*1024));-
799 return
never executed: return -1;
-1;
never executed: return -1;
0
800 }-
801 if (sshbuf_len(e->input) < msg_len + 4
sshbuf_len(e->... < msg_len + 4Description
TRUEnever evaluated
FALSEnever evaluated
)
0
802 return
never executed: return 0;
0;
never executed: return 0;
0
803-
804-
805 sshbuf_reset(e->request);-
806 if ((
(r = sshbuf_ge...request)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_stringb(e->input, e->request)) != 0
(r = sshbuf_ge...request)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
||
0
807 (
(r = sshbuf_ge..., &type)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_get_u8(e->request, &type)) != 0
(r = sshbuf_ge..., &type)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
808 if (r == -3
r == -3Description
TRUEnever evaluated
FALSEnever evaluated
||
0
809 r == -6
r == -6Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
810 debug("%s: buffer error: %s", __func__, ssh_err(r));-
811 return
never executed: return -1;
-1;
never executed: return -1;
0
812 }-
813 fatal("%s: buffer error: %s", __func__, ssh_err(r));-
814 }
never executed: end of block
0
815-
816 debug("%s: socket %u (fd=%d) type %d", __func__, socknum, e->fd, type);-
817-
818-
819 if (locked
lockedDescription
TRUEnever evaluated
FALSEnever evaluated
&& type != 23
type != 23Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
820 sshbuf_reset(e->request);-
821 switch (type) {-
822 case
never executed: case 11:
11:
never executed: case 11:
0
823-
824 no_identities(e);-
825 break;
never executed: break;
0
826 default
never executed: default:
:
never executed: default:
0
827-
828 send_status(e, 0);-
829 }
never executed: end of block
0
830 return
never executed: return 0;
0;
never executed: return 0;
0
831 }-
832-
833 switch (type) {-
834 case
never executed: case 22:
22:
never executed: case 22:
0
835 case
never executed: case 23:
23:
never executed: case 23:
0
836 process_lock_agent(e, type == 22);-
837 break;
never executed: break;
0
838 case
never executed: case 9:
9:
never executed: case 9:
0
839 process_remove_all_identities(e);-
840 break;
never executed: break;
0
841-
842 case
never executed: case 13:
13:
never executed: case 13:
0
843 process_sign_request2(e);-
844 break;
never executed: break;
0
845 case
never executed: case 11:
11:
never executed: case 11:
0
846 process_request_identities(e);-
847 break;
never executed: break;
0
848 case
never executed: case 17:
17:
never executed: case 17:
0
849 case
never executed: case 25:
25:
never executed: case 25:
0
850 process_add_identity(e);-
851 break;
never executed: break;
0
852 case
never executed: case 18:
18:
never executed: case 18:
0
853 process_remove_identity(e);-
854 break;
never executed: break;
0
855 case
never executed: case 19:
19:
never executed: case 19:
0
856 process_remove_all_identities(e);-
857 break;
never executed: break;
0
858-
859 case
never executed: case 20:
20:
never executed: case 20:
0
860 case
never executed: case 26:
26:
never executed: case 26:
0
861 process_add_smartcard_key(e);-
862 break;
never executed: break;
0
863 case
never executed: case 21:
21:
never executed: case 21:
0
864 process_remove_smartcard_key(e);-
865 break;
never executed: break;
0
866-
867 default
never executed: default:
:
never executed: default:
0
868-
869 error("Unknown message %d", type);-
870 sshbuf_reset(e->request);-
871 send_status(e, 0);-
872 break;
never executed: break;
0
873 }-
874 return
never executed: return 0;
0;
never executed: return 0;
0
875}-
876-
877static void-
878new_socket(sock_type type, int fd)-
879{-
880 u_int i, old_alloc, new_alloc;-
881-
882 set_nonblock(fd);-
883-
884 if (fd > max_fd
fd > max_fdDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
885 max_fd = fd;
never executed: max_fd = fd;
0
886-
887 for (i = 0; i < sockets_alloc
i < sockets_allocDescription
TRUEnever evaluated
FALSEnever evaluated
; i++)
0
888 if (sockets[i].type == AUTH_UNUSED
sockets[i].type == AUTH_UNUSEDDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
889 sockets[i].fd = fd;-
890 if ((
(sockets[i].in...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
sockets[i].input = sshbuf_new()) ==
(sockets[i].in...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
891 ((void *)0)
(sockets[i].in...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
892 )-
893 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
894 if ((
(sockets[i].ou...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
sockets[i].output = sshbuf_new()) ==
(sockets[i].ou...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
895 ((void *)0)
(sockets[i].ou...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
896 )-
897 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
898 if ((
(sockets[i].re...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
sockets[i].request = sshbuf_new()) ==
(sockets[i].re...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
899 ((void *)0)
(sockets[i].re...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
900 )-
901 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
902 sockets[i].type = type;-
903 return;
never executed: return;
0
904 }-
905 old_alloc = sockets_alloc;-
906 new_alloc = sockets_alloc + 10;-
907 sockets = xreallocarray(sockets, new_alloc, sizeof(sockets[0]));-
908 for (i = old_alloc; i < new_alloc
i < new_allocDescription
TRUEnever evaluated
FALSEnever evaluated
; i++)
0
909 sockets[i].type = AUTH_UNUSED;
never executed: sockets[i].type = AUTH_UNUSED;
0
910 sockets_alloc = new_alloc;-
911 sockets[old_alloc].fd = fd;-
912 if ((
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
sockets[old_alloc].input = sshbuf_new()) ==
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
913 ((void *)0)
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
914 )-
915 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
916 if ((
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
sockets[old_alloc].output = sshbuf_new()) ==
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
917 ((void *)0)
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
918 )-
919 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
920 if ((
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
sockets[old_alloc].request = sshbuf_new()) ==
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
921 ((void *)0)
(sockets[old_a...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
922 )-
923 fatal("%s: sshbuf_new failed", __func__);
never executed: fatal("%s: sshbuf_new failed", __func__);
0
924 sockets[old_alloc].type = type;-
925}
never executed: end of block
0
926-
927static int-
928handle_socket_read(u_int socknum)-
929{-
930 struct sockaddr_un sunaddr;-
931 socklen_t slen;-
932 uid_t euid;-
933 gid_t egid;-
934 int fd;-
935-
936 slen = sizeof(sunaddr);-
937 fd = accept(sockets[socknum].fd, (struct sockaddr *)&sunaddr, &slen);-
938 if (fd < 0
fd < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
939 error("accept from AUTH_SOCKET: %s", strerror(-
940 (*__errno_location ())-
941 ));-
942 return
never executed: return -1;
-1;
never executed: return -1;
0
943 }-
944 if (getpeereid(fd, &euid, &egid) < 0
getpeereid(fd,...id, &egid) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
945 error("getpeereid %d failed: %s", fd, strerror(-
946 (*__errno_location ())-
947 ));-
948 close(fd);-
949 return
never executed: return -1;
-1;
never executed: return -1;
0
950 }-
951 if ((
(euid != 0)Description
TRUEnever evaluated
FALSEnever evaluated
euid != 0)
(euid != 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(getuid() != euid)Description
TRUEnever evaluated
FALSEnever evaluated
getuid() != euid)
(getuid() != euid)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
952 error("uid mismatch: peer euid %u != uid %u",-
953 (u_int) euid, (u_int) getuid());-
954 close(fd);-
955 return
never executed: return -1;
-1;
never executed: return -1;
0
956 }-
957 new_socket(AUTH_CONNECTION, fd);-
958 return
never executed: return 0;
0;
never executed: return 0;
0
959}-
960-
961static int-
962handle_conn_read(u_int socknum)-
963{-
964 char buf[1024];-
965 ssize_t len;-
966 int r;-
967-
968 if ((
(len = read(so...of(buf))) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
len = read(sockets[socknum].fd, buf, sizeof(buf))) <= 0
(len = read(so...of(buf))) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
969 if (len == -1
len == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
970 if (-
971 (*
(*__errno_location ()) == 11Description
TRUEnever evaluated
FALSEnever evaluated
__errno_location ())
(*__errno_location ()) == 11Description
TRUEnever evaluated
FALSEnever evaluated
0
972 ==
(*__errno_location ()) == 11Description
TRUEnever evaluated
FALSEnever evaluated
0
973 11
(*__errno_location ()) == 11Description
TRUEnever evaluated
FALSEnever evaluated
0
974 || -
975 (*
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
__errno_location ())
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
976 ==
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
977 4
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
978 )-
979 return
never executed: return 0;
0;
never executed: return 0;
0
980 error("%s: read error on socket %u (fd %d): %s",-
981 __func__, socknum, sockets[socknum].fd,-
982 strerror(-
983 (*__errno_location ())-
984 ));-
985 }
never executed: end of block
0
986 return
never executed: return -1;
-1;
never executed: return -1;
0
987 }-
988 if ((
(r = sshbuf_pu...uf, len)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_put(sockets[socknum].input, buf, len)) != 0
(r = sshbuf_pu...uf, len)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
989 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
990 explicit_bzero(buf, sizeof(buf));-
991 process_message(socknum);-
992 return
never executed: return 0;
0;
never executed: return 0;
0
993}-
994-
995static int-
996handle_conn_write(u_int socknum)-
997{-
998 ssize_t len;-
999 int r;-
1000-
1001 if (sshbuf_len(sockets[socknum].output) == 0
sshbuf_len(soc...].output) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1002 return
never executed: return 0;
0;
never executed: return 0;
0
1003 if ((
(len = write(s...output))) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
len = write(sockets[socknum].fd,
(len = write(s...output))) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1004 sshbuf_ptr(sockets[socknum].output),
(len = write(s...output))) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1005 sshbuf_len(sockets[socknum].output))) <= 0
(len = write(s...output))) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1006 if (len == -1
len == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1007 if (-
1008 (*
(*__errno_location ()) == 11Description
TRUEnever evaluated
FALSEnever evaluated
__errno_location ())
(*__errno_location ()) == 11Description
TRUEnever evaluated
FALSEnever evaluated
0
1009 ==
(*__errno_location ()) == 11Description
TRUEnever evaluated
FALSEnever evaluated
0
1010 11
(*__errno_location ()) == 11Description
TRUEnever evaluated
FALSEnever evaluated
0
1011 || -
1012 (*
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
__errno_location ())
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
1013 ==
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
1014 4
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
1015 )-
1016 return
never executed: return 0;
0;
never executed: return 0;
0
1017 error("%s: read error on socket %u (fd %d): %s",-
1018 __func__, socknum, sockets[socknum].fd,-
1019 strerror(-
1020 (*__errno_location ())-
1021 ));-
1022 }
never executed: end of block
0
1023 return
never executed: return -1;
-1;
never executed: return -1;
0
1024 }-
1025 if ((
(r = sshbuf_co...ut, len)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
r = sshbuf_consume(sockets[socknum].output, len)) != 0
(r = sshbuf_co...ut, len)) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1026 fatal("%s: buffer error: %s", __func__, ssh_err(r));
never executed: fatal("%s: buffer error: %s", __func__, ssh_err(r));
0
1027 return
never executed: return 0;
0;
never executed: return 0;
0
1028}-
1029-
1030static void-
1031after_poll(struct pollfd *pfd, size_t npfd, u_int maxfds)-
1032{-
1033 size_t i;-
1034 u_int socknum, activefds = npfd;-
1035-
1036 for (i = 0; i < npfd
i < npfdDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
1037 if (pfd[i].revents == 0
pfd[i].revents == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1038 continue;
never executed: continue;
0
1039-
1040 for (socknum = 0; socknum < sockets_alloc
socknum < sockets_allocDescription
TRUEnever evaluated
FALSEnever evaluated
; socknum++) {
0
1041 if (sockets[socknum].type != AUTH_SOCKET
sockets[socknu...!= AUTH_SOCKETDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
1042 sockets[socknum].type != AUTH_CONNECTION
sockets[socknu...UTH_CONNECTIONDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1043 continue;
never executed: continue;
0
1044 if (pfd[i].fd == sockets[socknum].fd
pfd[i].fd == s...ts[socknum].fdDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1045 break;
never executed: break;
0
1046 }
never executed: end of block
0
1047 if (socknum >= sockets_alloc
socknum >= sockets_allocDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1048 error("%s: no socket for fd %d", __func__, pfd[i].fd);-
1049 continue;
never executed: continue;
0
1050 }-
1051-
1052 switch (sockets[socknum].type) {-
1053 case
never executed: case AUTH_SOCKET:
AUTH_SOCKET:
never executed: case AUTH_SOCKET:
0
1054 if ((
(pfd[i].revent... 0x008 )) == 0Description
TRUEnever evaluated
FALSEnever evaluated
pfd[i].revents & (
(pfd[i].revent... 0x008 )) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1055 0x001
(pfd[i].revent... 0x008 )) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1056 |
(pfd[i].revent... 0x008 )) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1057 0x008
(pfd[i].revent... 0x008 )) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1058 )) == 0
(pfd[i].revent... 0x008 )) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1059 break;
never executed: break;
0
1060 if (npfd > maxfds
npfd > maxfdsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1061 debug3("out of fds (active %u >= limit %u); "-
1062 "skipping accept", activefds, maxfds);-
1063 break;
never executed: break;
0
1064 }-
1065 if (handle_socket_read(socknum) == 0
handle_socket_...(socknum) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1066 activefds++;
never executed: activefds++;
0
1067 break;
never executed: break;
0
1068 case
never executed: case AUTH_CONNECTION:
AUTH_CONNECTION:
never executed: case AUTH_CONNECTION:
0
1069 if ((
(pfd[i].revent... 0x008 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
pfd[i].revents & (
(pfd[i].revent... 0x008 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1070 0x001
(pfd[i].revent... 0x008 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1071 |
(pfd[i].revent... 0x008 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1072 0x008
(pfd[i].revent... 0x008 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1073 )) != 0
(pfd[i].revent... 0x008 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
1074 handle_conn_read(socknum) != 0
handle_conn_read(socknum) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1075 goto
never executed: goto close_sock;
close_sock;
never executed: goto close_sock;
0
1076 }-
1077 if ((
(pfd[i].revent... 0x010 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
pfd[i].revents & (
(pfd[i].revent... 0x010 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1078 0x004
(pfd[i].revent... 0x010 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1079 |
(pfd[i].revent... 0x010 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1080 0x010
(pfd[i].revent... 0x010 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1081 )) != 0
(pfd[i].revent... 0x010 )) != 0Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
1082 handle_conn_write(socknum) != 0
handle_conn_wr...(socknum) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1083 close_sock:-
1084 if (activefds == 0
activefds == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1085 fatal("activefds == 0 at close_sock");
never executed: fatal("activefds == 0 at close_sock");
0
1086 close_socket(&sockets[socknum]);-
1087 activefds--;-
1088 break;
never executed: break;
0
1089 }-
1090 break;
never executed: break;
0
1091 default
never executed: default:
:
never executed: default:
0
1092 break;
never executed: break;
0
1093 }-
1094 }-
1095}
never executed: end of block
0
1096-
1097static int-
1098prepare_poll(struct pollfd **pfdp, size_t *npfdp, int *timeoutp, u_int maxfds)-
1099{-
1100 struct pollfd *pfd = *pfdp;-
1101 size_t i, j, npfd = 0;-
1102 time_t deadline;-
1103-
1104-
1105 for (i = 0; i < sockets_alloc
i < sockets_allocDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
1106 switch (sockets[i].type) {-
1107 case
never executed: case AUTH_SOCKET:
AUTH_SOCKET:
never executed: case AUTH_SOCKET:
0
1108 case
never executed: case AUTH_CONNECTION:
AUTH_CONNECTION:
never executed: case AUTH_CONNECTION:
0
1109 npfd++;-
1110 break;
never executed: break;
0
1111 case
never executed: case AUTH_UNUSED:
AUTH_UNUSED:
never executed: case AUTH_UNUSED:
0
1112 break;
never executed: break;
0
1113 default
never executed: default:
:
never executed: default:
0
1114 fatal("Unknown socket type %d", sockets[i].type);-
1115 break;
never executed: break;
0
1116 }-
1117 }-
1118 if (npfd != *npfdp
npfd != *npfdpDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
1119 (
(pfd = recallo...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
pfd = recallocarray(pfd, *npfdp, npfd, sizeof(*pfd))) ==
(pfd = recallo...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1120 ((void *)0)
(pfd = recallo...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1121 )-
1122 fatal("%s: recallocarray failed", __func__);
never executed: fatal("%s: recallocarray failed", __func__);
0
1123 *pfdp = pfd;-
1124 *npfdp = npfd;-
1125-
1126 for (i = j = 0; i < sockets_alloc
i < sockets_allocDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
1127 switch (sockets[i].type) {-
1128 case
never executed: case AUTH_SOCKET:
AUTH_SOCKET:
never executed: case AUTH_SOCKET:
0
1129 if (npfd > maxfds
npfd > maxfdsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1130 debug3("out of fds (active %zu >= limit %u); "-
1131 "skipping arming listener", npfd, maxfds);-
1132 break;
never executed: break;
0
1133 }-
1134 pfd[j].fd = sockets[i].fd;-
1135 pfd[j].revents = 0;-
1136 pfd[j].events = -
1137 0x001-
1138 ;-
1139 j++;-
1140 break;
never executed: break;
0
1141 case
never executed: case AUTH_CONNECTION:
AUTH_CONNECTION:
never executed: case AUTH_CONNECTION:
0
1142 pfd[j].fd = sockets[i].fd;-
1143 pfd[j].revents = 0;-
1144-
1145 pfd[j].events = -
1146 0x001-
1147 ;-
1148 if (sshbuf_len(sockets[i].output) > 0
sshbuf_len(soc...i].output) > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1149 pfd[j].events |=
never executed: pfd[j].events |= 0x004 ;
0
1150 0x004
never executed: pfd[j].events |= 0x004 ;
0
1151 ;
never executed: pfd[j].events |= 0x004 ;
0
1152 j++;-
1153 break;
never executed: break;
0
1154 default
never executed: default:
:
never executed: default:
0
1155 break;
never executed: break;
0
1156 }-
1157 }-
1158 deadline = reaper();-
1159 if (parent_alive_interval != 0
parent_alive_interval != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1160 deadline = (
(deadline == 0)Description
TRUEnever evaluated
FALSEnever evaluated
deadline == 0)
(deadline == 0)Description
TRUEnever evaluated
FALSEnever evaluated
? parent_alive_interval :
never executed: deadline = (deadline == 0) ? parent_alive_interval : (((deadline) < (parent_alive_interval)) ? (deadline) : (parent_alive_interval));
0
1161 (((
((deadline) < ...ive_interval))Description
TRUEnever evaluated
FALSEnever evaluated
deadline) < (parent_alive_interval))
((deadline) < ...ive_interval))Description
TRUEnever evaluated
FALSEnever evaluated
? (deadline) : (parent_alive_interval));
never executed: deadline = (deadline == 0) ? parent_alive_interval : (((deadline) < (parent_alive_interval)) ? (deadline) : (parent_alive_interval));
0
1162 if (deadline == 0
deadline == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1163 *timeoutp = -1;-
1164 }
never executed: end of block
else {
0
1165 if (deadline > 0x7fffffff / 1000
deadline > 0x7fffffff / 1000Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1166 *
never executed: *timeoutp = 0x7fffffff / 1000;
timeoutp = 0x7fffffff / 1000;
never executed: *timeoutp = 0x7fffffff / 1000;
0
1167 else-
1168 *
never executed: *timeoutp = deadline * 1000;
timeoutp = deadline * 1000;
never executed: *timeoutp = deadline * 1000;
0
1169 }-
1170 return
never executed: return (1);
(1);
never executed: return (1);
0
1171}-
1172-
1173static void-
1174cleanup_socket(void)-
1175{-
1176 if (cleanup_pid != 0
cleanup_pid != 0Description
TRUEnever evaluated
FALSEnever evaluated
&& getpid() != cleanup_pid
getpid() != cleanup_pidDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1177 return;
never executed: return;
0
1178 debug("%s: cleanup", __func__);-
1179 if (socket_name[0]
socket_name[0]Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1180 unlink(socket_name);
never executed: unlink(socket_name);
0
1181 if (socket_dir[0]
socket_dir[0]Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1182 rmdir(socket_dir);
never executed: rmdir(socket_dir);
0
1183}
never executed: end of block
0
1184-
1185void-
1186cleanup_exit(int i)-
1187{-
1188 cleanup_socket();-
1189 _exit(i);-
1190}
never executed: end of block
0
1191-
1192-
1193static void-
1194cleanup_handler(int sig)-
1195{-
1196 cleanup_socket();-
1197-
1198 pkcs11_terminate();-
1199-
1200 _exit(2);-
1201}
never executed: end of block
0
1202-
1203static void-
1204check_parent_exists(void)-
1205{-
1206-
1207-
1208-
1209-
1210 if (parent_pid != -1
parent_pid != -1Description
TRUEnever evaluated
FALSEnever evaluated
&& getppid() != parent_pid
getppid() != parent_pidDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1211-
1212 cleanup_socket();-
1213 _exit(2);-
1214 }
never executed: end of block
0
1215}
never executed: end of block
0
1216-
1217static void-
1218usage(void)-
1219{-
1220 fprintf(-
1221 stderr-
1222 ,-
1223 "usage: ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]\n"-
1224 " [-P pkcs11_whitelist] [-t life] [command [arg ...]]\n"-
1225 " ssh-agent [-c | -s] -k\n");-
1226 exit(1);
never executed: exit(1);
0
1227}-
1228-
1229int-
1230main(int ac, char **av)-
1231{-
1232 int c_flag = 0, d_flag = 0, D_flag = 0, k_flag = 0, s_flag = 0;-
1233 int sock, fd, ch, result, saved_errno;-
1234 char *shell, *format, *pidstr, *agentsocket = -
1235 ((void *)0)-
1236 ;-
1237-
1238 struct rlimit rlim;-
1239-
1240 extern int BSDoptind;-
1241 extern char *BSDoptarg;-
1242 pid_t pid;-
1243 char pidstrbuf[1 + 3 * sizeof pid];-
1244 size_t len;-
1245 mode_t prev_mask;-
1246 int timeout = -1;-
1247 struct pollfd *pfd = -
1248 ((void *)0)-
1249 ;-
1250 size_t npfd = 0;-
1251 u_int maxfds;-
1252-
1253 ssh_malloc_init();-
1254-
1255 sanitise_stdfd();-
1256-
1257-
1258 setegid(getgid());-
1259 setgid(getgid());-
1260-
1261 platform_disable_tracing(0);-
1262-
1263 if (getrlimit(
getrlimit( RLI..., &rlim) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1264 RLIMIT_NOFILE
getrlimit( RLI..., &rlim) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1265 , &rlim) == -1
getrlimit( RLI..., &rlim) == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1266 fatal("%s: getrlimit: %s", __progname, strerror(
never executed: fatal("%s: getrlimit: %s", __progname, strerror( (*__errno_location ()) ));
0
1267 (*__errno_location ())
never executed: fatal("%s: getrlimit: %s", __progname, strerror( (*__errno_location ()) ));
0
1268 ));
never executed: fatal("%s: getrlimit: %s", __progname, strerror( (*__errno_location ()) ));
0
1269-
1270-
1271 -
1272OPENSSL_add_all_algorithms_noconf()-
1273 ;-
1274-
1275-
1276 __progname = ssh_get_progname(av[0]);-
1277 seed_rng();-
1278-
1279 while ((
(ch = BSDgetop...:P:t:")) != -1Description
TRUEnever evaluated
FALSEnever evaluated
ch = BSDgetopt(ac, av, "cDdksE:a:P:t:")) != -1
(ch = BSDgetop...:P:t:")) != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1280 switch (ch) {-
1281 case
never executed: case 'E':
'E':
never executed: case 'E':
0
1282 fingerprint_hash = ssh_digest_alg_by_name(BSDoptarg);-
1283 if (fingerprint_hash == -1
fingerprint_hash == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1284 fatal("Invalid hash algorithm \"%s\"", BSDoptarg);
never executed: fatal("Invalid hash algorithm \"%s\"", BSDoptarg);
0
1285 break;
never executed: break;
0
1286 case
never executed: case 'c':
'c':
never executed: case 'c':
0
1287 if (s_flag
s_flagDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1288 usage();
never executed: usage();
0
1289 c_flag++;-
1290 break;
never executed: break;
0
1291 case
never executed: case 'k':
'k':
never executed: case 'k':
0
1292 k_flag++;-
1293 break;
never executed: break;
0
1294 case
never executed: case 'P':
'P':
never executed: case 'P':
0
1295 if (pkcs11_whitelist !=
pkcs11_whiteli...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1296 ((void *)0)
pkcs11_whiteli...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1297 )-
1298 fatal("-P option already specified");
never executed: fatal("-P option already specified");
0
1299 pkcs11_whitelist = xstrdup(BSDoptarg);-
1300 break;
never executed: break;
0
1301 case
never executed: case 's':
's':
never executed: case 's':
0
1302 if (c_flag
c_flagDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1303 usage();
never executed: usage();
0
1304 s_flag++;-
1305 break;
never executed: break;
0
1306 case
never executed: case 'd':
'd':
never executed: case 'd':
0
1307 if (d_flag
d_flagDescription
TRUEnever evaluated
FALSEnever evaluated
|| D_flag
D_flagDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1308 usage();
never executed: usage();
0
1309 d_flag++;-
1310 break;
never executed: break;
0
1311 case
never executed: case 'D':
'D':
never executed: case 'D':
0
1312 if (d_flag
d_flagDescription
TRUEnever evaluated
FALSEnever evaluated
|| D_flag
D_flagDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1313 usage();
never executed: usage();
0
1314 D_flag++;-
1315 break;
never executed: break;
0
1316 case
never executed: case 'a':
'a':
never executed: case 'a':
0
1317 agentsocket = BSDoptarg;-
1318 break;
never executed: break;
0
1319 case
never executed: case 't':
't':
never executed: case 't':
0
1320 if ((
(lifetime = co...optarg)) == -1Description
TRUEnever evaluated
FALSEnever evaluated
lifetime = convtime(BSDoptarg)) == -1
(lifetime = co...optarg)) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1321 fprintf(-
1322 stderr-
1323 , "Invalid lifetime\n");-
1324 usage();-
1325 }
never executed: end of block
0
1326 break;
never executed: break;
0
1327 default
never executed: default:
:
never executed: default:
0
1328 usage();-
1329 }
never executed: end of block
0
1330 }-
1331 ac -= BSDoptind;-
1332 av += BSDoptind;-
1333-
1334 if (ac > 0
ac > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& (c_flag
c_flagDescription
TRUEnever evaluated
FALSEnever evaluated
|| k_flag
k_flagDescription
TRUEnever evaluated
FALSEnever evaluated
|| s_flag
s_flagDescription
TRUEnever evaluated
FALSEnever evaluated
|| d_flag
d_flagDescription
TRUEnever evaluated
FALSEnever evaluated
|| D_flag
D_flagDescription
TRUEnever evaluated
FALSEnever evaluated
))
0
1335 usage();
never executed: usage();
0
1336-
1337 if (pkcs11_whitelist ==
pkcs11_whiteli...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1338 ((void *)0)
pkcs11_whiteli...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1339 )-
1340 pkcs11_whitelist = xstrdup("/usr/lib*/*,/usr/local/lib*/*");
never executed: pkcs11_whitelist = xstrdup("/usr/lib*/*,/usr/local/lib*/*");
0
1341-
1342 if (ac == 0
ac == 0Description
TRUEnever evaluated
FALSEnever evaluated
&& !c_flag
!c_flagDescription
TRUEnever evaluated
FALSEnever evaluated
&& !s_flag
!s_flagDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1343 shell = getenv("SHELL");-
1344 if (shell !=
shell != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1345 ((void *)0)
shell != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1346 && (
(len = strlen(shell)) > 2Description
TRUEnever evaluated
FALSEnever evaluated
len = strlen(shell)) > 2
(len = strlen(shell)) > 2Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
1347 -
1348 (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__extension__ (__builtin_constant_p (
__builtin_constant_p ( 3 )Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1349 3
__builtin_constant_p ( 3 )Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1350 )
__builtin_constant_p ( 3 )Description
TRUEnever evaluated
FALSEnever evaluated
&& ((__builtin_constant_p (
__builtin_cons...ll + len - 3 )Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1351 shell + len - 3
__builtin_cons...ll + len - 3 )Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1352 )
__builtin_cons...ll + len - 3 )Description
TRUEnever evaluated
FALSEnever evaluated
&& strlen (
strlen ( shell...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1353 shell + len - 3
strlen ( shell...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1354 ) < ((size_t) (
strlen ( shell...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1355 3
strlen ( shell...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1356 ))
strlen ( shell...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
) || (__builtin_constant_p (
__builtin_constant_p ( "csh" )Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1357 "csh"
__builtin_constant_p ( "csh" )Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1358 )
__builtin_constant_p ( "csh" )Description
TRUEnever evaluated
FALSEnever evaluated
&& strlen (
strlen ( "csh"...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1359 "csh"
strlen ( "csh"...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1360 ) < ((size_t) (
strlen ( "csh"...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1361 3
strlen ( "csh"...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1362 ))
strlen ( "csh"...size_t) ( 3 ))Description
TRUEnever evaluated
FALSEnever evaluated
)) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1363 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1364 ) && __builtin_constant_p (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1365 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1366 ) && (__s1_len = __builtin_strlen (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1367 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1368 ), __s2_len = __builtin_strlen (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1369 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1370 ), (!((size_t)(const void *)((
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1371 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1372 ) + 1) - (size_t)(const void *)(
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1373 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1374 ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1375 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1376 ) + 1) - (size_t)(const void *)(
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1377 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1378 ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1379 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1380 ,
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1381 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1382 ) : (__builtin_constant_p (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1383 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1384 ) && ((size_t)(const void *)((
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1385 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1386 ) + 1) - (size_t)(const void *)(
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1387 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1388 ) == 1) && (__s1_len = __builtin_strlen (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1389 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1390 ), __s1_len < 4) ? (__builtin_constant_p (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1391 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1392 ) && ((size_t)(const void *)((
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1393 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1394 ) + 1) - (size_t)(const void *)(
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1395 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1396 ) == 1) ? __builtin_strcmp (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1397 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1398 ,
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1399 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1400 ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1401 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1402 ); int __result = (((const unsigned char *) (const char *) (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1403 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1404 ))[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__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1405 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1406 ))[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__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1407 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1408 ))[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 *) ( shell + len - 3 ))[3] - __s2[3]);
0
1409 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
never executed: __result = (((const unsigned char *) (const char *) ( shell + len - 3 ))[3] - __s2[3]);
0
1410 ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1411 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1412 ) && ((size_t)(const void *)((
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1413 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1414 ) + 1) - (size_t)(const void *)(
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1415 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1416 ) == 1) && (__s2_len = __builtin_strlen (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1417 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1418 ), __s2_len < 4) ? (__builtin_constant_p (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1419 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1420 ) && ((size_t)(const void *)((
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1421 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1422 ) + 1) - (size_t)(const void *)(
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1423 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1424 ) == 1) ? __builtin_strcmp (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1425 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1426 ,
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1427 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1428 ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1429 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1430 ); int __result = (((const unsigned char *) (const char *) (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1431 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1432 ))[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__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1433 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1434 ))[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__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1435 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1436 ))[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 *) ( "csh" ))[3] - __s2[3]);
0
1437 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
never executed: __result = (((const unsigned char *) (const char *) ( "csh" ))[3] - __s2[3]);
0
1438 ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1439 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1440 ,
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1441 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1442 )))); }) : strncmp (
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1443 shell + len - 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1444 ,
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1445 "csh"
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1446 ,
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1447 3
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1448 )))
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1449 == 0
(__extension__..." , 3 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1450 c_flag = 1;
never executed: c_flag = 1;
0
1451 }
never executed: end of block
0
1452 if (k_flag
k_flagDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1453 const char *errstr = -
1454 ((void *)0)-
1455 ;-
1456-
1457 pidstr = getenv("SSH_AGENT_PID");-
1458 if (pidstr ==
pidstr == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1459 ((void *)0)
pidstr == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1460 ) {-
1461 fprintf(-
1462 stderr-
1463 , "%s not set, cannot kill agent\n",-
1464 "SSH_AGENT_PID");-
1465 exit(1);
never executed: exit(1);
0
1466 }-
1467 pid = (int)strtonum(pidstr, 2, 0x7fffffff, &errstr);-
1468 if (errstr
errstrDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1469 fprintf(-
1470 stderr-
1471 ,-
1472 "%s=\"%s\", which is not a good PID: %s\n",-
1473 "SSH_AGENT_PID", pidstr, errstr);-
1474 exit(1);
never executed: exit(1);
0
1475 }-
1476 if (kill(pid,
kill(pid, 15 ) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1477 15
kill(pid, 15 ) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1478 ) == -1
kill(pid, 15 ) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1479 perror("kill");-
1480 exit(1);
never executed: exit(1);
0
1481 }-
1482 format = c_flag
c_flagDescription
TRUEnever evaluated
FALSEnever evaluated
? "unsetenv %s;\n" : "unset %s;\n";
0
1483 printf(format, "SSH_AUTH_SOCK");-
1484 printf(format, "SSH_AGENT_PID");-
1485 printf("echo Agent pid %ld killed;\n", (long)pid);-
1486 exit(0);
never executed: exit(0);
0
1487 }-
1488-
1489-
1490-
1491-
1492-
1493-
1494-
1495 if (rlim.rlim_cur < (3+1+1+1+4)
rlim.rlim_cur < (3+1+1+1+4)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1496 fatal("%s: file descriptior rlimit %lld too low (minimum %u)",
never executed: fatal("%s: file descriptior rlimit %lld too low (minimum %u)", __progname, (long long)rlim.rlim_cur, (3+1+1+1+4));
0
1497 __progname, (long long)rlim.rlim_cur, (3+1+1+1+4));
never executed: fatal("%s: file descriptior rlimit %lld too low (minimum %u)", __progname, (long long)rlim.rlim_cur, (3+1+1+1+4));
0
1498 maxfds = rlim.rlim_cur - (3+1+1+1+4);-
1499-
1500 parent_pid = getpid();-
1501-
1502 if (agentsocket ==
agentsocket == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1503 ((void *)0)
agentsocket == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1504 ) {-
1505-
1506 mktemp_proto(socket_dir, sizeof(socket_dir));-
1507 if (mkdtemp(socket_dir) ==
mkdtemp(socket...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1508 ((void *)0)
mkdtemp(socket...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1509 ) {-
1510 perror("mkdtemp: private socket dir");-
1511 exit(1);
never executed: exit(1);
0
1512 }-
1513 snprintf(socket_name, sizeof socket_name, "%s/agent.%ld", socket_dir,-
1514 (long)parent_pid);-
1515 }
never executed: end of block
else {
0
1516-
1517 socket_dir[0] = '\0';-
1518 strlcpy(socket_name, agentsocket, sizeof socket_name);-
1519 }
never executed: end of block
0
1520-
1521-
1522-
1523-
1524-
1525 prev_mask = umask(0177);-
1526 sock = unix_listener(socket_name, 128, 0);-
1527 if (sock < 0
sock < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1528-
1529 *socket_name = '\0';-
1530 cleanup_exit(1);-
1531 }
never executed: end of block
0
1532 umask(prev_mask);-
1533-
1534-
1535-
1536-
1537-
1538 if (D_flag
D_flagDescription
TRUEnever evaluated
FALSEnever evaluated
|| d_flag
d_flagDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1539 log_init(__progname,-
1540 d_flag ? SYSLOG_LEVEL_DEBUG3 : SYSLOG_LEVEL_INFO,-
1541 SYSLOG_FACILITY_AUTH, 1);-
1542 format = c_flag
c_flagDescription
TRUEnever evaluated
FALSEnever evaluated
? "setenv %s %s;\n" : "%s=%s; export %s;\n";
0
1543 printf(format, "SSH_AUTH_SOCK", socket_name,-
1544 "SSH_AUTH_SOCK");-
1545 printf("echo Agent pid %ld;\n", (long)parent_pid);-
1546 fflush(-
1547 stdout-
1548 );-
1549 goto
never executed: goto skip;
skip;
never executed: goto skip;
0
1550 }-
1551 pid = fork();-
1552 if (pid == -1
pid == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1553 perror("fork");-
1554 cleanup_exit(1);-
1555 }
never executed: end of block
0
1556 if (pid != 0
pid != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1557 close(sock);-
1558 snprintf(pidstrbuf, sizeof pidstrbuf, "%ld", (long)pid);-
1559 if (ac == 0
ac == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1560 format = c_flag
c_flagDescription
TRUEnever evaluated
FALSEnever evaluated
? "setenv %s %s;\n" : "%s=%s; export %s;\n";
0
1561 printf(format, "SSH_AUTH_SOCK", socket_name,-
1562 "SSH_AUTH_SOCK");-
1563 printf(format, "SSH_AGENT_PID", pidstrbuf,-
1564 "SSH_AGENT_PID");-
1565 printf("echo Agent pid %ld;\n", (long)pid);-
1566 exit(0);
never executed: exit(0);
0
1567 }-
1568 if (setenv("SSH_AUTH_SOCK", socket_name, 1) == -1
setenv("SSH_AU...name, 1) == -1Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1569 setenv("SSH_AGENT_PID", pidstrbuf, 1) == -1
setenv("SSH_AG...rbuf, 1) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1570 perror("setenv");-
1571 exit(1);
never executed: exit(1);
0
1572 }-
1573 execvp(av[0], av);-
1574 perror(av[0]);-
1575 exit(1);
never executed: exit(1);
0
1576 }-
1577-
1578 log_init(__progname, SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_AUTH, 0);-
1579-
1580 if (setsid() == -1
setsid() == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1581 error("setsid: %s", strerror(-
1582 (*__errno_location ())-
1583 ));-
1584 cleanup_exit(1);-
1585 }
never executed: end of block
0
1586-
1587 (void)chdir("/");-
1588 if ((
(fd = open( "/...02 , 0)) != -1Description
TRUEnever evaluated
FALSEnever evaluated
fd = open(
(fd = open( "/...02 , 0)) != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1589 "/dev/null"
(fd = open( "/...02 , 0)) != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1590 ,
(fd = open( "/...02 , 0)) != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1591 02
(fd = open( "/...02 , 0)) != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1592 , 0)) != -1
(fd = open( "/...02 , 0)) != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1593-
1594 (void)dup2(fd, -
1595 0-
1596 );-
1597 (void)dup2(fd, -
1598 1-
1599 );-
1600 (void)dup2(fd, -
1601 2-
1602 );-
1603 if (fd > 2
fd > 2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1604 close(fd);
never executed: close(fd);
0
1605 }
never executed: end of block
0
1606-
1607-
1608-
1609 rlim.rlim_cur = rlim.rlim_max = 0;-
1610 if (setrlimit(
setrlimit( RLI...E , &rlim) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1611 RLIMIT_CORE
setrlimit( RLI...E , &rlim) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1612 , &rlim) < 0
setrlimit( RLI...E , &rlim) < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1613 error("setrlimit RLIMIT_CORE: %s", strerror(-
1614 (*__errno_location ())-
1615 ));-
1616 cleanup_exit(1);-
1617 }
never executed: end of block
0
1618-
1619-
1620skip:
code before this statement never executed: skip:
0
1621-
1622 cleanup_pid = getpid();-
1623-
1624-
1625 pkcs11_init(0);-
1626-
1627 new_socket(AUTH_SOCKET, sock);-
1628 if (ac > 0
ac > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1629 parent_alive_interval = 10;
never executed: parent_alive_interval = 10;
0
1630 idtab_init();-
1631 mysignal(-
163213-
1633,-
1634((__sighandler_t) 1)-
1635);-
1636 mysignal(-
16372-
1638,(d_flag | D_flag) ? cleanup_handler : -
1639((__sighandler_t) 1)-
1640);-
1641 mysignal(-
16421-
1643,cleanup_handler);-
1644 mysignal(-
164515-
1646,cleanup_handler);-
1647-
1648 if (pledge("stdio rpath cpath unix id proc exec",
pledge("stdio ...d *)0) ) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1649 ((void *)0)
pledge("stdio ...d *)0) ) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
1650 ) == -1
pledge("stdio ...d *)0) ) == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1651 fatal("%s: pledge: %s", __progname, strerror(
never executed: fatal("%s: pledge: %s", __progname, strerror( (*__errno_location ()) ));
0
1652 (*__errno_location ())
never executed: fatal("%s: pledge: %s", __progname, strerror( (*__errno_location ()) ));
0
1653 ));
never executed: fatal("%s: pledge: %s", __progname, strerror( (*__errno_location ()) ));
0
1654 platform_pledge_agent();-
1655-
1656 while (1) {-
1657 prepare_poll(&pfd, &npfd, &timeout, maxfds);-
1658 result = poll(pfd, npfd, timeout);-
1659 saved_errno = -
1660 (*__errno_location ())-
1661 ;-
1662 if (parent_alive_interval != 0
parent_alive_interval != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1663 check_parent_exists();
never executed: check_parent_exists();
0
1664 (void) reaper();-
1665 if (result < 0
result < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1666 if (saved_errno ==
saved_errno == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
1667 4
saved_errno == 4Description
TRUEnever evaluated
FALSEnever evaluated
0
1668 )-
1669 continue;
never executed: continue;
0
1670 fatal("poll: %s", strerror(saved_errno));-
1671 }
never executed: end of block
else if (result > 0
result > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1672 after_poll(pfd, npfd, maxfds);
never executed: after_poll(pfd, npfd, maxfds);
0
1673 }
never executed: end of block
0
1674-
1675}
never executed: end of block
0
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2