Skip to content

Commit 867f0f2

Browse files
nglevinluispadron
authored andcommitted
Add a validation check to prevent processing static libraries and dynamic libraries as resources via "data" and "resources" attributes on rules.
Cherry-pick: 41d1d10
1 parent b8a4a44 commit 867f0f2

13 files changed

Lines changed: 190 additions & 4 deletions

File tree

apple/internal/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,7 @@ bzl_library(
560560
"@bazel_skylib//lib:partial",
561561
"@bazel_skylib//lib:paths",
562562
"@bazel_skylib//lib:types",
563+
"@rules_cc//cc/common",
563564
],
564565
)
565566

apple/internal/aspects/resource_aspect.bzl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,18 @@ def _apple_resource_aspect_impl(target, ctx):
125125
"product_type": None,
126126
"rule_label": ctx.label,
127127
}
128-
collect_infoplists_args = {}
129-
collect_args = {}
130-
collect_structured_args = {}
128+
129+
skip_library_validation = False
130+
131+
common_collect_args = {
132+
"rule_label": ctx.label,
133+
}
134+
collect_infoplists_args = dict(common_collect_args)
135+
collect_args = common_collect_args | {
136+
"skip_library_validation": skip_library_validation,
137+
}
138+
collect_structured_args = dict(common_collect_args)
139+
131140
collect_framework_import_bundle_files = None
132141

133142
hint_action = None

apple/internal/ios_rules.bzl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,9 @@ def _ios_application_impl(ctx):
213213
top_level_infoplists = resources.collect(
214214
attr = ctx.attr,
215215
res_attrs = ["infoplists"],
216+
rule_label = ctx.label,
216217
)
218+
217219
top_level_resources = resources.collect(
218220
attr = ctx.attr,
219221
res_attrs = [
@@ -224,6 +226,7 @@ def _ios_application_impl(ctx):
224226
"strings",
225227
"resources",
226228
],
229+
rule_label = ctx.label,
227230
)
228231

229232
entitlements = entitlements_support.process_entitlements(
@@ -605,6 +608,7 @@ def _ios_app_clip_impl(ctx):
605608
top_level_infoplists = resources.collect(
606609
attr = ctx.attr,
607610
res_attrs = ["infoplists"],
611+
rule_label = ctx.label,
608612
)
609613
top_level_resources = resources.collect(
610614
attr = ctx.attr,
@@ -614,6 +618,7 @@ def _ios_app_clip_impl(ctx):
614618
"strings",
615619
"resources",
616620
],
621+
rule_label = ctx.label,
617622
)
618623

619624
entitlements = entitlements_support.process_entitlements(
@@ -929,10 +934,12 @@ def _ios_framework_impl(ctx):
929934
top_level_infoplists = resources.collect(
930935
attr = ctx.attr,
931936
res_attrs = ["infoplists"],
937+
rule_label = ctx.label,
932938
)
933939
top_level_resources = resources.collect(
934940
attr = ctx.attr,
935941
res_attrs = ["resources"],
942+
rule_label = ctx.label,
936943
)
937944

938945
extra_linkopts = [
@@ -1190,6 +1197,7 @@ def _ios_extension_impl(ctx):
11901197
top_level_infoplists = resources.collect(
11911198
attr = ctx.attr,
11921199
res_attrs = ["infoplists"],
1200+
rule_label = ctx.label,
11931201
)
11941202
top_level_resources = resources.collect(
11951203
attr = ctx.attr,
@@ -1198,6 +1206,7 @@ def _ios_extension_impl(ctx):
11981206
"resources",
11991207
"strings",
12001208
],
1209+
rule_label = ctx.label,
12011210
)
12021211

12031212
entitlements = entitlements_support.process_entitlements(
@@ -1508,6 +1517,7 @@ def _ios_dynamic_framework_impl(ctx):
15081517
top_level_infoplists = resources.collect(
15091518
attr = ctx.attr,
15101519
res_attrs = ["infoplists"],
1520+
rule_label = ctx.label,
15111521
)
15121522
top_level_resources = resources.collect(
15131523
attr = ctx.attr,
@@ -1518,6 +1528,7 @@ def _ios_dynamic_framework_impl(ctx):
15181528
"strings",
15191529
"resources",
15201530
],
1531+
rule_label = ctx.label,
15211532
)
15221533

15231534
signed_frameworks = []
@@ -1942,6 +1953,7 @@ def _ios_imessage_application_impl(ctx):
19421953
top_level_infoplists = resources.collect(
19431954
attr = ctx.attr,
19441955
res_attrs = ["infoplists"],
1956+
rule_label = ctx.label,
19451957
)
19461958
top_level_resources = resources.collect(
19471959
attr = ctx.attr,
@@ -1950,6 +1962,7 @@ def _ios_imessage_application_impl(ctx):
19501962
"strings",
19511963
"resources",
19521964
],
1965+
rule_label = ctx.label,
19531966
)
19541967

