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