From: Albrecht Dreß Date: Sat, 29 Aug 2020 12:33:05 +0000 (+0200) Subject: improve gnutls-serv EOL processing X-Git-Tag: 3.7.0~19^2~22^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae13377fb15c21705041f6e41cf8a5b9e449edbb;p=thirdparty%2Fgnutls.git improve gnutls-serv EOL processing add option `--crlf` to gnutls-serv to disable replacing a received CRLF by LF in echo mode (fixes #1073). Signed-off-by: Albrecht Dreß --- 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;