summaryrefslogtreecommitdiff
path: root/fastboot/fastboot.cpp
diff options
context:
space:
mode:
authorTom Cherry <tomcherry@google.com>2019-09-17 13:34:04 -0700
committerTom Cherry <tomcherry@google.com>2019-09-17 13:43:56 -0700
commitfbb9535aaea5ae4011f3c3edf4c00b27452f57ec (patch)
treeb2f2e30ea509c6b1fb35f55b688230688da4b57d /fastboot/fastboot.cpp
parentcf4845b153edf7f3da9ab529b0d74d11a2c24c3f (diff)
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
Diffstat (limited to 'fastboot/fastboot.cpp')
-rw-r--r--fastboot/fastboot.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp
index 4737ae4d6..a7fc628c4 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 {