Skip to content

Commit

Permalink
plugins: Filter builtins by RunningVersion
Browse files Browse the repository at this point in the history
This commit adds some logic to handle the case where a mount entry has a
non-builtin RunningVersion. This ensures that we only report deprecation
status for builtins.

This resolves VAULT-9019.
  • Loading branch information
mpalmi committed Nov 9, 2022
1 parent e19ce98 commit 266d883
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
2 changes: 1 addition & 1 deletion vault/logical_system.go
Expand Up @@ -956,7 +956,7 @@ func (b *SystemBackend) mountInfo(ctx context.Context, entry *MountEntry) map[st
}

// Add deprecation status only if it exists
builtinType := b.Core.builtinTypeFromMountEntry(ctx, entry)
builtinType := b.Core.builtinTypeFromMountEntry(ctx, entry, entry.RunningVersion)
if status, ok := b.Core.builtinRegistry.DeprecationStatus(entry.Type, builtinType); ok {
info["deprecation_status"] = status.String()
}
Expand Down
11 changes: 8 additions & 3 deletions vault/mount.go
Expand Up @@ -712,13 +712,18 @@ func (c *Core) mountInternal(ctx context.Context, entry *MountEntry, updateStora

// builtinTypeFromMountEntry attempts to find a builtin PluginType associated
// with the specified MountEntry. Returns consts.PluginTypeUnknown if not found.
func (c *Core) builtinTypeFromMountEntry(ctx context.Context, entry *MountEntry) consts.PluginType {
func (c *Core) builtinTypeFromMountEntry(ctx context.Context, entry *MountEntry, version string) consts.PluginType {
if c.builtinRegistry == nil || entry == nil {
return consts.PluginTypeUnknown
}

// Builtin plugins should contain the "builtin" string in their RunningVersion
if !strings.Contains(version, "builtin") {
return consts.PluginTypeUnknown
}

builtinPluginType := func(name string, pluginType consts.PluginType) (consts.PluginType, bool) {
plugin, err := c.pluginCatalog.Get(ctx, name, pluginType, "")
plugin, err := c.pluginCatalog.Get(ctx, name, pluginType, version)
if err == nil && plugin != nil && plugin.Builtin {
return plugin.Type, true
}
Expand Down Expand Up @@ -964,7 +969,7 @@ func (c *Core) handleDeprecatedMountEntry(ctx context.Context, entry *MountEntry

// Allow type to be determined from mount entry when not otherwise specified
if pluginType == consts.PluginTypeUnknown {
pluginType = c.builtinTypeFromMountEntry(ctx, entry)
pluginType = c.builtinTypeFromMountEntry(ctx, entry, entry.RunningVersion)
}

// Handle aliases
Expand Down

0 comments on commit 266d883

Please sign in to comment.