mirror of
https://github.com/samba-team/samba.git
synced 2025-03-30 06:50:24 +03:00
s3:web/swat: use strtoll() instead of atoi/atol/atoll
This is more portable, as we have a strtoll replacement in lib/replace. metze Autobuild-User: Stefan Metzmacher <metze@samba.org> Autobuild-Date: Sat Aug 6 11:55:45 CEST 2011 on sn-devel-104
This commit is contained in:
parent
10752c5b5b
commit
a6be0820d0
@ -199,16 +199,29 @@ bool verify_xsrf_token(const char *formname)
|
||||
const char *pass = cgi_user_pass();
|
||||
const char *token = cgi_variable_nonull(XSRF_TOKEN);
|
||||
const char *time_str = cgi_variable_nonull(XSRF_TIME);
|
||||
char *p = NULL;
|
||||
long long xsrf_time_ll = 0;
|
||||
time_t xsrf_time = 0;
|
||||
time_t now = time(NULL);
|
||||
|
||||
if (sizeof(time_t) == sizeof(int)) {
|
||||
xsrf_time = atoi(time_str);
|
||||
} else if (sizeof(time_t) == sizeof(long)) {
|
||||
xsrf_time = atol(time_str);
|
||||
} else if (sizeof(time_t) == sizeof(long long)) {
|
||||
xsrf_time = atoll(time_str);
|
||||
errno = 0;
|
||||
xsrf_time_ll = strtoll(time_str, &p, 10);
|
||||
if (errno != 0) {
|
||||
return false;
|
||||
}
|
||||
if (p == NULL) {
|
||||
return false;
|
||||
}
|
||||
if (PTR_DIFF(p, time_str) > strlen(time_str)) {
|
||||
return false;
|
||||
}
|
||||
if (xsrf_time_ll > _TYPE_MAXIMUM(time_t)) {
|
||||
return false;
|
||||
}
|
||||
if (xsrf_time_ll < _TYPE_MINIMUM(time_t)) {
|
||||
return false;
|
||||
}
|
||||
xsrf_time = xsrf_time_ll;
|
||||
|
||||
if (abs(now - xsrf_time) > XSRF_TIMEOUT) {
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user