From: Michael Gernoth Date: Mon, 12 May 2008 13:32:34 +0000 (+0200) Subject: translate 0x0a to 0x0d 0x0a in SOL X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/amt/commitdiff_plain/bdb412f7ec16bbc93e76506291db9d58283628e0?ds=inline translate 0x0a to 0x0d 0x0a in SOL --- diff --git a/redir.c b/redir.c index 9731715..9c72bf7 100644 --- a/redir.c +++ b/redir.c @@ -236,13 +236,27 @@ int redir_sol_send(struct redir *r, unsigned char *buf, int blen) { int len = 10+blen; int rc; - unsigned char *request = malloc(len); + int i,j; + unsigned char *request; + + for (i = 0; i < blen; i++) { + if (buf[i] == 0x0a) + len++; + } + + request = malloc(len); memset(request, 0, len); request[0] = SOL_DATA_TO_HOST; - request[8] = blen & 0xff; - request[9] = blen >> 8; - memcpy(request + 10, buf, blen); + request[8] = (len-10) & 0xff; + request[9] = (len-10) >> 8; + for (i=0, j=0; i < blen; i++,j++) { + if (buf[i] == 0x0a) { + request[j + 10] = 0x0d; + j++; + } + request[j + 10] = buf[i]; + } rc = redir_write(r, request, len); free(request); return rc;