@cryptotaxi247 / kubo / commits / 5589021a1

commands/http: Fixed panics when unmarshaling command output without a set Command.Type

Matt Bell committed Jan 18, 2015 at 17:47 UTC 5589021a1d3c23391512fdeb29fa500c6e7d775e
1 file changed +19 -6
commands/http/client.go
+19 -6
@@ -153,8 +153,14 @@ func getResponse(httpRes *http.Response, req cmds.Request) (cmds.Response, error
153 outputType := reflect.TypeOf(req.Command().Type)
154
155 for {
156 - v := reflect.New(outputType).Interface()
157 - err := dec.Decode(v)
156 + var v interface{}
157 + var err error
158 + if outputType != nil {
159 + v = reflect.New(outputType).Interface()
160 + err = dec.Decode(v)
161 + } else {
162 + err = dec.Decode(&v)
163 + }
164 if err != nil && err != io.EOF {
165 fmt.Println(err.Error())
166 return
@@ -200,13 +206,20 @@ func getResponse(httpRes *http.Response, req cmds.Request) (cmds.Response, error
206
207 } else {
208 outputType := reflect.TypeOf(req.Command().Type)
203 - v := reflect.New(outputType).Interface()
204 - err = dec.Decode(v)
209 + var v interface{}
210 +
211 + if outputType != nil {
212 + v = reflect.New(outputType).Interface()
213 + err = dec.Decode(v)
214 + } else {
215 + err = dec.Decode(&v)
216 + }
217 if err != nil && err != io.EOF {
218 return nil, err
219 }
208 -
209 - res.SetOutput(v)
220 + if v != nil {
221 + res.SetOutput(v)
222 + }
223 }
224
225 return res, nil