summaryrefslogtreecommitdiff
path: root/apt-pkg/acquire.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2015-12-07 14:42:25 +0100
committerJulian Andres Klode <jak@debian.org>2015-12-07 14:44:15 +0100
commit5a97834817dd43b7833881f38f512a9f2fdac8a9 (patch)
tree84b21bcb17dff140c9d0022d3b71aa7f019f097e /apt-pkg/acquire.cc
parente23ee4c21c6d8045ab020526aa864a48dc16ddd9 (diff)
Avoid overflow when summing up file sizes
We need to pass 0llu instead of 0 as the init value, otherwise std::accumulate will calculate with ints. Reported-by: Raphaƫl Hertzog
Diffstat (limited to 'apt-pkg/acquire.cc')
-rw-r--r--apt-pkg/acquire.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc
index b229a61b6..cb8741603 100644
--- a/apt-pkg/acquire.cc
+++ b/apt-pkg/acquire.cc
@@ -730,7 +730,7 @@ bool pkgAcquire::Clean(string Dir)
/* This is the total number of bytes needed */
APT_PURE unsigned long long pkgAcquire::TotalNeeded()
{
- return std::accumulate(ItemsBegin(), ItemsEnd(), 0,
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0ull,
[](unsigned long long const T, Item const * const I) {
return T + I->FileSize;
});
@@ -741,7 +741,7 @@ APT_PURE unsigned long long pkgAcquire::TotalNeeded()
/* This is the number of bytes that is not local */
APT_PURE unsigned long long pkgAcquire::FetchNeeded()
{
- return std::accumulate(ItemsBegin(), ItemsEnd(), 0,
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0llu,
[](unsigned long long const T, Item const * const I) {
if (I->Local == false)
return T + I->FileSize;
@@ -755,7 +755,7 @@ APT_PURE unsigned long long pkgAcquire::FetchNeeded()
/* This is the number of bytes that is not local */
APT_PURE unsigned long long pkgAcquire::PartialPresent()
{
- return std::accumulate(ItemsBegin(), ItemsEnd(), 0,
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0llu,
[](unsigned long long const T, Item const * const I) {
if (I->Local == false)
return T + I->PartialSize;