23a4269
diff -urNp tar-1.22-orig/lib/rtapelib.c tar-1.22/lib/rtapelib.c
23a4269
--- tar-1.22-orig/lib/rtapelib.c	2007-08-12 09:57:15.000000000 +0200
23a4269
+++ tar-1.22/lib/rtapelib.c	2010-02-22 13:58:07.000000000 +0100
23a4269
@@ -573,6 +573,9 @@ rmt_read__ (int handle, char *buffer, si
23a4269
       || (status = get_status (handle)) == SAFE_READ_ERROR)
23a4269
     return SAFE_READ_ERROR;
23a4269
 
23a4269
+  if (status > length)
23a4269
+    return SAFE_READ_ERROR;
23a4269
+
23a4269
   for (counter = 0; counter < status; counter += rlen, buffer += rlen)
23a4269
     {
23a4269
       rlen = safe_read (READ_SIDE (handle), buffer, status - counter);