upstream commit taken as below Original Issue link https://android-review.googlesource.com/c/platform/system/core/+/1123485 Commit taken below: 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 https://android.googlesource.com/platform/system/core/+/fbb9535aaea5ae4011f3c3edf4c00b27452f57ec Upstream-Status: Backport(commit fbb9535aaea5ae4011f3c3edf4c00b27452f57ec) Signed-off-by: Nisha Parrakat --- git/system/core/fastboot/fastboot.cpp 2021-05-28 09:24:15.583963227 +0000 +++ git/system/core/fastboot/fastboot.cpp 2021-05-28 09:25:09.948974990 +0000 @@ -869,7 +869,7 @@ 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 {