diff options
author | Matt Zimmerman <matt.zimmerman@canonical.com> | 2005-02-04 03:00:00 +0000 |
---|---|---|
committer | Matt Zimmerman <matt.zimmerman@canonical.com> | 2005-02-04 03:00:00 +0000 |
commit | dc50285d324d83548eae7e87b92d4f82b931fc30 (patch) | |
tree | 71890c7617952f78a18cb97df853e912a9e7e44e | |
parent | 6e6d5c40960ea4509616962c8e5e1a2cc1f133e7 (diff) |
allow SHA1Summation to process a file descriptor until EOF
* Apply patch from Anthony Towns to allow SHA1Summation to process a file
descriptor until EOF, rather than requiring that the length of input be
specified (Closes: #291338)
-rw-r--r-- | apt-pkg/contrib/sha1.cc | 11 | ||||
-rw-r--r-- | debian/changelog | 3 |
2 files changed, 11 insertions, 3 deletions
diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc index a22b4d2b2..d7f606982 100644 --- a/apt-pkg/contrib/sha1.cc +++ b/apt-pkg/contrib/sha1.cc @@ -343,11 +343,16 @@ bool SHA1Summation::AddFD(int Fd,unsigned long Size) { unsigned char Buf[64 * 64]; int Res = 0; - while (Size != 0) + int ToEOF = (Size == 0); + while (Size != 0 || ToEOF); { - Res = read(Fd,Buf,MIN(Size,sizeof(Buf))); - if (Res < 0 || (unsigned) Res != MIN(Size,sizeof(Buf))) + int n = sizeof(Buf); + if (!ToEOF) n = MIN(Size,n); + Res = read(Fd,Buf,n); + if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read return false; + if (ToEOF && Res == 0) // EOF + break; Size -= Res; Add(Buf,Res); } diff --git a/debian/changelog b/debian/changelog index e23460206..bf71480cc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,9 @@ apt (0.6.31) hoary; urgency=low * Remove debugging output from apt.cron.daily (no one noticed?) + * Apply patch from Anthony Towns to allow SHA1Summation to process a file + descriptor until EOF, rather than requiring that the length of input be + specified (Closes: #291338) -- |