Allow payload_metadata to take raw pointers with size
This way, callers of payload_metadata don't have to store their data in
std::vector. This makes parsing a `mmap()`ed payload file possible.
While we don't need the ability to parse an mmap()ed payload on device,
it is really handy for parsing payload from host-side tooling. In which
case the entire payload will be available on disk anyway, and a
streaming parse will complicate code a lot.
Test: treehugger
Change-Id: Icfbd8e849093c8f389ea802864680ab214bdd721
diff --git a/payload_consumer/payload_metadata.h b/payload_consumer/payload_metadata.h
index 8b36f53..f23b668 100644
--- a/payload_consumer/payload_metadata.h
+++ b/payload_consumer/payload_metadata.h
@@ -56,6 +56,9 @@
// the payload.
MetadataParseResult ParsePayloadHeader(const brillo::Blob& payload,
ErrorCode* error);
+ MetadataParseResult ParsePayloadHeader(const unsigned char* payload,
+ size_t size,
+ ErrorCode* error);
// Simpler version of the above, returns true on success.
bool ParsePayloadHeader(const brillo::Blob& payload);
@@ -88,6 +91,10 @@
bool GetManifest(const brillo::Blob& payload,
DeltaArchiveManifest* out_manifest) const;
+ bool GetManifest(const unsigned char* payload,
+ size_t size,
+ DeltaArchiveManifest* out_manifest) const;
+
// Parses a payload file |payload_path| and prepares the metadata properties,
// manifest and metadata signatures. Can be used as an easy to use utility to
// get the payload information without manually the process.