Browse Source

etcdserver: check http StatusCode before unmarshal

Check http StatusCode. Only Unmarshal body if StatusCode is statusOK.
Jingyi Hu 6 years ago
parent
commit
e994a4df01
1 changed files with 4 additions and 0 deletions
  1. 4 0
      etcdserver/cluster_util.go

+ 4 - 0
etcdserver/cluster_util.go

@@ -395,6 +395,10 @@ func promoteMemberHTTP(ctx context.Context, url string, id uint64, peerRt http.R
 		return nil, membership.ErrIDNotFound
 		return nil, membership.ErrIDNotFound
 	}
 	}
 
 
+	if resp.StatusCode != http.StatusOK { // all other types of errors
+		return nil, fmt.Errorf("member promote: unknown error(%s)", string(b))
+	}
+
 	var membs []*membership.Member
 	var membs []*membership.Member
 	if err := json.Unmarshal(b, &membs); err != nil {
 	if err := json.Unmarshal(b, &membs); err != nil {
 		return nil, err
 		return nil, err