[arch-commits] Commit in android-tools/trunk (PKGBUILD fix_sparse_img.patch)

Anatol Pomozov anatolik at archlinux.org
Wed Sep 18 17:36:39 UTC 2019


    Date: Wednesday, September 18, 2019 @ 17:36:39
  Author: anatolik
Revision: 511081

upgpkg: android-tools 29.0.3-2

FS#63370: fix a crash with flashing sparse images

Added:
  android-tools/trunk/fix_sparse_img.patch
Modified:
  android-tools/trunk/PKGBUILD

----------------------+
 PKGBUILD             |    5 ++++-
 fix_sparse_img.patch |   38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-09-18 17:35:28 UTC (rev 511080)
+++ PKGBUILD	2019-09-18 17:36:39 UTC (rev 511081)
@@ -4,7 +4,7 @@
 
 pkgname=android-tools
 pkgver=29.0.3
-pkgrel=1
+pkgrel=2
 tag=platform-tools-$pkgver
 pkgdesc='Android platform tools'
 arch=(x86_64)
@@ -26,6 +26,7 @@
         git+https://boringssl.googlesource.com/boringssl#commit=$_boringssl_commit
         generate_build.rb
         fix_build_core.patch
+        fix_sparse_img.patch
         bash_completion.fastboot)
         # Bash completion file was taken from https://github.com/mbrubeck/android-completion
 sha1sums=('SKIP'
@@ -38,6 +39,7 @@
           'SKIP'
           'afca7974ad8658e52fd028ead12ad0a959d63273'
           'e7f02cd6529dad54b4bdfd35e34b2cb9cb70cdd4'
+          '2b57a4cf8012473c1a4fc6adae16573756272b02'
           '7004dbd0c193668827174880de6f8434de8ceaee')
 
 prepare() {
@@ -45,6 +47,7 @@
 
   cd "$srcdir"/core
   patch -p1 < ../fix_build_core.patch
+  patch -p1 < ../fix_sparse_img.patch # FS#63370
 
   cd "$srcdir"/avb
   sed -i 's|/usr/bin/env python$|/usr/bin/env python2|g' avbtool

Added: fix_sparse_img.patch
===================================================================
--- fix_sparse_img.patch	                        (rev 0)
+++ fix_sparse_img.patch	2019-09-18 17:36:39 UTC (rev 511081)
@@ -0,0 +1,38 @@
+commit fbb9535aaea5ae4011f3c3edf4c00b27452f57ec
+Author: Tom Cherry <tomcherry at google.com>
+Date:   Tue Sep 17 13:34:04 2019 -0700
+
+    fastboot: don't use sparse_file_import_auto() in load_buf_fd()
+    
+    load_buf_fd() attempts to find the size of the file that it is about
+    to load by first calling sparse_file_import_auto() then using
+    sparse_file_len() upon success or falling back to the file size on the
+    filesystem on failure.
+    
+    This is problematic however as sparse_file_import_auto() creates a
+    sparse_file out of the normal file, but does not resparse it, so an
+    assertion fails during the sparse_file_len() call.
+    
+    This is fixed by using sparse_file_import() instead.  This will fail
+    in the case that the file is not sparse and the call to
+    sparse_file_len() will be properly skipped.
+    
+    Bug: 140538105
+    Test: flash blueline factory image with assertions enabled in
+          libsparse/sparse.cpp
+    
+    Change-Id: I0283be33563a3301ce5b09bde41105a20f91086c
+
+diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp
+index 4737ae4d66..a7fc628c43 100644
+--- a/fastboot/fastboot.cpp
++++ b/fastboot/fastboot.cpp
+@@ -874,7 +874,7 @@ static bool load_buf_fd(int fd, struct fastboot_buffer* buf) {
+         return false;
+     }
+ 
+-    if (sparse_file* s = sparse_file_import_auto(fd, false, false)) {
++    if (sparse_file* s = sparse_file_import(fd, false, false)) {
+         buf->image_size = sparse_file_len(s, false, false);
+         sparse_file_destroy(s);
+     } else {


More information about the arch-commits mailing list