From 841dd859360ff07d705e869d2a402f6b181a14f9 Mon Sep 17 00:00:00 2001
From: Arthur de Jong <arthur@arthurdejong.org>
Date: Sun, 1 Sep 2013 09:47:18 +0000
Subject: [PATCH 1/3] fix buffer overflow on interrupted read (thanks John
Sullivan) (07a8170 from 0.9)
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd-0.8@2029 ef36b2f9-881f-0410-afb5-c4e39611909c
---
AUTHORS | 1 +
common/tio.c | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/AUTHORS b/AUTHORS
index 5debe5f7c2a059e67f47098df8647c66eab85c13..65ee0789cb8c300c59f7b00b75e80b5b51d96ac9 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -119,3 +119,4 @@ Maxim Vetrov <muxas@mail.ru>
Matthew L. Dailey <matthew.l.dailey@dartmouth.edu>
Chris Hiestand <chiestand@salk.edu>
Jon Severinsson <jon@severinsson.net>
+John Sullivan <jsrhbz@kanargh.force9.co.uk>
diff --git a/common/tio.c b/common/tio.c
index 4456198fe84ea72966edb06700c0fff751dd3451..9aef80ca91faedad8f75e09b9070d22ed4a0878d 100644
--- a/common/tio.c
+++ b/common/tio.c
@@ -283,8 +283,8 @@ int tio_read(TFILE *fp, void *buf, size_t count)
}
else if ((rv<0)&&(errno!=EINTR)&&(errno!=EAGAIN))
return -1; /* something went wrong with the read */
- /* skip the read part in the buffer */
- fp->readbuffer.len=rv;
+ else if (rv>0)
+ fp->readbuffer.len=rv; /* skip the read part in the buffer */
#ifdef DEBUG_TIO_STATS
fp->bytesread+=rv;
#endif /* DEBUG_TIO_STATS */
--
1.8.3.1