From ae13377fb15c21705041f6e41cf8a5b9e449edbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albrecht=20Dre=C3=9F?= Date: Sat, 29 Aug 2020 14:33:05 +0200 Subject: improve gnutls-serv EOL processing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add option `--crlf` to gnutls-serv to disable replacing a received CRLF by LF in echo mode (fixes #1073). Signed-off-by: Albrecht Dreß --- src/serv-args.def | 6 ++++++ src/serv.c | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/serv-args.def b/src/serv-args.def index a584085e26..ca61801c1e 100644 --- a/src/serv-args.def +++ b/src/serv-args.def @@ -94,6 +94,12 @@ flag = { doc = ""; }; +flag = { + name = crlf; + descrip = "Do not replace CRLF by LF in Echo server mode"; + doc = ""; +}; + flag = { name = udp; value = u; diff --git a/src/serv.c b/src/serv.c index 57304bc9d3..5198b58c65 100644 --- a/src/serv.c +++ b/src/serv.c @@ -55,6 +55,7 @@ /* global stuff */ static int generate = 0; static int http = 0; +static int strip_crlf = 1; static int x509ctype; static int debug = 0; @@ -1058,7 +1059,8 @@ get_response(gnutls_session_t session, char *request, *response = peer_print_data(session, response_length); } else { int ret; - strip(request); + if (strip_crlf != 0) + strip(request); fprintf(stderr, "received cmd: %s\n", request); ret = check_command(session, request, disable_client_cert); @@ -1838,9 +1840,11 @@ static void cmd_parser(int argc, char **argv) noticket = HAVE_OPT(NOTICKET); earlydata = HAVE_OPT(EARLYDATA); - if (HAVE_OPT(ECHO)) + if (HAVE_OPT(ECHO)) { http = 0; - else + if (HAVE_OPT(CRLF)) + strip_crlf = 0; + } else http = 1; record_max_size = OPT_VALUE_RECORDSIZE; -- cgit v1.2.1