From a89a470b993904804f4143f24301ef09bc4620e0 Mon Sep 17 00:00:00 2001 From: "Aeneas Rekkas (arekkas)" Date: Sat, 17 Jun 2017 15:57:22 +0200 Subject: [PATCH] oauth2: resolve session issue with deep nested session Closes #512 --- glide.lock | 6 ++++-- glide.yaml | 1 + oauth2/session.go | 12 ++---------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/glide.lock b/glide.lock index 8a84a03458..2a7153c523 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: 9a63e299ab52d341a9a0be9f2d573ae9320ddb0276b56abb219f3e71c96f0726 -updated: 2017-06-17T15:06:25.7166367+02:00 +hash: 177922989fd7b304a45a8cec1de807bc5635087f575f227700ccb0cadd219ddd +updated: 2017-06-15T19:24:42.4344616+02:00 imports: - name: github.com/asaskevich/govalidator version: 4918b99a7cb949bb295f3c7bbaf24b577d806e35 @@ -106,6 +106,8 @@ imports: version: 13736c32520969a64987228c21c138a4cfdb3720 - name: github.com/mitchellh/mapstructure version: db1efb556f84b25a0a13a04aad883943538ad2e0 +- name: github.com/mohae/deepcopy + version: 491d3605edfb866af34a48075bd4355ac1bf46ca - name: github.com/moul/http2curl version: 4e24498b31dba4683efb9d35c1c8a91e2eda28c8 - name: github.com/Nvveen/Gotty diff --git a/glide.yaml b/glide.yaml index 8488cd9856..acc43eb274 100644 --- a/glide.yaml +++ b/glide.yaml @@ -64,6 +64,7 @@ import: subpackages: - clientcredentials - package: gopkg.in/yaml.v2 +- package: github.com/mohae/deepcopy testImport: - package: github.com/bmizerany/assert - package: github.com/ory/dockertest diff --git a/oauth2/session.go b/oauth2/session.go index 6f231f3e92..2647d4d3fa 100644 --- a/oauth2/session.go +++ b/oauth2/session.go @@ -1,9 +1,7 @@ package oauth2 import ( - "bytes" - "encoding/gob" - + "github.com/mohae/deepcopy" "github.com/ory/fosite" "github.com/ory/fosite/handler/openid" "github.com/ory/fosite/token/jwt" @@ -29,11 +27,5 @@ func (s *Session) Clone() fosite.Session { return nil } - var clone Session - var mod bytes.Buffer - enc := gob.NewEncoder(&mod) - dec := gob.NewDecoder(&mod) - _ = enc.Encode(s) - _ = dec.Decode(&clone) - return &clone + return deepcopy.Copy(s).(fosite.Session) }