X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Frmt.c;h=805f69b5372ae2a377dfd9de0d6e318ec5baec0d;hb=7d33c24bbe6f3183ab7abcff22f51b56002e92b5;hp=d8aebba3e6b728675a2484dbdb743980e3aac439;hpb=998e6e081d3d19522bde88dfecd96eecd41edf79;p=chaz%2Ftar diff --git a/src/rmt.c b/src/rmt.c index d8aebba..805f69b 100644 --- a/src/rmt.c +++ b/src/rmt.c @@ -392,12 +392,12 @@ top: { struct mtop mtop; const char *p; - daddr_t count = 0; + off_t count = 0; int negative; /* Parse count_string, taking care to check for overflow. We can't use standard functions, - since daddr_t might be longer than long. */ + since off_t might be longer than long. */ for (p = count_string; *p == ' ' || *p == '\t'; p++) continue; @@ -412,8 +412,8 @@ top: break; else { - daddr_t c10 = 10 * count; - daddr_t nc = negative ? c10 - digit : c10 + digit; + off_t c10 = 10 * count; + off_t nc = negative ? c10 - digit : c10 + digit; if (c10 / 10 != count || (negative ? c10 < nc : nc < c10)) { report_error_message (N_("Seek offset out of range")); @@ -424,6 +424,11 @@ top: } mtop.mt_count = count; + if (mtop.mt_count != count) + { + report_error_message (N_("Seek offset out of range")); + exit (EXIT_FAILURE); + } mtop.mt_op = atoi (operation_string); if (ioctl (tape, MTIOCTOP, (char *) &mtop) < 0)