More checks when downloading from file:// scheme (#5620)

This commit is contained in:
Dan Schaper 2024-03-28 09:44:51 -07:00 committed by GitHub
commit 8cfccf9d1f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -567,14 +567,14 @@ gravity_DownloadBlocklistFromUrl() {
if [[ $url == "file://"* ]]; then if [[ $url == "file://"* ]]; then
# Get the file path # Get the file path
file_path=$(echo "$url" | cut -d'/' -f3-) file_path=$(echo "$url" | cut -d'/' -f3-)
# Check if the file exists # Check if the file exists and is a regular file (i.e. not a socket, fifo, tty, block). Might still be a symlink.
if [[ ! -e $file_path ]]; then if [[ ! -f $file_path ]]; then
# Output that the file does not exist # Output that the file does not exist
echo -e "${OVER} ${CROSS} ${file_path} does not exist" echo -e "${OVER} ${CROSS} ${file_path} does not exist"
download=false download=false
else else
# Check if the file has a+r permissions # Check if the file or a file referenced by the symlink has a+r permissions
permissions=$(stat -c "%a" "$file_path") permissions=$(stat -L -c "%a" "$file_path")
if [[ $permissions == *4 || $permissions == *5 || $permissions == *6 || $permissions == *7 ]]; then if [[ $permissions == *4 || $permissions == *5 || $permissions == *6 || $permissions == *7 ]]; then
# Output that we are using the local file # Output that we are using the local file
echo -e "${OVER} ${INFO} Using local file ${file_path}" echo -e "${OVER} ${INFO} Using local file ${file_path}"