mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 10:17:22 +01:00
fix: better sanity checking for bad plugin manifests
This commit is contained in:
parent
8e5db448b2
commit
678cd0f130
5 changed files with 28 additions and 7 deletions
|
|
@ -1889,7 +1889,7 @@ namespace Dalamud.Interface.Internal.Windows
|
|||
|
||||
return hasSearchString && !(
|
||||
manifest.Name.ToLowerInvariant().Contains(searchString) ||
|
||||
manifest.Author.Equals(this.searchText, StringComparison.InvariantCultureIgnoreCase) ||
|
||||
(!manifest.Author.IsNullOrEmpty() && manifest.Author.Equals(this.searchText, StringComparison.InvariantCultureIgnoreCase)) ||
|
||||
(manifest.Tags != null && manifest.Tags.Contains(searchString, StringComparer.InvariantCultureIgnoreCase)));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -247,9 +247,9 @@ namespace Dalamud.Plugin.Internal
|
|||
{
|
||||
// Not a plugin
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("During boot plugin load, an unexpected error occurred");
|
||||
Log.Error(ex, "During boot plugin load, an unexpected error occurred");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -519,6 +519,9 @@ namespace Dalamud.Plugin.Internal
|
|||
|
||||
LocalPlugin plugin;
|
||||
|
||||
if (!manifest.CheckSanity())
|
||||
throw new InvalidOperationException("Plugin manifest is not sane.");
|
||||
|
||||
if (isDev)
|
||||
{
|
||||
Log.Information($"Loading dev plugin {name}");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
using System.IO;
|
||||
|
||||
using Dalamud.Utility;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Dalamud.Plugin.Internal.Types
|
||||
|
|
@ -10,6 +10,24 @@ namespace Dalamud.Plugin.Internal.Types
|
|||
/// </summary>
|
||||
internal record LocalPluginManifest : PluginManifest
|
||||
{
|
||||
/// <summary>
|
||||
/// Check if this manifest is valid.
|
||||
/// </summary>
|
||||
/// <returns>Whether or not this manifest is valid.</returns>
|
||||
public bool CheckSanity()
|
||||
{
|
||||
if (this.InternalName.IsNullOrEmpty())
|
||||
return false;
|
||||
|
||||
if (this.Name.IsNullOrEmpty())
|
||||
return false;
|
||||
|
||||
if (this.DalamudApiLevel != 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether the plugin is disabled and should not be loaded.
|
||||
/// This value supercedes the ".disabled" file functionality and should not be included in the plugin master.
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ namespace Dalamud.Plugin.Internal.Types
|
|||
/// Gets the author/s of the plugin.
|
||||
/// </summary>
|
||||
[JsonProperty]
|
||||
public string Author { get; init; }
|
||||
public string? Author { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the public name of the plugin.
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@ namespace Dalamud.Utility
|
|||
/// </summary>
|
||||
/// <param name="value">The string to test.</param>
|
||||
/// <returns>true if the value parameter is null or an empty string (""); otherwise, false.</returns>
|
||||
public static bool IsNullOrEmpty(this string value) => string.IsNullOrEmpty(value);
|
||||
public static bool IsNullOrEmpty(this string? value) => string.IsNullOrEmpty(value);
|
||||
|
||||
/// <summary>
|
||||
/// Indicates whether a specified string is null, empty, or consists only of white-space characters.
|
||||
/// </summary>
|
||||
/// <param name="value">The string to test.</param>
|
||||
/// <returns>true if the value parameter is null or an empty string (""), or if value consists exclusively of white-space characters.</returns>
|
||||
public static bool IsNullOrWhitespace(this string value) => string.IsNullOrWhiteSpace(value);
|
||||
public static bool IsNullOrWhitespace(this string? value) => string.IsNullOrWhiteSpace(value);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue