summaryrefslogtreecommitdiffstats
path: root/StdLib/EfiSocketLib
diff options
context:
space:
mode:
authorlpleahy <lpleahy@6f19259b-4bc3-4df7-8a09-765794883524>2012-03-05 19:05:47 +0000
committerlpleahy <lpleahy@6f19259b-4bc3-4df7-8a09-765794883524>2012-03-05 19:05:47 +0000
commitfcb6f89d0176c3fa28a20cf3d958ee91f9c18799 (patch)
tree18848335adaab956ed8230057abb28802084639f /StdLib/EfiSocketLib
parent50b43b1506f927f94f7e655e6f2c2a27413f8914 (diff)
downloadedk2-fcb6f89d0176c3fa28a20cf3d958ee91f9c18799.tar.gz
edk2-fcb6f89d0176c3fa28a20cf3d958ee91f9c18799.tar.bz2
edk2-fcb6f89d0176c3fa28a20cf3d958ee91f9c18799.zip
Fix read issue detected by the following Python program. The issue was that the caller's buffer pointer was not being advanced between segments of the read data.
Signed-off-by: lpleahy ----- UnbufferedRead.py ----- import httplib conn = httplib.HTTPConnection("10.241.97.30") conn.request('GET', '/') resp = conn.getresponse(buffering=True) if resp.status != 200: print "status:", resp.status print "aborting" sys.exit(1) while True: chunk = resp.read() if not chunk: break print chunk git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13077 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'StdLib/EfiSocketLib')
-rw-r--r--StdLib/EfiSocketLib/Tcp4.c5
-rw-r--r--StdLib/EfiSocketLib/Tcp6.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/StdLib/EfiSocketLib/Tcp4.c b/StdLib/EfiSocketLib/Tcp4.c
index 32c7a394c4..8044d807c7 100644
--- a/StdLib/EfiSocketLib/Tcp4.c
+++ b/StdLib/EfiSocketLib/Tcp4.c
@@ -1572,6 +1572,11 @@ EslTcp4Receive (
CopyMem ( pBuffer, pPacket->pBuffer, DataLength );
//
+ // Set the next buffer address
+ //
+ pBuffer += DataLength;
+
+ //
// Determine if the data is being read
//
if ( *pbConsumePacket ) {
diff --git a/StdLib/EfiSocketLib/Tcp6.c b/StdLib/EfiSocketLib/Tcp6.c
index 6f2cf75779..b070aaa724 100644
--- a/StdLib/EfiSocketLib/Tcp6.c
+++ b/StdLib/EfiSocketLib/Tcp6.c
@@ -1636,6 +1636,11 @@ EslTcp6Receive (
CopyMem ( pBuffer, pPacket->pBuffer, DataLength );
//
+ // Set the next buffer address
+ //
+ pBuffer += DataLength;
+
+ //
// Determine if the data is being read
//
if ( *pbConsumePacket ) {