Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

init_repository crash on None input #688

Closed
alexmnazarenko opened this issue Jan 25, 2017 · 3 comments
Closed

init_repository crash on None input #688

alexmnazarenko opened this issue Jan 25, 2017 · 3 comments

Comments

@alexmnazarenko
Copy link

alexmnazarenko commented Jan 25, 2017

Hi! Not sure if I should post this here or in libgit2.

Caught the segfault testing my pygit2 integration.

Very simple to reproduce:

import pygit2
pygit2.init_repository(None)

Result (Ubuntu 14.04):
Segmentation fault (core dumped)

Debugger says that crash occurs in inside libgit2 in some strlen call. Looks like None is converted to NULL (by cffi?), which is unexpected by git_repository_init_ext.

For now I've added type check in my code, but segfaults aren't really expected in python. Mb add TypeError in python layer?

@alexmnazarenko
Copy link
Author

Forgot to add:

pygit2/libgit2 version 0.25.0 (latest)
python 3.4.3
gcc 5.3.0

@carlosmn
Copy link
Member

This does sound like a pygit2 bug where it's likely converting None to a NULL pointer, but it's not something that's valid input as a repository path. It should either be failing or passing in an empty string.

@alexmnazarenko
Copy link
Author

Maybe it can be checked on both levels:

libgit2 can return non-zero error code

but pygit2 can check argument in advance and raise nice TypeError instead of "something_wrong_on_c_level".

That's just a suggestion from personal experience.

tmr232 added a commit to tmr232/pygit2 that referenced this issue Apr 5, 2017
0-wiz-0 added a commit to NetBSD/pkgsrc-wip that referenced this issue Aug 14, 2017
0.26.0 (2017-07-06)
-------------------------

- Update to libgit2 v0.26
  `#713 <https://github.com/libgit2/pygit2/pull/713>`_

- Drop support for Python 3.2, add support for cffi 1.10
  `#706 <https://github.com/libgit2/pygit2/pull/706>`_
  `#694 <https://github.com/libgit2/pygit2/issues/694>`_

- New ``Repository.revert_commit(...)``
  `#711 <https://github.com/libgit2/pygit2/pull/711>`_
  `#710 <https://github.com/libgit2/pygit2/issues/710>`_

- New ``Branch.is_checked_out()``
  `#696 <https://github.com/libgit2/pygit2/pull/696>`_

- Various fixes
  `#706 <https://github.com/libgit2/pygit2/pull/706>`_
  `#707 <https://github.com/libgit2/pygit2/pull/707>`_
  `#708 <https://github.com/libgit2/pygit2/pull/708>`_

0.25.1 (2017-04-25)
-------------------------

- Add suport for Python 3.6

- New support for stash: repository methods ``stash``, ``stash_apply``,
  ``stash_drop`` and ``stash_pop``
  `#695 <https://github.com/libgit2/pygit2/pull/695>`_

- Improved support for submodules: new repository methods ``init_submodules``
  and ``update_submodules``
  `#692 <https://github.com/libgit2/pygit2/pull/692>`_

- New friendlier API for branches & references: ``Repository.branches`` and
  ``Repository.references``
  `#700 <https://github.com/libgit2/pygit2/pull/700>`_
  `#701 <https://github.com/libgit2/pygit2/pull/701>`_

- New support for custom backends
  `#690 <https://github.com/libgit2/pygit2/pull/690>`_

- Fix ``init_repository`` crash on None input
  `#688 <https://github.com/libgit2/pygit2/issues/688>`_
  `#697 <https://github.com/libgit2/pygit2/pull/697>`_

- Fix checkout with an orphan master branch
  `#669 <https://github.com/libgit2/pygit2/issues/669>`_
  `#685 <https://github.com/libgit2/pygit2/pull/685>`_

- Better error messages for opening repositories
  `#645 <https://github.com/libgit2/pygit2/issues/645>`_
  `#698 <https://github.com/libgit2/pygit2/pull/698>`_
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants