summaryrefslogtreecommitdiff
path: root/filesystem
diff options
context:
space:
mode:
authorJiyong Park <jiyong@google.com>2021-04-14 16:42:24 +0900
committerJiyong Park <jiyong@google.com>2021-04-14 16:42:24 +0900
commitda2d6ee7a266c0c8889e82ad40319c9762379391 (patch)
tree3fb1e1f0c4cbb4ea3130cb961ee8fbe97b73c989 /filesystem
parentff5cc064c23a4ceaaa28302234f52fdd15a90ff5 (diff)
Truncate vbmeta to 64KB
libavb expects to be able to read the maximum vbmeta size, so we must provide a partition which matches this or the read will fail. Bug: 181923506 Test: m MicrodroidHostTestCases libavb tries Change-Id: Icc5b86ccd98e3ed9c4269e584f35dbfbdf1b0730
Diffstat (limited to 'filesystem')
-rw-r--r--filesystem/vbmeta.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/filesystem/vbmeta.go b/filesystem/vbmeta.go
index f823387b0..3f16c0d71 100644
--- a/filesystem/vbmeta.go
+++ b/filesystem/vbmeta.go
@@ -110,6 +110,9 @@ func (v *vbmeta) partitionName() string {
return proptools.StringDefault(v.properties.Partition_name, v.BaseModuleName())
}
+// See external/avb/libavb/avb_slot_verify.c#VBMETA_MAX_SIZE
+const vbmetaMaxSize = 64 * 1024
+
func (v *vbmeta) GenerateAndroidBuildActions(ctx android.ModuleContext) {
extractedPublicKeys := v.extractPublicKeys(ctx)
@@ -172,6 +175,13 @@ func (v *vbmeta) GenerateAndroidBuildActions(ctx android.ModuleContext) {
}
cmd.FlagWithOutput("--output ", v.output)
+
+ // libavb expects to be able to read the maximum vbmeta size, so we must provide a partition
+ // which matches this or the read will fail.
+ builder.Command().Text("truncate").
+ FlagWithArg("-s ", strconv.Itoa(vbmetaMaxSize)).
+ Output(v.output)
+
builder.Build("vbmeta", fmt.Sprintf("vbmeta %s", ctx.ModuleName()))
v.installDir = android.PathForModuleInstall(ctx, "etc")