19551968
entitlements = entitlements_support.process_entitlements(
@@ -2148,6 +2161,7 @@ def _ios_imessage_extension_impl(ctx):
21482161
top_level_infoplists = resources.collect(
21492162
attr = ctx.attr,
21502163
res_attrs = ["infoplists"],
2164+
rule_label = ctx.label,
21512165
)
21522166
top_level_resources = resources.collect(
21532167
attr = ctx.attr,
@@ -2156,6 +2170,7 @@ def _ios_imessage_extension_impl(ctx):
21562170
"strings",
21572171
"resources",
21582172
],
2173+
rule_label = ctx.label,
21592174
)
21602175

21612176
entitlements = entitlements_support.process_entitlements(
@@ -2418,6 +2433,7 @@ def _ios_sticker_pack_extension_impl(ctx):
24182433
top_level_infoplists = resources.collect(
24192434
attr = ctx.attr,
24202435
res_attrs = ["infoplists"],
2436+
rule_label = ctx.label,
24212437
)
24222438
top_level_resources = resources.collect(
24232439
attr = ctx.attr,
@@ -2426,6 +2442,7 @@ def _ios_sticker_pack_extension_impl(ctx):
24262442
"strings",
24272443
"resources",
24282444
],
2445+
rule_label = ctx.label,
24292446
)
24302447

24312448
entitlements = entitlements_support.process_entitlements(

apple/internal/macos_rules.bzl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ def _macos_application_impl(ctx):
215215
top_level_infoplists = resources.collect(
216216
attr = ctx.attr,
217217
res_attrs = ["infoplists"],
218+
rule_label = ctx.label,
218219
)
219220
top_level_resources = resources.collect(
220221
attr = ctx.attr,
@@ -223,6 +224,7 @@ def _macos_application_impl(ctx):
223224
"strings",
224225
"resources",
225226
],
227+
rule_label = ctx.label,
226228
)
227229

228230
entitlements = entitlements_support.process_entitlements(
@@ -526,6 +528,7 @@ def _macos_bundle_impl(ctx):
526528
top_level_infoplists = resources.collect(
527529
attr = ctx.attr,
528530
res_attrs = ["infoplists"],
531+
rule_label = ctx.label,
529532
)
530533
top_level_resources = resources.collect(
531534
attr = ctx.attr,
@@ -534,6 +537,7 @@ def _macos_bundle_impl(ctx):
534537
"strings",
535538
"resources",
536539
],
540+
rule_label = ctx.label,
537541
)
538542

539543
entitlements = entitlements_support.process_entitlements(
@@ -772,6 +776,7 @@ def _macos_extension_impl(ctx):
772776
top_level_infoplists = resources.collect(
773777
attr = ctx.attr,
774778
res_attrs = ["infoplists"],
779+
rule_label = ctx.label,
775780
)
776781
top_level_resources = resources.collect(
777782
attr = ctx.attr,
@@ -780,6 +785,7 @@ def _macos_extension_impl(ctx):
780785
"strings",
781786
"resources",
782787
],
788+
rule_label = ctx.label,
783789
)
784790

