aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Eßer <se@FreeBSD.org>2022-02-20 14:24:43 +0000
committerStefan Eßer <se@FreeBSD.org>2022-02-20 14:24:43 +0000
commit32066c96fa00fc19c8355e1956ca5aa9ead37673 (patch)
tree51b2b4aa7ff3251ec48248fbb890968c6d369a65
parent2f0656fb9ba2b962be7f545763fd8c55640ded00 (diff)
fetch: make -S argument accept values > 2GB
Use strtoll() to parse the argument of the -S option. FreeBSD has supported 64 bit file offsets for more than 25 years on all architectures and off_t is a 64 bit integer type for that reason. While strtol() returns a 64 bit value on 64 LP64 architectures, it is limit to 32 bit on e.g. i386. The strtoll() function returns a 64 but result on all supported architectures and therefore supports the possible file lengths and file offsets on 32 bit archtectures. Reported by: antoine MFC after: 3 days
-rw-r--r--usr.bin/fetch/fetch.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/usr.bin/fetch/fetch.c b/usr.bin/fetch/fetch.c
index 73ee96541859..ad51de15f4d3 100644
--- a/usr.bin/fetch/fetch.c
+++ b/usr.bin/fetch/fetch.c
@@ -1005,7 +1005,7 @@ main(int argc, char *argv[])
r_flag = 1;
break;
case 'S':
- S_size = (off_t)strtol(optarg, &end, 10);
+ S_size = strtoll(optarg, &end, 10);
if (*optarg == '\0' || *end != '\0')
errx(1, "invalid size (%s)", optarg);
break;