From 15f467cdf125126f251853ce11f574b8b0cb350b Mon Sep 17 00:00:00 2001 From: Ethan Dennis Date: Mon, 15 May 2023 15:39:52 -0700 Subject: [PATCH] Ensure no new line chars in envs --- lib/concerns/environment_writer.rb | 2 ++ spec/concerns/environment_writer_spec.rb | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/concerns/environment_writer.rb b/lib/concerns/environment_writer.rb index 1bacce3..0d7f0c6 100644 --- a/lib/concerns/environment_writer.rb +++ b/lib/concerns/environment_writer.rb @@ -14,6 +14,8 @@ module EnvironmentWriter def modify_env(file, name, value) return if value.nil? + raise ArgumentError, "Invalid input: #{name}=#{value}" if value.include?("\n") + File.open(ENV[file], "a") do |f| f.puts "#{name}=#{value}" end diff --git a/spec/concerns/environment_writer_spec.rb b/spec/concerns/environment_writer_spec.rb index 1f0bc5a..dc89f63 100644 --- a/spec/concerns/environment_writer_spec.rb +++ b/spec/concerns/environment_writer_spec.rb @@ -23,6 +23,12 @@ RSpec.describe EnvironmentWriter do it { expect { subject }.not_to change { File.read(ENV["GITHUB_OUTPUT"], chomp: true).last } } end + + context "when value contains a newline" do + let(:value) { "var_value\n" } + + it { expect { subject }.to raise_error(ArgumentError) } + end end describe "#set_environment" do @@ -39,5 +45,11 @@ RSpec.describe EnvironmentWriter do it { expect { subject }.not_to change { File.read(ENV["GITHUB_ENV"], chomp: true).last } } end + + context "when value contains a newline" do + let(:value) { "env_var_value\n" } + + it { expect { subject }.to raise_error(ArgumentError) } + end end end