Breakpoint 1, keyless_response_recv (s=0xa22f30) at keyless.c:317
317 k = &s->ssl_keyless;
(gdb)
318 rbuf = k->response.rbuf;
(gdb)
327 if (rbuf == NULL) {
(gdb)
328 rbuf = BUF_MEM_new();
(gdb)
329 if (rbuf == NULL) {
(gdb)
333 if (!BUF_MEM_grow(rbuf, KEY_SERVER_BUF_LENGTH)) {
(gdb)
338 k->response.rbuf = rbuf;
(gdb)
341 n = SSL_read(k->sslfd, rbuf->data + k->response.recv_n, rbuf->length - k->response.recv_n);
(gdb) p k->sslfd
$1 = (SSL *) 0xb01650
(gdb) p rebuf->data
No symbol "rebuf" in current context.
(gdb) p s->ssl_keyless
$2 = {enable = 1, use = 1, state = 4, error = 0, fd = 10, shutdown = 0,
md_buf = "\266\220Γ}\023\337b\273\224'Q\373B\374\267\371\370\323\333\023\275\027\214z\361\362tPk^ƨ\356g\214ƛ\355\224\037\234ue\223\036\330\371\271\373L\263ڱ\300\376f\331\065\265~\316kg",
p = 0xa5d9eb "ng1\020\060\016\006\003U\004\a\f\aBeijing1\021\060\017\006\003U\004\n\f\bKingsoft1\016\060\f\006\003U\004\v\f\\034\060\032\006\003U\004\003\f\023keyserver.com0\036\027\r161222085337Z\027\r170121085337Z0p1\v0\t\006\003U\004\006\023\002CN1\020\060\016\006\003U\004\b\f\aBeijing1\020\060\016\006\003U\004\a\f\aBeijing1\021\060\017\006\003U\004\n\f\bKingsoft1\016\060\f\006\003U\004\v\f\005"..., n = 69, data = 0x0, request = {wbuf = 0xa8c5f0, sent_n = 102}, response = {rbuf = 0xb01480, recv_n = 0, header_ok = 0, length_in_header = 0,
response_opcode = 0 '\000', payload = 0x0, padding = 0x0}, sslfd = 0xb01650}
(gdb) p s->ssl_keyless->sslfd
$3 = (SSL *) 0xb01650
(gdb) p k->response.recv_n
$4 = 0
(gdb) n
343 if (n == 0)
(gdb) p n
$5 = 1027
(gdb) n
351 else if (n == -1) {
(gdb) p n
$6 = 1027
(gdb) n
365 k->response.recv_n += n;
(gdb) p k->response.recv_n
$7 = 0
(gdb) n
367 if (k->response.header_ok == 0) {
(gdb) p k->response.header_ok
$8 = 0
(gdb) n
368 if (k->response.recv_n < sizeof(struct keyless_header)) {
(gdb) n
373 header = (struct keyless_header*)rbuf->data;
(gdb) n
375 k->response.length_in_header = ntohs(header->length);
(gdb) n
376 if (k->response.length_in_header == 0) {
(gdb)
380 if ((k->response.length_in_header + sizeof(struct keyless_header)) > KEY_SERVER_BUF_LENGTH) {
(gdb)
386 k->response.header_ok = 1;
(gdb)
389 total_length = sizeof(struct keyless_header) + k->response.length_in_header;
(gdb) p total_length
$9 = 10629736
(gdb) n
390 if (k->response.recv_n < total_length) {
(gdb) p k->response.recv_n
$10 = 1027
(gdb) n
393 } else if (k->response.recv_n > total_length) {
(gdb) n
398 p = rbuf->data + sizeof(struct keyless_header);
(gdb) p p
$11 = 0x379383e680 "S\213\037\276\t"
(gdb) p *p
$12 = 83 'S'
(gdb) n
399 while ((p - rbuf->data) < k->response.recv_n) {
(gdb) n
400 length = ntohs(*(uint16_t*)(p + 1));
(gdb) p length
$13 = 285
(gdb) n
401 switch (p[0]) {
(gdb) n
403 k->response.response_opcode = *(p + 3);
(gdb) p p[0]
$14 = 17 '\021'
(gdb) n
404 break;
(gdb) n
470 p += length + 3;
(gdb) n
399 while ((p - rbuf->data) < k->response.recv_n) {
(gdb) n
400 length = ntohs(*(uint16_t*)(p + 1));
(gdb)
401 switch (p[0]) {
(gdb)
407 if (length == 1) {
(gdb)
408 switch(*(p+3)) {
(gdb) p p[0]
$15 = 18 '\022'
(gdb)
$16 = 18 '\022'
(gdb)
$17 = 18 '\022'
(gdb) n
413 err = KEYLESS_KEY_NOT_FOUND;
(gdb) n
414 break;
(gdb) n
481 k->error = err;
(gdb) n
482 return -1;
(gdb) n
483 }
(gdb) n
ssl3_send_server_key_exchange_keyless (s=0xa22f30) at s3_srvr.c:2565
2565 system("echo 111111111111111111111 >> /home/abc");
(gdb) n
Detaching after fork from child process 21392.
2566 if (s->ssl_keyless.error == KEYLESS_ECONN) {
(gdb) n
2570 } else if (s->ssl_keyless.error == KEYLESS_EAGAIN) {
(gdb) n
2573 } else if (s->ssl_keyless.error != 0) {
(gdb) n
2574 al = SSL_AD_HANDSHAKE_FAILURE;
(gdb) n
2575 SSLerr(SSL_F_KEYLESS_SSL3_SEND_SERVER_KEY_EXCHANGE,
(gdb) n
2577 goto k_err;
(gdb) n
2613 s->ssl_keyless.error = KEYLESS_ERROR;
(gdb) n
2614 system("echo 7777777777777777777777 >> /home/abc");
(gdb) n
Detaching after fork from child process 21463.
2615 s->ssl_keyless.use--;
(gdb)
2616 s->ssl_keyless.state = KEYLESS_STATE_INIT;
(gdb)
2617 keyless_clean(s);
(gdb)
2619 system("echo 88888888888888888888888888 >> /home/abc");
(gdb) n
Detaching after fork from child process 21474.
2620 ssl3_send_alert(s, SSL3_AL_FATAL, al);
(gdb) n
2622 system("echo 000000000000000000000000000 >> /home/abc");
(gdb) n
Detaching after fork from child process 21485.
2623 return (-1);
(gdb) n
2624 }
(gdb) n
ssl3_accept (s=0xa22f30) at s3_srvr.c:502
502 if (ret <= 0)
(gdb) n
503 goto end;
(gdb) n
905 s->in_handshake--;
(gdb) n
906 if (cb != NULL)
(gdb) n
907 cb(s, SSL_CB_ACCEPT_EXIT, ret);
(gdb) n
908 return (ret);
(gdb) n
909 }
(gdb) n
SSL_do_handshake (s=0xa22f30) at ssl_lib.c:2909
2909 return (ret);
(gdb) n
2910 }
(gdb) n
ngx_http_ssl_keyless_handler (ev=0x7f0f7d67a1b0) at src/http/modules/ngx_http_ssl_keyless_module.c:872
872 sslerr = SSL_get_error(req_conn->ssl->connection, n);
(gdb) n
874 if (n == 1 || sslerr == SSL_ERROR_KEYLESS_OK || sslerr == SSL_ERROR_WANT_KEYLESS_CONN) {
(gdb) n
894 if (sslerr == SSL_ERROR_WANT_KEYLESS_READ) {
(gdb) n
906 if (sslerr == SSL_ERROR_WANT_KEYLESS_WRITE) {
(gdb) n
918 if (sslerr == SSL_ERROR_KEYLESS) {
(gdb) n
925 err = (sslerr == SSL_ERROR_SYSCALL) ? ngx_errno : 0;
(gdb) n
927 req_conn->ssl->no_wait_shutdown = 1;
(gdb) n
928 req_conn->ssl->no_send_shutdown = 1;
(gdb) n
929 req_conn->read->eof = 1;
(gdb) n
931 if (sslerr == SSL_ERROR_ZERO_RETURN || ERR_peek_error() == 0) {
(gdb) n
938 req_conn->read->error = 1;
(gdb) n
940 ngx_log_error(NGX_LOG_ERR, req_conn->log, 0, "SSL_do_handshake() failed");
(gdb) n
941 ngx_http_ssl_handshake_handler(req_conn);
(gdb) n
944 }
(gdb) n
ngx_epoll_process_events (cycle=0xa23c90, timer=297405, flags=1) at src/event/modules/ngx_epoll_module.c:826
826 wev = c->write;
(gdb) n
828 if ((revents & EPOLLOUT) && wev->active) {
(gdb) n
830 if (c->fd == -1 || wev->instance != instance) {
(gdb) n
842 wev->ready = 1;
(gdb) n
844 if (flags & NGX_POST_EVENTS) {
(gdb) n
848 wev->handler(wev);
(gdb) n
753 for (i = 0; i < events; i++) {
(gdb) n
853 return NGX_OK;
(gdb) n
854 }
(gdb) n
ngx_process_events_and_timers (cycle=0xa23c90) at src/event/ngx_event.c:263
263 delta = ngx_current_msec - delta;
(gdb) n
265 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
(gdb) n
268 ngx_event_process_posted(cycle, &ngx_posted_accept_events);
(gdb) n
270 if (ngx_accept_mutex_held) {
(gdb) n
274 if (delta) {
(gdb) n
275 ngx_event_expire_timers();
(gdb) n
278 ngx_event_process_posted(cycle, &ngx_posted_events);
(gdb) n
279 }
(gdb) n
ngx_worker_process_cycle (cycle=0xa23c90, data=0x0) at src/os/unix/ngx_process_cycle.c:864
864 if (ngx_terminate) {
(gdb) n
870 if (ngx_quit) {
(gdb) n
886 if (ngx_reopen) {
(gdb) n
891 }
(gdb) n
836 if (ngx_exiting) {
(gdb) n
860 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
(gdb) n
862 ngx_process_events_and_timers(cycle);
(gdb) n
864 if (ngx_terminate) {
(gdb) n
870 if (ngx_quit) {
(gdb) n
886 if (ngx_reopen) {
(gdb) n
891 }
(gdb)
836 if (ngx_exiting) {
(gdb)
860 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
(gdb)
862 ngx_process_events_and_timers(cycle);
(gdb)
Detaching after fork from child process 21486.
Detaching after fork from child process 21487.
Detaching after fork from child process 21488.
Detaching after fork from child process 21489.
Detaching after fork from child process 21490.
Detaching after fork from child process 21491.
Detaching after fork from child process 21492.
[kssl_server] SSL error: error:00000001:lib(0):func(0):reason(1)
[kssl_server] SSL error: error:00000005:lib(0):func(0):DH lib
864 if (ngx_terminate) {
(gdb)
870 if (ngx_quit) {
gdb调试nginx openssl keyless recv节选
于 2022-04-30 23:52:50 首次发布