diff --git a/openc3/lib/openc3/utilities/secrets.rb b/openc3/lib/openc3/utilities/secrets.rb index b018df805..20abc31d0 100644 --- a/openc3/lib/openc3/utilities/secrets.rb +++ b/openc3/lib/openc3/utilities/secrets.rb @@ -48,7 +48,11 @@ def delete(key, secret_store: nil, scope:) end def setup(secrets) - secrets.each do |type, key, data, secret_store| + secrets.each do |secret| + if secret.length < 3 + raise ArgumentError, "Secret must have at least 3 items (type, key, data), got #{secret.length}" + end + type, key, data, secret_store = secret case type when 'ENV' @local_secrets[key] = ENV[data] diff --git a/openc3/python/openc3/utilities/secrets.py b/openc3/python/openc3/utilities/secrets.py index 8c7f18dd9..30203507e 100644 --- a/openc3/python/openc3/utilities/secrets.py +++ b/openc3/python/openc3/utilities/secrets.py @@ -1,4 +1,4 @@ -# Copyright 2023 OpenC3, Inc. +# Copyright 2026 OpenC3, Inc. # All Rights Reserved. # # This program is free software; you can modify and/or redistribute it @@ -50,7 +50,10 @@ def delete(self, key, secret_store=None, scope=None): raise RuntimeError(f"{self.__class__.__name__} has not implemented method 'delete'") def setup(self, secrets): - for type, key, data, secret_store in secrets: + for secret in secrets: + if len(secret) < 3: + raise ValueError(f"Secret must have at least 3 items (type, key, data), got {len(secret)}") + type, key, data, *extra = secret # *extra would be secret_store, but we don't need that here match type: case "ENV": self.local_secrets[key] = os.environ.get(data)