upstream: Allow full range of UIDs and GIDs for sftp chown and
chgrp on 32bit platforms instead of being limited by LONG_MAX. bz#3206, found by booking00 at sina.cn, ok markus@ OpenBSD-Commit-ID: 373b7bbf1f15ae482d39567ce30d18b51c9229b5
This commit is contained in:
parent
396d32f3a1
commit
2d39fc9f7e
12
sftp.c
12
sftp.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sftp.c,v 1.201 2020/08/03 02:43:41 djm Exp $ */
|
/* $OpenBSD: sftp.c,v 1.202 2020/10/04 03:04:02 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
|
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
|
||||||
*
|
*
|
||||||
|
@ -1330,7 +1330,7 @@ parse_args(const char **cpp, int *ignore_errors, int *disable_echo, int *aflag,
|
||||||
const char *cmd, *cp = *cpp;
|
const char *cmd, *cp = *cpp;
|
||||||
char *cp2, **argv;
|
char *cp2, **argv;
|
||||||
int base = 0;
|
int base = 0;
|
||||||
long l;
|
long long ll;
|
||||||
int path1_mandatory = 0, i, cmdnum, optidx, argc;
|
int path1_mandatory = 0, i, cmdnum, optidx, argc;
|
||||||
|
|
||||||
/* Skip leading whitespace */
|
/* Skip leading whitespace */
|
||||||
|
@ -1488,16 +1488,16 @@ parse_args(const char **cpp, int *ignore_errors, int *disable_echo, int *aflag,
|
||||||
if (argc - optidx < 1)
|
if (argc - optidx < 1)
|
||||||
goto need_num_arg;
|
goto need_num_arg;
|
||||||
errno = 0;
|
errno = 0;
|
||||||
l = strtol(argv[optidx], &cp2, base);
|
ll = strtoll(argv[optidx], &cp2, base);
|
||||||
if (cp2 == argv[optidx] || *cp2 != '\0' ||
|
if (cp2 == argv[optidx] || *cp2 != '\0' ||
|
||||||
((l == LONG_MIN || l == LONG_MAX) && errno == ERANGE) ||
|
((ll == LLONG_MIN || ll == LLONG_MAX) && errno == ERANGE) ||
|
||||||
l < 0) {
|
ll < 0 || ll > UINT32_MAX) {
|
||||||
need_num_arg:
|
need_num_arg:
|
||||||
error("You must supply a numeric argument "
|
error("You must supply a numeric argument "
|
||||||
"to the %s command.", cmd);
|
"to the %s command.", cmd);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*n_arg = l;
|
*n_arg = ll;
|
||||||
if (cmdnum == I_LUMASK)
|
if (cmdnum == I_LUMASK)
|
||||||
break;
|
break;
|
||||||
/* Get pathname (mandatory) */
|
/* Get pathname (mandatory) */
|
||||||
|
|
Loading…
Reference in New Issue