From b7f8c5113d17919843d1e121ff5877cf500522c3 Mon Sep 17 00:00:00 2001 From: Zhi Guan Date: Fri, 29 Jul 2022 23:02:02 +0800 Subject: [PATCH] Fix SSL clients logic bug --- src/tls.c | 7 +++++++ tools/tlcp_client.c | 11 ++++++++++- tools/tls12_client.c | 5 +++++ tools/tls13_client.c | 5 +++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/tls.c b/src/tls.c index 02e47559..c43bde29 100644 --- a/src/tls.c +++ b/src/tls.c @@ -1530,6 +1530,12 @@ int tls_record_do_recv(uint8_t *record, size_t *recordlen, int sock) error_print(); return -1; } + if (r == 0) { + perror(""); + error_print(); + return 0; + } + len -= r; } if (!tls_record_type_name(tls_record_type(record))) { @@ -1772,6 +1778,7 @@ int tls_do_recv(TLS_CONNECT *conn) if (ret < 0) error_print(); return ret; } + tls_record_trace(stderr, record, recordlen, 0, 0); if (tls_cbc_decrypt(hmac_ctx, dec_key, seq_num, record, tls_record_data(record), tls_record_data_length(record), diff --git a/tools/tlcp_client.c b/tools/tlcp_client.c index 5a6c52fd..20145b5f 100644 --- a/tools/tlcp_client.c +++ b/tools/tlcp_client.c @@ -84,7 +84,7 @@ int tlcp_client_main(int argc, char *argv[]) int sock; TLS_CTX ctx; TLS_CONNECT conn; - char buf[10] = {0}; + char buf[1024] = {0}; size_t len = sizeof(buf); char send_buf[1024] = {0}; size_t send_len; @@ -202,10 +202,17 @@ bad: } fwrite(buf, 1, len, stdout); fflush(stdout); + + // 应该调整tls_recv 逻辑、API或者其他方式 + if (conn.datalen == 0) { + break; + } } } if (FD_ISSET(STDIN_FILENO, &fds)) { + fprintf(stderr, "recv from stdin\n"); + memset(send_buf, 0, sizeof(send_buf)); if (!fgets(send_buf, sizeof(send_buf), stdin)) { @@ -221,6 +228,8 @@ bad: goto end; } } + + fprintf(stderr, "end of this round\n"); } diff --git a/tools/tls12_client.c b/tools/tls12_client.c index 12cec233..ddebe89f 100644 --- a/tools/tls12_client.c +++ b/tools/tls12_client.c @@ -203,6 +203,11 @@ bad: } fwrite(buf, 1, len, stdout); fflush(stdout); + + // 应该调整tls_recv 逻辑、API或者其他方式 + if (conn.datalen == 0) { + break; + } } } diff --git a/tools/tls13_client.c b/tools/tls13_client.c index 7add727b..ae1b0e77 100644 --- a/tools/tls13_client.c +++ b/tools/tls13_client.c @@ -202,6 +202,11 @@ bad: } fwrite(buf, 1, len, stdout); fflush(stdout); + + // 应该调整tls_recv 逻辑、API或者其他方式 + if (conn.datalen == 0) { + break; + } } }