summaryrefslogtreecommitdiff
path: root/apt-pkg/contrib/fileutl.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2016-02-01 16:25:03 +0100
committerJulian Andres Klode <jak@debian.org>2016-02-01 16:25:03 +0100
commit47fcfff8a50caebe3cd1f2ee19875a2ca8bbeadc (patch)
treeb02d33322b569170674cf4481d9aa994974c887e /apt-pkg/contrib/fileutl.cc
parent5025879e3fdd705bb0607ff8f51a680749c5972a (diff)
simple_buffer::write: Use free() instead of maxsize - size()
We want to check whether the amount of free space is smaller than the requested write size. Checking maxsize - size() is incorrect for bufferstart >= 0, as size() = end - start. Gbp-Dch: ignore
Diffstat (limited to 'apt-pkg/contrib/fileutl.cc')
-rw-r--r--apt-pkg/contrib/fileutl.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index 4347c55ad..004df3fe8 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -968,9 +968,9 @@ struct APT_HIDDEN simple_buffer { /*{{{*/
}
ssize_t write(const void *from, unsigned long long requested_size) APT_MUSTCHECK
{
- if (buffersize_max - size() < requested_size)
- requested_size = buffersize_max - size();
- memcpy(buffer + bufferend, from, requested_size);
+ if (free() < requested_size)
+ requested_size = free();
+ memcpy(getend(), from, requested_size);
bufferend += requested_size;
if (bufferstart == bufferend)
bufferstart = bufferend = 0;