diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index e0ff3989e7118aa044b2bae467712e814f8a1837..2dfa3b9e1468a92bb97d78c8aa9c685fb21f6539 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2009-12-31  Eirik Byrkjeflot Anonsen  <eirik@opera.com>
+	    Nick Clifton  <nickc@redhat.com>
+
+	* objcopy.c (add_redefine_syms_file): Avoid symbol buffer
+	overrun.
+
 2009-12-21  Alan Modra  <amodra@gmail.com>
 
 	* MAINTAINERS: Update my email address.
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index 20f867c01f9f88ef520e320cb2acb2c94eeedfb8..bd8dcec83381ab049d0792fbeb07ca8c6ea57d24 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -1232,7 +1232,7 @@ add_redefine_syms_file (const char *filename)
 	   filename, strerror (errno));
 
   bufsize = 100;
-  buf = (char *) xmalloc (bufsize);
+  buf = (char *) xmalloc (bufsize + 1 /* For the terminating NUL.  */);
 
   lineno = 1;
   c = getc (file);
@@ -1249,7 +1249,7 @@ add_redefine_syms_file (const char *filename)
 	  if (len >= bufsize)
 	    {
 	      bufsize *= 2;
-	      buf = (char *) xrealloc (buf, bufsize);
+	      buf = (char *) xrealloc (buf, bufsize + 1);
 	    }
 	  c = getc (file);
 	}
@@ -1275,7 +1275,7 @@ add_redefine_syms_file (const char *filename)
 	  if (len >= bufsize)
 	    {
 	      bufsize *= 2;
-	      buf = (char *) xrealloc (buf, bufsize);
+	      buf = (char *) xrealloc (buf, bufsize + 1);
 	    }
 	  c = getc (file);
 	}