From c5ba6d949d6f83a9e26ab6c132449ab5023f552b Mon Sep 17 00:00:00 2001
From: Niall Sheridan <nsheridan@gmail.com>
Date: Fri, 30 Sep 2016 21:51:26 -0700
Subject: [PATCH] Use json.NewDecoder to decode json from http

---
 client/client.go              | 7 +------
 cmd/cashierd/handlers_test.go | 6 +-----
 cmd/cashierd/main.go          | 7 +------
 server/store/sqldb.go         | 2 +-
 4 files changed, 4 insertions(+), 18 deletions(-)

diff --git a/client/client.go b/client/client.go
index ba5b9004..e69f3534 100644
--- a/client/client.go
+++ b/client/client.go
@@ -5,7 +5,6 @@ import (
 	"crypto/tls"
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"net/http"
 	"net/url"
 	"path"
@@ -67,12 +66,8 @@ func send(s []byte, token, ca string, ValidateTLSCertificate bool) (*lib.SignRes
 		return nil, fmt.Errorf("Bad response from server: %s", resp.Status)
 	}
 	defer resp.Body.Close()
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		return nil, err
-	}
 	c := &lib.SignResponse{}
-	if err := json.Unmarshal(body, c); err != nil {
+	if err := json.NewDecoder(resp.Body).Decode(c); err != nil {
 		return nil, err
 	}
 	return c, nil
diff --git a/cmd/cashierd/handlers_test.go b/cmd/cashierd/handlers_test.go
index 38251ce7..a6bd1136 100644
--- a/cmd/cashierd/handlers_test.go
+++ b/cmd/cashierd/handlers_test.go
@@ -114,12 +114,8 @@ func TestSignRevoke(t *testing.T) {
 	if resp.Code != http.StatusOK {
 		t.Error("Unexpected response")
 	}
-	b, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		t.Error(err)
-	}
 	r := &lib.SignResponse{}
-	if err := json.Unmarshal(b, r); err != nil {
+	if err := json.NewDecoder(resp.Body).Decode(r); err != nil {
 		t.Error(err)
 	}
 	if r.Status != "ok" {
diff --git a/cmd/cashierd/main.go b/cmd/cashierd/main.go
index 6e52ddfa..88f190e4 100644
--- a/cmd/cashierd/main.go
+++ b/cmd/cashierd/main.go
@@ -10,7 +10,6 @@ import (
 	"fmt"
 	"html/template"
 	"io"
-	"io/ioutil"
 	"log"
 	"net"
 	"net/http"
@@ -125,11 +124,7 @@ func (a *appContext) login(w http.ResponseWriter, r *http.Request) (int, error)
 // parseKey retrieves and unmarshals the signing request.
 func parseKey(r *http.Request) (*lib.SignRequest, error) {
 	var s lib.SignRequest
-	body, err := ioutil.ReadAll(r.Body)
-	if err != nil {
-		return nil, err
-	}
-	if err := json.Unmarshal(body, &s); err != nil {
+	if err := json.NewDecoder(r.Body).Decode(&s); err != nil {
 		return nil, err
 	}
 	return &s, nil
diff --git a/server/store/sqldb.go b/server/store/sqldb.go
index 81784b02..f65f6015 100644
--- a/server/store/sqldb.go
+++ b/server/store/sqldb.go
@@ -132,7 +132,7 @@ func (db *sqldb) SetRecord(rec *CertRecord) error {
 	if err := db.conn.Ping(); err != nil {
 		return err
 	}
-	_, err = db.set.Exec(rec.KeyID, string(principals), rec.CreatedAt, rec.Expires, rec.Raw)
+	_, err = db.set.Exec(rec.KeyID, principals, rec.CreatedAt, rec.Expires, rec.Raw)
 	return err
 }
 
-- 
GitLab