diff --git a/pkg/git/libgit2/managed/const.go b/pkg/git/libgit2/managed/const.go new file mode 100644 index 00000000..f41035da --- /dev/null +++ b/pkg/git/libgit2/managed/const.go @@ -0,0 +1,27 @@ +/* +Copyright 2022 The Flux authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package managed + +const ( + // URLMaxLength represents the max length for the entire URL + // when cloning Git repositories via HTTP(S). + URLMaxLength = 2048 + + // PathMaxLength represents the max length for the path element + // when cloning Git repositories via SSH. + PathMaxLength = 4096 +) diff --git a/pkg/git/libgit2/managed/http.go b/pkg/git/libgit2/managed/http.go index 8a58dbb8..09c0ee26 100644 --- a/pkg/git/libgit2/managed/http.go +++ b/pkg/git/libgit2/managed/http.go @@ -171,8 +171,8 @@ func createClientRequest(targetUrl string, action git2go.SmartServiceAction, t * } } - if len(finalUrl) > 2048 { - return nil, nil, fmt.Errorf("URL exceeds the max length (2048)") + if len(finalUrl) > URLMaxLength { + return nil, nil, fmt.Errorf("URL exceeds the max length (%d)", URLMaxLength) } client := &http.Client{ diff --git a/pkg/git/libgit2/managed/ssh.go b/pkg/git/libgit2/managed/ssh.go index 71ef6f39..82acd1da 100644 --- a/pkg/git/libgit2/managed/ssh.go +++ b/pkg/git/libgit2/managed/ssh.go @@ -130,8 +130,8 @@ func (t *sshSmartSubtransport) Action(urlString string, action git2go.SmartServi return nil, err } - if len(u.Path) > 4096 { - return nil, fmt.Errorf("path exceeds the max length (4096)") + if len(u.Path) > PathMaxLength { + return nil, fmt.Errorf("path exceeds the max length (%d)", PathMaxLength) } // decode URI's path