Skip to content

Validate file contents when loading files to env variables #16

@vovimayhem

Description

@vovimayhem

I've got this error on one of my apps:

Puma starting in single mode...
* Version 4.3.6 (ruby 2.7.1-p83), codename: Mysterious Traveller
* Min threads: 25, max threads: 25
* Environment: production
! Unable to load application: ArgumentError: bad environment variable value: contains null byte
/usr/local/bundle/gems/on_container-0.0.11/lib/on_container/load_env_secrets.rb:24:in `[]=': bad environment variable value: contains null byte (ArgumentError)
        from /usr/local/bundle/gems/on_container-0.0.11/lib/on_container/load_env_secrets.rb:24:in `block in <top (required)>'
        from /usr/local/bundle/gems/on_container-0.0.11/lib/on_container/load_env_secrets.rb:17:in `each'
        from /usr/local/bundle/gems/on_container-0.0.11/lib/on_container/load_env_secrets.rb:17:in `<top (required)>'
        from /usr/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `require'
        from /usr/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `rescue in require'
        from /usr/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:156:in `require'
        from /srv/prex-surescripts/config/boot.rb:5:in `<top (required)>'
        from /srv/prex-surescripts/config/application.rb:3:in `require_relative'
        from /srv/prex-surescripts/config/application.rb:3:in `<top (required)>'
        from /srv/prex-surescripts/config/environment.rb:4:in `require_relative'
        from /srv/prex-surescripts/config/environment.rb:4:in `<top (required)>'
        from config.ru:5:in `require_relative'
        from config.ru:5:in `block in <main>'
        from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
        from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
        from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
        from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/configuration.rb:321:in `load_rackup'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/configuration.rb:246:in `app'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/runner.rb:155:in `load_and_bind'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/single.rb:98:in `run'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/launcher.rb:172:in `run'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/cli.rb:80:in `run'
        from /usr/local/bundle/gems/puma-4.3.6/bin/puma:10:in `<top (required)>'
        from /usr/local/bundle/bin/puma:23:in `load'
        from /usr/local/bundle/bin/puma:23:in `<main>'
/usr/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- on_container/load_env_secrets (LoadError)
        from /usr/local/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        from /srv/prex-surescripts/config/boot.rb:5:in `<top (required)>'
        from /srv/prex-surescripts/config/application.rb:3:in `require_relative'
        from /srv/prex-surescripts/config/application.rb:3:in `<top (required)>'
        from /srv/prex-surescripts/config/environment.rb:4:in `require_relative'
        from /srv/prex-surescripts/config/environment.rb:4:in `<top (required)>'
        from config.ru:5:in `require_relative'
        from config.ru:5:in `block in <main>'
        from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:116:in `eval'
        from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:116:in `new_from_string'
        from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:105:in `load_file'
        from /usr/local/bundle/gems/rack-2.2.3/lib/rack/builder.rb:66:in `parse_file'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/configuration.rb:321:in `load_rackup'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/configuration.rb:246:in `app'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/runner.rb:155:in `load_and_bind'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/single.rb:98:in `run'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/launcher.rb:172:in `run'
        from /usr/local/bundle/gems/puma-4.3.6/lib/puma/cli.rb:80:in `run'
        from /usr/local/bundle/gems/puma-4.3.6/bin/puma:10:in `<top (required)>'
        from /usr/local/bundle/bin/puma:23:in `load'
        from /usr/local/bundle/bin/puma:23:in `<main>'

Looks like we should be checking the contents of the file before loading it to an env variable at on_container/load_env_secrets

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions