summaryrefslogtreecommitdiff
path: root/fsgen
diff options
context:
space:
mode:
author Jihoon Kang <jihoonkang@google.com> 2025-03-12 22:24:52 +0000
committer Jihoon Kang <jihoonkang@google.com> 2025-03-13 17:46:37 +0000
commitf729d2e617bef827503888c76383ab9e6bf7c8d7 (patch)
treec68efe5a063ae5301a3027f1d3770986fac5ec5b /fsgen
parent002767b80d8962e4ba882ca739871874556efdd8 (diff)
Disallow prebuilt_root module type from setting Dsts property
...to prevent prebuilt_root module type from installing files in arbitrary locations within the partition. Test: m nothing --no-skip-soong-tests Bug: 402903576 Change-Id: I6999c3256668bbe738a38abc4accc05e390511ba
Diffstat (limited to 'fsgen')
-rw-r--r--fsgen/filesystem_creator_test.go36
-rw-r--r--fsgen/prebuilt_etc_modules_gen.go10
2 files changed, 34 insertions, 12 deletions
diff --git a/fsgen/filesystem_creator_test.go b/fsgen/filesystem_creator_test.go
index ba40f3f5e..81236a0a1 100644
--- a/fsgen/filesystem_creator_test.go
+++ b/fsgen/filesystem_creator_test.go
@@ -366,15 +366,25 @@ func TestPrebuiltEtcModuleGen(t *testing.T) {
eval := generatedModule0.ConfigurableEvaluator(android.PanickingConfigAndErrorContext(result.TestContext))
android.AssertBoolEquals(
t,
- "module expected to set correct srcs and dsts properties",
+ "module expected to set correct srcs property",
true,
checkModuleProp(generatedModule0, func(actual interface{}) bool {
if p, ok := actual.(*etc.PrebuiltEtcProperties); ok {
srcs := p.Srcs.GetOrDefault(eval, nil)
- dsts := p.Dsts.GetOrDefault(eval, nil)
return len(srcs) == 1 &&
- srcs[0] == "apns-full-conf.xml" &&
- len(dsts) == 1 &&
+ srcs[0] == "apns-full-conf.xml"
+ }
+ return false
+ }),
+ )
+ android.AssertBoolEquals(
+ t,
+ "module expected to set correct dsts property",
+ true,
+ checkModuleProp(generatedModule0, func(actual interface{}) bool {
+ if p, ok := actual.(*etc.PrebuiltDstsProperties); ok {
+ dsts := p.Dsts.GetOrDefault(eval, nil)
+ return len(dsts) == 1 &&
dsts[0] == "apns-conf.xml"
}
return false
@@ -385,15 +395,25 @@ func TestPrebuiltEtcModuleGen(t *testing.T) {
eval = generatedModule1.ConfigurableEvaluator(android.PanickingConfigAndErrorContext(result.TestContext))
android.AssertBoolEquals(
t,
- "module expected to set correct srcs and dsts properties",
+ "module expected to set correct srcs property",
true,
checkModuleProp(generatedModule1, func(actual interface{}) bool {
if p, ok := actual.(*etc.PrebuiltEtcProperties); ok {
srcs := p.Srcs.GetOrDefault(eval, nil)
- dsts := p.Dsts.GetOrDefault(eval, nil)
return len(srcs) == 1 &&
- srcs[0] == "apns-full-conf.xml" &&
- len(dsts) == 1 &&
+ srcs[0] == "apns-full-conf.xml"
+ }
+ return false
+ }),
+ )
+ android.AssertBoolEquals(
+ t,
+ "module expected to set correct dsts property",
+ true,
+ checkModuleProp(generatedModule1, func(actual interface{}) bool {
+ if p, ok := actual.(*etc.PrebuiltDstsProperties); ok {
+ dsts := p.Dsts.GetOrDefault(eval, nil)
+ return len(dsts) == 1 &&
dsts[0] == "apns-conf-2.xml"
}
return false
diff --git a/fsgen/prebuilt_etc_modules_gen.go b/fsgen/prebuilt_etc_modules_gen.go
index 0adf7a1e3..df945b33f 100644
--- a/fsgen/prebuilt_etc_modules_gen.go
+++ b/fsgen/prebuilt_etc_modules_gen.go
@@ -164,7 +164,6 @@ type prebuiltModuleProperties struct {
Ramdisk *bool
Srcs []string
- Dsts []string
No_full_install *bool
@@ -355,11 +354,14 @@ func createPrebuiltEtcModulesInDirectory(ctx android.LoadHookContext, partition,
moduleFactory = etc.PrebuiltAnyFactory
}
modulePropsPtr.Srcs = srcBaseFiles
- dsts := []string{}
+ dsts := proptools.NewConfigurable[[]string](nil, nil)
for _, installBaseFile := range installBaseFiles {
- dsts = append(dsts, filepath.Join(relDestDirFromInstallDirBase, installBaseFile))
+ dsts.AppendSimpleValue([]string{filepath.Join(relDestDirFromInstallDirBase, installBaseFile)})
}
- modulePropsPtr.Dsts = dsts
+
+ propsList = append(propsList, &etc.PrebuiltDstsProperties{
+ Dsts: dsts,
+ })
}
ctx.CreateModuleInDirectory(moduleFactory, srcDir, propsList...)