From 4917a35413c4e628dc880e14f631c2b7edeaabab Mon Sep 17 00:00:00 2001 From: apainintheneck Date: Mon, 30 Jan 2023 21:56:40 -0800 Subject: [PATCH] Add sanity check for cask token --- Library/Homebrew/api/cask-source.rb | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/api/cask-source.rb b/Library/Homebrew/api/cask-source.rb index 0c1cd67a21..1573ae485d 100644 --- a/Library/Homebrew/api/cask-source.rb +++ b/Library/Homebrew/api/cask-source.rb @@ -10,18 +10,25 @@ module Homebrew class << self extend T::Sig + CASK_TOKEN_REGEX = %r{^(homebrew/cask/)?[a-z0-9\-_]+$}.freeze + sig { params(token: String).returns(Hash) } def fetch(token) - token = token.sub(%r{^homebrew/cask/}, "") + token = token.delete_prefix("homebrew/cask/") Homebrew::API.fetch "cask-source/#{token}.rb", json: false end sig { params(token: String).returns(T::Boolean) } def available?(token) - fetch token - true - rescue ArgumentError - false + # Sanity check before hitting the API + return false unless token.match?(CASK_TOKEN_REGEX) + + begin + fetch token + true + rescue ArgumentError + false + end end end end