From 5571dc766e2143e39762ff0b47c41d1c2e154f4c Mon Sep 17 00:00:00 2001 From: Benjamin Sanders Date: Sat, 11 Oct 2025 10:34:24 -0400 Subject: Vendor bundled gems for deployment --- .../ruby/3.4.0/gems/safe_yaml-1.0.5/bin/safe_yaml | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100755 vendor/bundle/ruby/3.4.0/gems/safe_yaml-1.0.5/bin/safe_yaml (limited to 'vendor/bundle/ruby/3.4.0/gems/safe_yaml-1.0.5/bin') diff --git a/vendor/bundle/ruby/3.4.0/gems/safe_yaml-1.0.5/bin/safe_yaml b/vendor/bundle/ruby/3.4.0/gems/safe_yaml-1.0.5/bin/safe_yaml new file mode 100755 index 0000000..1751a72 --- /dev/null +++ b/vendor/bundle/ruby/3.4.0/gems/safe_yaml-1.0.5/bin/safe_yaml @@ -0,0 +1,75 @@ +#!/usr/bin/env ruby + +$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib') + +require 'optparse' +require 'safe_yaml/load' + +options = {} +option_parser = OptionParser.new do |opts| + opts.banner = "Usage: safe_yaml [options]" + + opts.on("-f", "--file=", "Parse the given YAML file, dump the result to STDOUT") do |file| + options[:file] = file + end + + opts.on("--libyaml-check", "Check for libyaml vulnerability CVE-2014-2525 on your system") do + options[:libyaml_check] = true + end +end + +option_parser.parse! + +def report_libyaml_ok + puts "\e[32mGood news! You definitely have either a patched or up-to-date libyaml version :)\e[39m" +end + +def check_for_overflow_bug + YAML.load("--- !#{'%20' * 100}") + report_libyaml_ok +end + +def perform_libyaml_check(force=false) + unless SafeYAML::LibyamlChecker.libyaml_version_ok? + warn <<-EOM.gsub(/^ +/, ' ') + + \e[33mSafeYAML Warning\e[39m + \e[33m----------------\e[39m + + \e[31mYou may have an outdated version of libyaml (#{SafeYAML::LibyamlChecker::LIBYAML_VERSION}) installed on your system.\e[39m + + Prior to 0.1.6, libyaml is vulnerable to a heap overflow exploit from malicious YAML payloads. + + For more info, see: + https://www.ruby-lang.org/en/news/2014/03/29/heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525/ + EOM + end + + puts <<-EOM.gsub(/^ +/, ' ') + + Hit Enter to check if your version of libyaml is vulnerable. This will run a test \e[31mwhich may crash\e[39m + \e[31mthe current process\e[39m. If it does, your system is vulnerable and you should do something about it. + + Type "nm" and hit Enter if you don't want to run the check. + + See the project wiki for more info: + + https://github.com/dtao/safe_yaml/wiki/The-libyaml-vulnerability + EOM + + if STDIN.readline.chomp("\n") != 'nm' + check_for_overflow_bug + end +end + +if options[:libyaml_check] + perform_libyaml_check(options[:force_libyaml_check]) + +elsif options[:file] + yaml = File.read(options[:file]) + result = SafeYAML.load(yaml) + puts result.inspect + +else + puts option_parser.help +end -- cgit v1.2.3