Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Commit

Permalink
[android] guard against accidental \**\* wildcards (#49)
Browse files Browse the repository at this point in the history
Context: dotnet/android#7837
Context: #46

I ended up making this change in xamarin-android to avoid a potential
issue in all .NET projects, so bringing it here as well.

In cases where the `android` workload is not installed,
Xamarin.Legacy.Sdk can accidentally wildcard your entire disk:

    MSBUILD : warning MSB5029: The value “\**\.*\**” of the “Exclude” attribute in element <ItemGroup> in file “/Users/moljac/.nuget/packages/xamarin.legacy.sdk/0.2.0-alpha2/Sdk/AutoImport.Android.props (26,61)” is a wildcard that results in enumerating all files on the drive, which was likely not intended. Check that referenced properties are always defined.

Add checks that `$(MonoAndroidAssetsPrefix)` and
`$(MonoAndroidResourcePrefix)` are not blank.
  • Loading branch information
jonathanpeppers authored Mar 6, 2023
1 parent 3408f14 commit 3489d96
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion src/Xamarin.Legacy.Sdk/Sdk/AutoImport.Android.props
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ NOTE! everything must be conditioned behind:
<Using Include="Android.OS.Bundle" Alias="Bundle" Platform="Android" Sdk="Xamarin.Legacy.Sdk" />
</ItemGroup>

<ItemGroup Condition=" ('$(TargetPlatformIdentifier)' == 'android' or $(TargetFramework.StartsWith ('MonoAndroid', StringComparison.OrdinalIgnoreCase))) and '$(EnableDefaultXamarinLegacySdkItems)' == 'true' ">
<ItemGroup Condition=" '$(MonoAndroidResourcePrefix)' != '' and
('$(TargetPlatformIdentifier)' == 'android' or
$(TargetFramework.StartsWith ('MonoAndroid', StringComparison.OrdinalIgnoreCase))) and
'$(EnableDefaultXamarinLegacySdkItems)' == 'true' ">
<!-- Default Resource file inclusion -->
<!-- https://developer.android.com/guide/topics/resources/providing-resources -->
<AndroidResource Include="$(MonoAndroidResourcePrefix)\*\*.xml" />
Expand All @@ -22,8 +25,19 @@ NOTE! everything must be conditioned behind:
<AndroidResource Include="$(MonoAndroidResourcePrefix)\font\*.otf" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)\font\*.ttc" />
<AndroidResource Include="$(MonoAndroidResourcePrefix)\raw\*" Exclude="$(MonoAndroidResourcePrefix)\raw\.*" />
</ItemGroup>

<ItemGroup Condition=" '$(MonoAndroidAssetsPrefix)' != ''
and ('$(TargetPlatformIdentifier)' == 'android' or
$(TargetFramework.StartsWith ('MonoAndroid', StringComparison.OrdinalIgnoreCase))) and
'$(EnableDefaultXamarinLegacySdkItems)' == 'true' ">
<!-- Default Asset file inclusion -->
<AndroidAsset Include="$(MonoAndroidAssetsPrefix)\**\*" Exclude="$(MonoAndroidAssetsPrefix)\**\.*\**" />
</ItemGroup>

<ItemGroup Condition=" ('$(TargetPlatformIdentifier)' == 'android' or
$(TargetFramework.StartsWith ('MonoAndroid', StringComparison.OrdinalIgnoreCase))) and
'$(EnableDefaultXamarinLegacySdkItems)' == 'true' ">
<!-- Default XPath transforms for bindings -->
<TransformFile Include="Transforms*.xml" />
<TransformFile Include="Transforms\**\*.xml" />
Expand Down

0 comments on commit 3489d96

Please sign in to comment.