From: Tsuda Kageyu <tsuda.kageyu@gmail.com>
Date: Fri, 28 Oct 2016 06:25:50 +0000 (+0900)
Subject: Prevent overflows, just in case.
X-Git-Tag: v1.12-beta-1~134
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=005441faaa373f93f30adede374aa7a7c6c7476f;p=taglib

Prevent overflows, just in case.
---

diff --git a/taglib/riff/rifffile.cpp b/taglib/riff/rifffile.cpp
index 7ac2c034..f874f7ad 100644
--- a/taglib/riff/rifffile.cpp
+++ b/taglib/riff/rifffile.cpp
@@ -161,19 +161,19 @@ void RIFF::File::setChunkData(unsigned int i, const ByteVector &data)
   std::vector<Chunk>::iterator it = d->chunks.begin();
   std::advance(it, i);
 
-  const int originalSize = it->size + it->padding;
+  const long long originalSize = static_cast<long long>(it->size) + it->padding;
 
   writeChunk(it->name, data, it->offset - 8, it->size + it->padding + 8);
 
   it->size    = data.size();
-  it->padding = data.size() % 1;
+  it->padding = data.size() % 2;
 
-  const int diff = it->size + it->padding - originalSize;
+  const long long diff = static_cast<long long>(it->size) + it->padding - originalSize;
 
   // Now update the internal offsets
 
   for(++it; it != d->chunks.end(); ++it)
-    it->offset += diff;
+    it->offset += static_cast<int>(diff);
 
   // Update the global size.