summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-04-21 22:26:54 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-04-21 22:26:54 +0000
commit3a5ee26e7bd1f70dfca1f8f96e3b3613315eae4d (patch)
tree6a5fca95ce93294ff06b53dbdfd4e3a81548cea3
parent40db339cf89f41adf11714db918baa151a4a7d86 (diff)
parent27b55c2640bf9bcff7fb17d4651d6a36f1645760 (diff)
downloadbsdiff-android-mainline-12.0.0_r36.tar.gz
Snap for 7302986 from 27b55c2640bf9bcff7fb17d4651d6a36f1645760 to sc-mainline-releaseandroid-mainline-12.0.0_r4android-mainline-12.0.0_r36android12--mainline-release
Change-Id: I4f2d50b685bd8072433caf0f0cb57eec32cfef07
-rw-r--r--utils.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/utils.cc b/utils.cc
index c3e613e..c82eb98 100644
--- a/utils.cc
+++ b/utils.cc
@@ -7,6 +7,11 @@
namespace bsdiff {
int64_t ParseInt64(const uint8_t* buf) {
+ // BSPatch uses a non-standard encoding of integers.
+ // Highest bit of that integer is used as a sign bit, 1 = negative
+ // and 0 = positive.
+ // Therefore, if the highest bit is set, flip it, then do 2's complement
+ // to get the integer in standard form
int64_t result = buf[7] & 0x7F;
for (int i = 6; i >= 0; i--) {
result <<= 8;