diff --git a/libs/androidfw/Android.bp b/libs/androidfw/Android.bp
index 02c85aa..3893041 100644
--- a/libs/androidfw/Android.bp
+++ b/libs/androidfw/Android.bp
@@ -155,6 +155,7 @@
         android: {
             srcs: [
                 "tests/BackupData_test.cpp",
+		"tests/BackupHelpers_test.cpp",
                 "tests/ObbFile_test.cpp",
                 "tests/PosixUtils_test.cpp",
             ],
diff --git a/libs/androidfw/BackupHelpers.cpp b/libs/androidfw/BackupHelpers.cpp
index 8bfe2b6..e80e948 100644
--- a/libs/androidfw/BackupHelpers.cpp
+++ b/libs/androidfw/BackupHelpers.cpp
@@ -479,7 +479,7 @@
 }
 
 int write_tarfile(const String8& packageName, const String8& domain,
-        const String8& rootpath, const String8& filepath, off_t* outSize,
+        const String8& rootpath, const String8& filepath, off64_t* outSize,
         BackupDataWriter* writer)
 {
     // In the output stream everything is stored relative to the root
diff --git a/libs/androidfw/include/androidfw/BackupHelpers.h b/libs/androidfw/include/androidfw/BackupHelpers.h
index 2da247b..a0fa136 100644
--- a/libs/androidfw/include/androidfw/BackupHelpers.h
+++ b/libs/androidfw/include/androidfw/BackupHelpers.h
@@ -137,7 +137,7 @@
         char const* const* files, char const* const *keys, int fileCount);
 
 int write_tarfile(const String8& packageName, const String8& domain,
-        const String8& rootPath, const String8& filePath, off_t* outSize,
+        const String8& rootPath, const String8& filePath, off64_t* outSize,
         BackupDataWriter* outputStream);
 
 class RestoreHelperBase
diff --git a/libs/androidfw/tests/BackupHelpers_test.cpp b/libs/androidfw/tests/BackupHelpers_test.cpp
new file mode 100644
index 0000000..86b7fb3
--- /dev/null
+++ b/libs/androidfw/tests/BackupHelpers_test.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "BackupHelpers_test"
+#include <androidfw/BackupHelpers.h>
+
+#include <gtest/gtest.h>
+
+#include <fcntl.h>
+#include <utils/String8.h>
+#include <android-base/file.h>
+
+namespace android {
+
+class BackupHelpersTest : public testing::Test {
+protected:
+
+    virtual void SetUp() {
+    }
+    virtual void TearDown() {
+    }
+};
+
+TEST_F(BackupHelpersTest, WriteTarFileWithSizeLessThan2GB) {
+  TemporaryFile tf;
+  // Allocate a 1 KB file.
+  off64_t fileSize = 1024;
+  ASSERT_EQ(0, posix_fallocate64(tf.fd, 0, fileSize));
+  off64_t tarSize = 0;
+  int err = write_tarfile(/* packageName */ String8("test-pkg"), /* domain */ String8(""), /* rootpath */ String8(""), /* filePath */ String8(tf.path), /* outSize */ &tarSize, /* writer */ NULL);
+  ASSERT_EQ(err, 0);
+  // Returned tarSize includes 512 B for the header.
+  off64_t expectedTarSize = fileSize + 512;
+  ASSERT_EQ(tarSize, expectedTarSize);
+}
+
+TEST_F(BackupHelpersTest, WriteTarFileWithSizeGreaterThan2GB) {
+  TemporaryFile tf;
+  // Allocate a 2 GB file.
+  off64_t fileSize = 2ll * 1024ll * 1024ll * 1024ll + 512ll;
+  ASSERT_EQ(0, posix_fallocate64(tf.fd, 0, fileSize));
+  off64_t tarSize = 0;
+  int err = write_tarfile(/* packageName */ String8("test-pkg"), /* domain */ String8(""), /* rootpath */ String8(""), /* filePath */ String8(tf.path), /* outSize */ &tarSize, /* writer */ NULL);
+  ASSERT_EQ(err, 0);
+  // Returned tarSize includes 512 B for the header.
+  off64_t expectedTarSize = fileSize + 512;
+  ASSERT_EQ(tarSize, expectedTarSize);
+}
+}
+
