From: Yehuda Sadeh Date: Tue, 26 Jul 2011 19:23:36 +0000 (-0700) Subject: rgw: return Bad Request on PUT requests with empty content length X-Git-Tag: v0.33~165 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b16fa971a021682370a8af726c574bee5aaa74db;p=ceph.git rgw: return Bad Request on PUT requests with empty content length --- diff --git a/src/rgw/rgw_rest.cc b/src/rgw/rgw_rest.cc index fee6e31973f4..510a96d1dcd7 100644 --- a/src/rgw/rgw_rest.cc +++ b/src/rgw/rgw_rest.cc @@ -667,6 +667,8 @@ static int validate_object_name(const char *object) int RGWHandler_REST::preprocess(struct req_state *s, FCGX_Request *fcgx) { + int ret = 0; + s->fcgx = fcgx; s->path_name = s->env->get("SCRIPT_NAME"); s->path_name_url = s->env->get("REQUEST_URI"); @@ -695,8 +697,20 @@ int RGWHandler_REST::preprocess(struct req_state *s, FCGX_Request *fcgx) else s->op = OP_UNKNOWN; + switch (s->op) { + case OP_PUT: + if (!s->length || *s->length == '\0') + ret = -EINVAL; + break; + default: + break; + } + init_entities_from_header(s); - int ret = validate_bucket_name(s->bucket_str.c_str()); + if (ret) + return ret; + + ret = validate_bucket_name(s->bucket_str.c_str()); if (ret) return ret; ret = validate_object_name(s->object_str.c_str());