From 486be6926852ced1bbfbc627efc67cb340b587fb Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Fri, 17 Aug 2018 17:47:15 +0800 Subject: [PATCH] rgw: return err_malformed_xml when MaxAgeSeconds is an invalid integer Fixes: http://tracker.ceph.com/issues/26957 Signed-off-by: Chang Liu --- src/rgw/rgw_cors_s3.cc | 4 ++++ src/rgw/rgw_rest_s3.cc | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_cors_s3.cc b/src/rgw/rgw_cors_s3.cc index 95d57e882e3bf..67e8e83c65215 100644 --- a/src/rgw/rgw_cors_s3.cc +++ b/src/rgw/rgw_cors_s3.cc @@ -127,6 +127,10 @@ bool RGWCORSRule_S3::xml_end(const char *el) { char *end = NULL; unsigned long long ull = strtoull(obj->get_data().c_str(), &end, 10); + if (*end != '\0') { + dout(0) << "RGWCORSRule's MaxAgeSeconds " << obj->get_data() << " is an invalid integer" << dendl; + return false; + } if (ull >= 0x100000000ull) { max_age = CORS_MAX_AGE_INVALID; } else { diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 2bb55e8a521e3..7510a758181a4 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -2370,13 +2370,13 @@ int RGWPutCORS_ObjStore_S3::get_params() } if (!data || !parser.parse(data, len, 1)) { - return -EINVAL; + return -ERR_MALFORMED_XML; } cors_config = static_cast(parser.find_first( "CORSConfiguration")); if (!cors_config) { - return -EINVAL; + return -ERR_MALFORMED_XML; } #define CORS_RULES_MAX_NUM 100 -- 2.39.5