74c7807af1
sparse_file_len is not actually infallible; on Windows it's pretty easy to make it fail by embedding large files in the stream. fastboot didn't handle this anywhere, leading to bad sparse images when libsparse runs out of address space. Bug: 273933042 Bug: 268872725 Test: fastboot flashall on Windows Change-Id: Ie68aed2f1970e820350d9f97aa89a6c0242229b8
40 lines
1.2 KiB
C++
40 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <inttypes.h>
|
|
#include <stdlib.h>
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <android-base/unique_fd.h>
|
|
#include <bootimg.h>
|
|
#include <liblp/liblp.h>
|
|
#include <sparse/sparse.h>
|
|
|
|
using SparsePtr = std::unique_ptr<sparse_file, decltype(&sparse_file_destroy)>;
|
|
|
|
/* util stuff */
|
|
double now();
|
|
void set_verbose();
|
|
|
|
// These printf-like functions are implemented in terms of vsnprintf, so they
|
|
// use the same attribute for compile-time format string checking.
|
|
void die(const char* fmt, ...) __attribute__((__noreturn__))
|
|
__attribute__((__format__(__printf__, 1, 2)));
|
|
|
|
void verbose(const char* fmt, ...) __attribute__((__format__(__printf__, 1, 2)));
|
|
|
|
void die(const std::string& str) __attribute__((__noreturn__));
|
|
|
|
bool should_flash_in_userspace(const android::fs_mgr::LpMetadata& metadata,
|
|
const std::string& partition_name);
|
|
bool is_sparse_file(android::base::borrowed_fd fd);
|
|
int64_t get_file_size(android::base::borrowed_fd fd);
|
|
std::string fb_fix_numeric_var(std::string var);
|
|
|
|
class ImageSource {
|
|
public:
|
|
virtual ~ImageSource(){};
|
|
virtual bool ReadFile(const std::string& name, std::vector<char>* out) const = 0;
|
|
virtual android::base::unique_fd OpenFile(const std::string& name) const = 0;
|
|
};
|