diff options
author | Julian Andres Klode <jak@debian.org> | 2015-12-07 14:42:25 +0100 |
---|---|---|
committer | Julian Andres Klode <jak@debian.org> | 2015-12-07 14:44:15 +0100 |
commit | 5a97834817dd43b7833881f38f512a9f2fdac8a9 (patch) | |
tree | 84b21bcb17dff140c9d0022d3b71aa7f019f097e /apt-pkg/acquire.cc | |
parent | e23ee4c21c6d8045ab020526aa864a48dc16ddd9 (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.cc | 6 |
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; |