diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 7cd862a9b1e1b223501139fb021b58edb417fad5..16bd6e1fab4c3deefd6a00ebe48fba93a48cf537 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2005-03-18  Andreas Schwab  <schwab@suse.de>
+
+	* gcc_update (apply_patch): Properly quote $1.
+
 2005-03-18  Zack Weinberg  <zack@codesourcery.com>
 
 	* gcc_update: Add --silent option.
diff --git a/contrib/gcc_update b/contrib/gcc_update
index 6b1c3f14185729be6b36dd123a156ad076fc620f..dfe35dbdc16781e4cc8965a7453cffea9fbb549c 100755
--- a/contrib/gcc_update
+++ b/contrib/gcc_update
@@ -166,15 +166,15 @@ touch_files_reexec () {
 
 # This functions applies a patch to an existing tree.
 apply_patch () {
-    if [ -f $1 ]; then
+    if [ -f "$1" ]; then
 	echo "Applying patch file $1"
-	case "$1" in
+	case $1 in
 	*gz)
-	    gzip -d -c $1 | patch -p1 ;;
+	    gzip -d -c "$1" | patch -p1 ;;
 	*bz2)
-	    bzip2 -d -c $1 | patch -p1 ;;
+	    bzip2 -d -c "$1" | patch -p1 ;;
 	*)
-	    cat $1 | patch -p1 ;;
+	    patch -p1 < "$1";;
 	esac
     fi
     touch_files_reexec