Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit 1e8668f

Browse files
committed
transport: UploadRequest validation
1 parent 7ef39c8 commit 1e8668f

File tree

4 files changed

+24
-1
lines changed

4 files changed

+24
-1
lines changed

plumbing/protocol/packp/uppackreq.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ func NewUploadPackRequestFromCapabilities(adv *capability.List) *UploadPackReque
3535
}
3636
}
3737

38-
// IsEmpty returns true if the request wants is equal to zero
38+
// IsEmpty a request if empty if Haves are contained in the Wants, or if Wants
39+
// length is zero
3940
func (r *UploadPackRequest) IsEmpty() bool {
4041
return isSubset(r.Wants, r.Haves)
4142
}

plumbing/transport/http/fetch_pack.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ func (s *fetchPackSession) FetchPack(r *packp.UploadPackRequest) (io.ReadCloser,
7979
return nil, transport.ErrEmptyUploadPackRequest
8080
}
8181

82+
if err := r.Validate(); err != nil {
83+
return nil, err
84+
}
85+
8286
url := fmt.Sprintf(
8387
"%s/%s",
8488
s.endpoint.String(), transport.UploadPackServiceName,

plumbing/transport/internal/common/common.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ func (s *session) FetchPack(req *packp.UploadPackRequest) (io.ReadCloser, error)
173173
return nil, transport.ErrEmptyUploadPackRequest
174174
}
175175

176+
if err := req.Validate(); err != nil {
177+
return nil, err
178+
}
179+
176180
if !s.advRefsRun {
177181
if _, err := s.AdvertisedReferences(); err != nil {
178182
return nil, err

plumbing/transport/test/common.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,20 @@ func (s *FetchPackSuite) TestFetchPack(c *C) {
122122
s.checkObjectNumber(c, reader, 28)
123123
}
124124

125+
func (s *FetchPackSuite) TestFetchPackInvalidReq(c *C) {
126+
r, err := s.Client.NewFetchPackSession(s.Endpoint)
127+
c.Assert(err, IsNil)
128+
defer func() { c.Assert(r.Close(), IsNil) }()
129+
130+
req := packp.NewUploadPackRequest()
131+
req.Wants = append(req.Wants, plumbing.NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5"))
132+
req.Capabilities.Set(capability.Sideband)
133+
req.Capabilities.Set(capability.Sideband64k)
134+
135+
_, err = r.FetchPack(req)
136+
c.Assert(err, NotNil)
137+
}
138+
125139
func (s *FetchPackSuite) TestFetchPackNoChanges(c *C) {
126140
r, err := s.Client.NewFetchPackSession(s.Endpoint)
127141
c.Assert(err, IsNil)

0 commit comments

Comments
 (0)