1*4882a593SmuzhiyunFrom 6ed1eb8829dee351b54e183bc42c007cb306aaa5 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Zhang Xiao <xiao.zhang@windriver.com>
3*4882a593SmuzhiyunDate: Wed, 11 Jun 2014 14:01:16 +0800
4*4882a593SmuzhiyunSubject: [PATCH] tftp-hpa: bug fix on separated CR and LF
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunIn ascii mode, if the CR and LF was separated into different transfer
7*4882a593Smuzhiyunblocks, LF will be just dropped instead of replacing the previous CR.
8*4882a593SmuzhiyunAdd a checking on the first character to fix it.
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunUpstream-Status: pending
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunSigned-off-by: Zhang Xiao <xiao.zhang@windriver.com>
13*4882a593Smuzhiyun---
14*4882a593Smuzhiyun common/tftpsubs.c | 8 ++++++++
15*4882a593Smuzhiyun 1 file changed, 8 insertions(+)
16*4882a593Smuzhiyun
17*4882a593Smuzhiyundiff --git a/common/tftpsubs.c b/common/tftpsubs.c
18*4882a593Smuzhiyunindex b4d4ffe..b4ea3f2 100644
19*4882a593Smuzhiyun--- a/common/tftpsubs.c
20*4882a593Smuzhiyun+++ b/common/tftpsubs.c
21*4882a593Smuzhiyun@@ -207,6 +207,14 @@ int write_behind(FILE * file, int convert)
22*4882a593Smuzhiyun     p = buf;
23*4882a593Smuzhiyun     ct = count;
24*4882a593Smuzhiyun     count = 0;
25*4882a593Smuzhiyun+
26*4882a593Smuzhiyun+    /* Check the first character together with prevchar */
27*4882a593Smuzhiyun+    c = *p;
28*4882a593Smuzhiyun+    if ((prevchar == '\r') && (c == '\n')) {
29*4882a593Smuzhiyun+        lseek(fileno(file), -1, SEEK_CUR);
30*4882a593Smuzhiyun+        count++;
31*4882a593Smuzhiyun+    }
32*4882a593Smuzhiyun+
33*4882a593Smuzhiyun     while (ct--) {              /* loop over the buffer */
34*4882a593Smuzhiyun         c = *p++;               /* pick up a character */
35*4882a593Smuzhiyun         if (prevchar == '\r') { /* if prev char was cr */
36*4882a593Smuzhiyun--
37*4882a593Smuzhiyun1.8.5.2.233.g932f7e4
38*4882a593Smuzhiyun
39