From a60c3dd995a2ba4f5f04d193e02183210cd725c8 Mon Sep 17 00:00:00 2001 From: Rishabh Kumar Date: Wed, 21 Dec 2016 19:41:29 +0530 Subject: [PATCH] Switch from "timegm()" to "internal_timegm()" Changed timegm() to internal_timegm() for better portability Fixes: http://tracker.ceph.com/issues/12863 Signed-off-by: Rishabh Kumar --- src/rgw/rgw_auth_s3.cc | 2 +- src/rgw/rgw_common.cc | 2 +- src/rgw/rgw_data_sync.cc | 2 +- src/rgw/rgw_json_enc.cc | 4 ++-- src/rgw/rgw_policy_s3.cc | 2 +- src/rgw/rgw_rest_s3.cc | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/rgw/rgw_auth_s3.cc b/src/rgw/rgw_auth_s3.cc index 6cebdbab942..f4b34e929e8 100644 --- a/src/rgw/rgw_auth_s3.cc +++ b/src/rgw/rgw_auth_s3.cc @@ -219,7 +219,7 @@ bool rgw_create_s3_canonical_header(const req_info& info, dout(0) << "NOTICE: bad date (predates epoch): " << req_date << dendl; return false; } - *header_time = utime_t(timegm(&t), 0); + *header_time = utime_t(internal_timegm(&t), 0); } } diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index 7f7f45c45dd..d4888374a1c 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -479,7 +479,7 @@ int parse_time(const char *time_str, real_time *time) return -EINVAL; } - time_t sec = timegm(&tm); + time_t sec = internal_timegm(&tm); *time = utime_t(sec, ns).to_real_time(); return 0; diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index e8eac616319..cbe3a91d8e1 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -1951,7 +1951,7 @@ struct bucket_list_entry { uint32_t nsec; if (parse_iso8601(mtime_str.c_str(), &t, &nsec)) { ceph_timespec ts; - ts.tv_sec = (uint64_t)timegm(&t); + ts.tv_sec = (uint64_t)internal_timegm(&t); ts.tv_nsec = nsec; mtime = real_clock::from_ceph_timespec(ts); } diff --git a/src/rgw/rgw_json_enc.cc b/src/rgw/rgw_json_enc.cc index 35920721200..e3f39231b16 100644 --- a/src/rgw/rgw_json_enc.cc +++ b/src/rgw/rgw_json_enc.cc @@ -1170,7 +1170,7 @@ void rgw::keystone::TokenEnvelope::Token::decode_json(JSONObj *obj) JSONDecoder::decode_json("expires", expires_iso8601, obj, true); if (parse_iso8601(expires_iso8601.c_str(), &t)) { - expires = timegm(&t); + expires = internal_timegm(&t); } else { expires = 0; throw JSONDecoder::err("Failed to parse ISO8601 expiration date from Keystone response."); @@ -1215,7 +1215,7 @@ void rgw::keystone::TokenEnvelope::decode_v3(JSONObj* const root_obj) struct tm t; if (parse_iso8601(expires_iso8601.c_str(), &t)) { - token.expires = timegm(&t); + token.expires = internal_timegm(&t); } else { token.expires = 0; throw JSONDecoder::err("Failed to parse ISO8601 expiration date" diff --git a/src/rgw/rgw_policy_s3.cc b/src/rgw/rgw_policy_s3.cc index b242142ed32..c2f87547edc 100644 --- a/src/rgw/rgw_policy_s3.cc +++ b/src/rgw/rgw_policy_s3.cc @@ -130,7 +130,7 @@ int RGWPolicy::set_expires(const string& e) if (!parse_iso8601(e.c_str(), &t)) return -EINVAL; - expires = timegm(&t); + expires = internal_timegm(&t); return 0; } diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index bebd03ee690..3510401eff7 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -3468,7 +3468,7 @@ int RGW_Auth_S3::authorize_v4(RGWRados *store, struct req_state *s, bool force_b return -EPERM; } /* handle expiration in epoch time */ - now_req = (uint64_t)timegm(&date_t); + now_req = (uint64_t)internal_timegm(&date_t); if (now >= now_req + exp) { dout(10) << "NOTICE: now = " << now << ", now_req = " << now_req << ", exp = " << exp << dendl; return -EPERM; -- 2.39.5