Skip to content

[Bug] git_clone crashes on an unregistered URL scheme #7377

Description

@AvaCoden

Calling git_clone with an unregistered URL scheme terminates the process on Windows instead of returning an error.

Reproduction steps

The failing native call is equivalent to:

git_repository *repo = NULL;
git_clone_options options = GIT_CLONE_OPTIONS_INIT;

git_clone(
    &repo,
    "foo://example.com",
    "C:\\Temp\\libgit2-unknown-scheme",
    &options);

I reproduced this through LibGit2Sharp 0.32.0 / LibGit2Sharp.NativeBinaries 2.0.324, running each case in a separate process because the failure terminates the test runner.

The crash is unchanged with default clone options or with each of these options added individually: bare clone, no checkout, automatic proxy selection, credential callback, certificate callback, and progress callbacks. As a control, https://example.invalid/x.git returns a normal libgit2 error.

Expected behavior

git_clone returns an error for an unregistered scheme, with a message such as unsupported URL protocol.

libgit2 1.3 returned that error for the same input.

Actual behavior

The process terminates with Windows exception code 0xc0000005 inside git_clone in git2-5853918.dll. A managed host reports the last native frame as:

LibGit2Sharp.Core.NativeMethods.git_clone(...)

No libgit2 error reaches the caller.

Version of libgit2

1.8.6.0, from LibGit2Sharp.NativeBinaries 2.0.324.

Operating system tested

Windows x64

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions