]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
improve gnutls-serv EOL processing
authorAlbrecht Dreß <albrecht.dress@arcor.de>
Sat, 29 Aug 2020 12:33:05 +0000 (14:33 +0200)
committerAlbrecht Dreß <albrecht.dress@arcor.de>
Sat, 29 Aug 2020 12:33:05 +0000 (14:33 +0200)
add option `--crlf` to gnutls-serv to disable replacing a received CRLF
by LF in echo mode (fixes #1073).

Signed-off-by: Albrecht Dreß <albrecht.dress@arcor.de>
src/serv-args.def
src/serv.c

index a584085e26217e77d5013395f1254cf1109aac68..ca61801c1eecf18b6028ba7f0728b63bfebef022 100644 (file)
@@ -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;
index 57304bc9d3bbb7e1c79b02c501c25e990ed35dc1..5198b58c651a1b1b3b7c35b000fc7589f78f1cff 100644 (file)
@@ -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;