From 6d0658c8caca56cb48be147a0984a95632b6fb9b Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Tue, 14 Oct 2014 14:50:11 -0700 Subject: [PATCH] etcdhttp: check error returned by ParseForm --- etcdserver/etcdhttp/http.go | 5 ++++- etcdserver/etcdhttp/http_test.go | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/etcdserver/etcdhttp/http.go b/etcdserver/etcdhttp/http.go index 62aa806b3..7202e2be0 100644 --- a/etcdserver/etcdhttp/http.go +++ b/etcdserver/etcdhttp/http.go @@ -135,7 +135,10 @@ func (h serverHandler) serveAdminMembers(w http.ResponseWriter, r *http.Request) switch r.Method { case "PUT": - r.ParseForm() + if err := r.ParseForm(); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } peerURLs := r.PostForm["PeerURLs"] log.Printf("etcdhttp: add node %x with peer urls %v", id, peerURLs) m := etcdserver.Member{ diff --git a/etcdserver/etcdhttp/http_test.go b/etcdserver/etcdhttp/http_test.go index a8ca721a0..ffb728fb9 100644 --- a/etcdserver/etcdhttp/http_test.go +++ b/etcdserver/etcdhttp/http_test.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "io" + "io/ioutil" "net/http" "net/http/httptest" "net/url" @@ -1277,11 +1278,22 @@ func TestServeAdminMembersFail(t *testing.T) { http.StatusBadRequest, }, + { + // parse body error + &http.Request{ + URL: mustNewURL(t, path.Join(adminMembersPrefix, "1")), + Method: "PUT", + }, + &resServer{}, + + http.StatusBadRequest, + }, { // etcdserver.AddMember error &http.Request{ URL: mustNewURL(t, path.Join(adminMembersPrefix, "1")), Method: "PUT", + Body: ioutil.NopCloser(strings.NewReader("")), }, &errServer{ errors.New("blah"),