about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--scripts/nix-prefetch-url.in5
1 files changed, 4 insertions, 1 deletions
diff --git a/scripts/nix-prefetch-url.in b/scripts/nix-prefetch-url.in
index a2a8a701fe69..7d8bd93a42d8 100644
--- a/scripts/nix-prefetch-url.in
+++ b/scripts/nix-prefetch-url.in
@@ -21,7 +21,10 @@ if test -z "$url"; then
     exit 1
 fi
 
-name=$(basename "$url")
+# Handle escaped characters in the URI.  `+', `=' and `?' are the only
+# characters that are valid in Nix store path names but have a special
+# meaning in URIs.
+name=$(basename "$url" | sed -e 's/%2b/+/g' -e 's/%3d/=/g' -e 's/%3f/\?/g')
 if test -z "$name"; then echo "invalid url"; exit 1; fi