Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>2017-09-19 21:36:15 +0300
committerKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>2017-09-27 23:56:46 +0300
commit014fb03a9ad35d720da702fb58bc9096d2a0a848 (patch)
tree35635152d4e2f705fac1e8b17ec256ad03fb5f06
parentefa26054210aa1b7811da39a4b52424f3af2a58f (diff)
Fix path bug in CommitService::FindCommits
-rw-r--r--CHANGELOG.md5
-rw-r--r--internal/service/commit/find_commits.go7
-rw-r--r--internal/service/commit/find_commits_test.go41
3 files changed, 53 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fb2b83a39..5592f91d6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
# Gitaly changelog
+UNRELEASED
+
+- Fix path bug in CommitService::FindCommits
+ https://gitlab.com/gitlab-org/gitaly/merge_requests/364
+
v0.42.0
- Implement UserCreateTag RPC
diff --git a/internal/service/commit/find_commits.go b/internal/service/commit/find_commits.go
index 87bb25637..dd489d904 100644
--- a/internal/service/commit/find_commits.go
+++ b/internal/service/commit/find_commits.go
@@ -22,6 +22,13 @@ func (s *server) FindCommits(req *pb.FindCommitsRequest, stream pb.CommitService
}
}
+ // Clients might send empty paths. That is an error
+ for _, path := range req.Paths {
+ if len(path) == 0 {
+ return grpc.Errorf(codes.InvalidArgument, "path is empty string")
+ }
+ }
+
client, err := s.CommitServiceClient(ctx)
if err != nil {
return err
diff --git a/internal/service/commit/find_commits_test.go b/internal/service/commit/find_commits_test.go
index 54f8e83e3..788e3b1ac 100644
--- a/internal/service/commit/find_commits_test.go
+++ b/internal/service/commit/find_commits_test.go
@@ -5,6 +5,8 @@ import (
"io"
"testing"
+ "google.golang.org/grpc/codes"
+
pb "gitlab.com/gitlab-org/gitaly-proto/go"
"gitlab.com/gitlab-org/gitaly/internal/testhelper"
@@ -215,3 +217,42 @@ func TestSuccessfulFindCommitsRequest(t *testing.T) {
})
}
}
+
+func TestFailureFindCommitsRequest(t *testing.T) {
+ server := startTestServices(t)
+ defer server.Stop()
+
+ client, conn := newCommitServiceClient(t, serverSocketPath)
+ defer conn.Close()
+
+ testCases := []struct {
+ desc string
+ request *pb.FindCommitsRequest
+ code codes.Code
+ }{
+ {
+ desc: "empty path string",
+ request: &pb.FindCommitsRequest{
+ Repository: testRepo,
+ Paths: [][]byte{[]byte("")},
+ },
+ code: codes.InvalidArgument,
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ ctx, cancel := testhelper.Context()
+ defer cancel()
+
+ stream, err := client.FindCommits(ctx, tc.request)
+ require.NoError(t, err)
+
+ for err == nil {
+ _, err = stream.Recv()
+ }
+
+ testhelper.AssertGrpcError(t, err, tc.code, "")
+ })
+ }
+}