Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit a771c75

Browse files
committed
Add short-circuit for Smart Assemblies + include extra error info
1 parent 5698b87 commit a771c75

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

src/ServiceStack.Text/LicenseUtils.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public static class ErrorMessages
127127
internal const string ExceededServiceStackOperations = "The free-quota limit on '{0} ServiceStack Operations' has been reached." + UpgradeInstructions;
128128
internal const string ExceededAdminUi = "The Admin UI is a commerical-only premium feature." + UpgradeInstructions;
129129
internal const string ExceededPremiumFeature = "Unauthorized use of a commerical-only premium feature." + UpgradeInstructions;
130-
public const string UnauthorizedAccessRequest = "Unauthorized access request of a licensed feature." + UpgradeInstructions;
130+
public const string UnauthorizedAccessRequest = "Unauthorized access request of a licensed feature.";
131131
}
132132

133133
public static class FreeQuotas
@@ -384,10 +384,22 @@ public static IDisposable RequestAccess(object accessToken, LicenseFeature srcFe
384384
{
385385
var accessType = accessToken.GetType();
386386

387-
if (srcFeature != LicenseFeature.Client || requestedAccess != LicenseFeature.Text
388-
|| accessToken == null || !_approved.__tokens.Contains(accessType.FullName))
387+
if (srcFeature != LicenseFeature.Client || requestedAccess != LicenseFeature.Text || accessToken == null)
389388
throw new LicenseException(ErrorMessages.UnauthorizedAccessRequest);
390389

390+
if (accessType.Name.StartsWith("#")) //Smart Assembly
391+
return new AccessToken(requestedAccess);
392+
393+
if (!_approved.__tokens.Contains(accessType.FullName))
394+
{
395+
var errorDetails = " __tokens: '{0}', Assembly: '{1}', '{2}'".Fmt(
396+
accessType.Name,
397+
accessType.Assembly.ManifestModule.Name,
398+
accessType.Assembly.Location);
399+
400+
throw new LicenseException(ErrorMessages.UnauthorizedAccessRequest + errorDetails);
401+
}
402+
391403
PclExport.Instance.VerifyInAssembly(accessType, _approved.__dlls);
392404

393405
return new AccessToken(requestedAccess);

src/ServiceStack.Text/PclExport.Net40.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -463,13 +463,10 @@ public override LicenseKey VerifyLicenseKeyText(string licenseKeyText)
463463

464464
public override void VerifyInAssembly(Type accessType, ICollection<string> assemblyNames)
465465
{
466-
//might get merged/mangled on alt platforms (also issues with Smart Assembly)
466+
//might get merged/mangled on alt platforms
467467
if (assemblyNames.Contains(accessType.Assembly.ManifestModule.Name))
468468
return;
469469

470-
if (accessType.Name.StartsWith("#")) //Allow Smart Assemblies
471-
return;
472-
473470
try
474471
{
475472
if (assemblyNames.Contains(accessType.Assembly.Location.SplitOnLast(Path.DirectorySeparatorChar).Last()))
@@ -478,9 +475,14 @@ public override void VerifyInAssembly(Type accessType, ICollection<string> assem
478475
catch (Exception)
479476
{
480477
return; //dynamic assembly
481-
}
478+
}
479+
480+
var errorDetails = " Type: '{0}', Assembly: '{1}', '{2}'".Fmt(
481+
accessType.Name,
482+
accessType.Assembly.ManifestModule.Name,
483+
accessType.Assembly.Location);
482484

483-
throw new LicenseException(LicenseUtils.ErrorMessages.UnauthorizedAccessRequest);
485+
throw new LicenseException(LicenseUtils.ErrorMessages.UnauthorizedAccessRequest + errorDetails);
484486
}
485487

486488
public override void BeginThreadAffinity()

0 commit comments

Comments
 (0)