]> xenbits.xensource.com Git - people/royger/freebsd.git/commitdiff
fetch: make -S argument accept values > 2GB
authorStefan Eßer <se@FreeBSD.org>
Sun, 20 Feb 2022 14:24:43 +0000 (15:24 +0100)
committerStefan Eßer <se@FreeBSD.org>
Sun, 20 Feb 2022 14:24:43 +0000 (15:24 +0100)
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

usr.bin/fetch/fetch.c

index 73ee96541859dcba150907648567a0541c3d9311..ad51de15f4d35bdc36226c490ccca7136b73ac49 100644 (file)
@@ -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;