summaryrefslogtreecommitdiff
path: root/libsparse/sparse.cpp
diff options
context:
space:
mode:
authorHyeongseok Kim <hyeongseok@gmail.com>2020-08-10 12:11:57 +0900
committerHyeongseok Kim <hyeongseok@gmail.com>2020-08-11 08:34:28 +0900
commite8d02c50d76e278f91455bd90e1db2ae79eac035 (patch)
treee768a72f0edf6caf3055cd9d7fcb1ef4c032cf1e /libsparse/sparse.cpp
parent52c8422ea19b5719f8128b85fb01d985bd415c46 (diff)
libsparse: Fix overflow of merged sparse chunk length
Merging sparse chunk can make sparse map block bigger than 4GiB, that can't be covered by unsigned integer type. Fix this by changing unsigned int to uint64_t type. Test: sparse build Bug: 162808120 Change-Id: Id4d3f88f9d531c25c3937c99b2c81efb915605ee Signed-off-by: Hyeongseok Kim <hyeongseok@gmail.com> Cc: hyeongseok.kim <hyeongseok.kim@lge.com>
Diffstat (limited to 'libsparse/sparse.cpp')
-rw-r--r--libsparse/sparse.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/libsparse/sparse.cpp b/libsparse/sparse.cpp
index 8622b4c39..396e7eb0c 100644
--- a/libsparse/sparse.cpp
+++ b/libsparse/sparse.cpp
@@ -50,21 +50,21 @@ void sparse_file_destroy(struct sparse_file* s) {
free(s);
}
-int sparse_file_add_data(struct sparse_file* s, void* data, unsigned int len, unsigned int block) {
+int sparse_file_add_data(struct sparse_file* s, void* data, uint64_t len, unsigned int block) {
return backed_block_add_data(s->backed_block_list, data, len, block);
}
-int sparse_file_add_fill(struct sparse_file* s, uint32_t fill_val, unsigned int len,
+int sparse_file_add_fill(struct sparse_file* s, uint32_t fill_val, uint64_t len,
unsigned int block) {
return backed_block_add_fill(s->backed_block_list, fill_val, len, block);
}
int sparse_file_add_file(struct sparse_file* s, const char* filename, int64_t file_offset,
- unsigned int len, unsigned int block) {
+ uint64_t len, unsigned int block) {
return backed_block_add_file(s->backed_block_list, filename, file_offset, len, block);
}
-int sparse_file_add_fd(struct sparse_file* s, int fd, int64_t file_offset, unsigned int len,
+int sparse_file_add_fd(struct sparse_file* s, int fd, int64_t file_offset, uint64_t len,
unsigned int block) {
return backed_block_add_fd(s->backed_block_list, fd, file_offset, len, block);
}