785791
entitlements = entitlements_support.process_entitlements(
@@ -1053,13 +1059,15 @@ def _macos_quick_look_plugin_impl(ctx):
10531059
top_level_infoplists = resources.collect(
10541060
attr = ctx.attr,
10551061
res_attrs = ["infoplists"],
1062+
rule_label = ctx.label,
10561063
)
10571064
top_level_resources = resources.collect(
10581065
attr = ctx.attr,
10591066
res_attrs = [
10601067
"strings",
10611068
"resources",
10621069
],
1070+
rule_label = ctx.label,
10631071
)
10641072

10651073
entitlements = entitlements_support.process_entitlements(
@@ -1301,10 +1309,12 @@ def _macos_kernel_extension_impl(ctx):
13011309
top_level_infoplists = resources.collect(
13021310
attr = ctx.attr,
13031311
res_attrs = ["infoplists"],
1312+
rule_label = ctx.label,
13041313
)
13051314
top_level_resources = resources.collect(
13061315
attr = ctx.attr,
13071316
res_attrs = ["resources"],
1317+
rule_label = ctx.label,
13081318
)
13091319

13101320
entitlements = entitlements_support.process_entitlements(
@@ -1555,6 +1565,7 @@ def _macos_spotlight_importer_impl(ctx):
15551565
top_level_infoplists = resources.collect(
15561566
attr = ctx.attr,
15571567
res_attrs = ["infoplists"],
1568+
rule_label = ctx.label,
15581569
)
15591570

15601571
entitlements = entitlements_support.process_entitlements(
@@ -1795,6 +1806,7 @@ def _macos_xpc_service_impl(ctx):
17951806
top_level_infoplists = resources.collect(
17961807
attr = ctx.attr,
17971808
res_attrs = ["infoplists"],
1809+
rule_label = ctx.label,
17981810
)
17991811

18001812
entitlements = entitlements_support.process_entitlements(
@@ -2852,10 +2864,12 @@ def _macos_framework_impl(ctx):
28522864
top_level_infoplists = resources.collect(
28532865
attr = ctx.attr,
28542866
res_attrs = ["infoplists"],
2867+
rule_label = ctx.label,
28552868
)
28562869
top_level_resources = resources.collect(
28572870
attr = ctx.attr,
28582871
res_attrs = ["resources"],
2872+
rule_label = ctx.label,
28592873
)
28602874

28612875
extra_linkopts = [
@@ -3122,6 +3136,7 @@ def _macos_dynamic_framework_impl(ctx):
31223136
top_level_infoplists = resources.collect(
31233137
attr = ctx.attr,
31243138
res_attrs = ["infoplists"],
3139+
rule_label = ctx.label,
31253140
)
31263141
top_level_resources = resources.collect(
31273142
attr = ctx.attr,
@@ -3132,6 +3147,7 @@ def _macos_dynamic_framework_impl(ctx):
31323147
"strings",
31333148
"resources",
31343149
],
3150+
rule_label = ctx.label,
31353151
)
31363152

31373153
signed_frameworks = []

apple/internal/resource_rules/apple_precompiled_resource_bundle.bzl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,13 @@ def _apple_precompiled_resource_bundle_impl(ctx):
122122
infoplists = resources.collect(
123123
attr = ctx.attr,
124124
res_attrs = ["infoplists"],
125+
rule_label = ctx.label,
125126
)
126127
else:
127128
infoplists = resources.collect(
128129
attr = ctx.attr,
129130
res_attrs = ["_fallback_infoplist"],
131+
rule_label = ctx.label,
130132
)
131133

132134
bucketized_owners, unowned_resources, buckets = resources.bucketize_typed_data(
@@ -151,6 +153,7 @@ def _apple_precompiled_resource_bundle_impl(ctx):
151153
resource_files = resources.collect(
152154
attr = ctx.attr,
153155
res_attrs = ["resources"],
156+
rule_label = ctx.label,
154157
)
155158
if resource_files:
156159
bucketized_owners, unowned_resources, buckets = resources.bucketize_data(
@@ -186,6 +189,7 @@ def _apple_precompiled_resource_bundle_impl(ctx):
186189
structured_files = resources.collect(
187190
attr = ctx.attr,
188191
res_attrs = ["structured_resources"],
192+
rule_label = ctx.label,
189193
)
190194
if structured_files:
191195
structured_parent_dir_param = partial.make(

0 commit comments

Comments
 (0)