Skip to content

Incorrect use of the C API in getpath_joinpath() #97758

New issue

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

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

Already on GitHub? # to your account

Closed
serhiy-storchaka opened this issue Oct 3, 2022 · 0 comments
Closed

Incorrect use of the C API in getpath_joinpath() #97758

serhiy-storchaka opened this issue Oct 3, 2022 · 0 comments
Labels
3.11 only security fixes 3.12 only security fixes type-bug An unexpected behavior, bug, or error type-crash A hard crash of the interpreter, possibly with a core dump

Comments

@serhiy-storchaka
Copy link
Member

If the getpath.joinpath() is called without arguments, it tries to return an empty string and calls PyUnicode_FromString(NULL) for this, which causes a crash. The correct way of creating an empty string is PyUnicode_FromStringAndSize(NULL, 0), or PyUnicode_FromString(""), or PyUnicode_FromStringAndSize("", 0).

Alternatively, the function could raise a TypeError instead of returning an empty string.

@zooba @vstinner

@serhiy-storchaka serhiy-storchaka added type-bug An unexpected behavior, bug, or error type-crash A hard crash of the interpreter, possibly with a core dump labels Oct 3, 2022
serhiy-storchaka added a commit to serhiy-storchaka/cpython that referenced this issue Oct 3, 2022
miss-islington pushed a commit to miss-islington/cpython that referenced this issue Oct 5, 2022
…ments (pythonGH-97759)

(cherry picked from commit f8cbd79)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
@serhiy-storchaka serhiy-storchaka added 3.11 only security fixes 3.12 only security fixes labels Oct 5, 2022
miss-islington added a commit that referenced this issue Oct 5, 2022
…H-97759)

(cherry picked from commit f8cbd79)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
carljm added a commit to carljm/cpython that referenced this issue Oct 6, 2022
* main: (66 commits)
  pythongh-65961: Raise `DeprecationWarning` when `__package__` differs from `__spec__.parent` (python#97879)
  docs(typing): add "see PEP 675" to LiteralString (python#97926)
  pythongh-97850: Remove all known instances of module_repr() (python#97876)
  I changed my surname early this year (python#96671)
  pythongh-93738: Documentation C syntax (:c:type:<C type> -> :c:expr:<C type>) (python#97768)
  pythongh-91539: improve performance of get_proxies_environment  (python#91566)
  build(deps): bump actions/stale from 5 to 6 (python#97701)
  pythonGH-95172 Make the same version `versionadded` oneline (python#95172)
  pythongh-88050: Fix asyncio subprocess to kill process cleanly when process is blocked (python#32073)
  pythongh-93738: Documentation C syntax (Function glob patterns -> literal markup) (python#97774)
  pythongh-93357: Port test cases to IsolatedAsyncioTestCase, part 2 (python#97896)
  pythongh-95196: Disable incorrect pickling of the C implemented classmethod descriptors (pythonGH-96383)
  pythongh-97758: Fix a crash in getpath_joinpath() called without arguments (pythonGH-97759)
  pythongh-74696: Pass root_dir to custom archivers which support it (pythonGH-94251)
  pythongh-97661: Improve accuracy of sqlite3.Cursor.fetchone docs (python#97662)
  pythongh-87092: bring compiler code closer to a preprocessing-opt-assembler organisation (pythonGH-97644)
  pythonGH-96704: Add {Task,Handle}.get_context(), use it in call_exception_handler() (python#96756)
  pythongh-93738: Documentation C syntax (:c:type:`PyTypeObject*` -> :c:expr:`PyTypeObject*`) (python#97778)
  pythongh-97825: fix AttributeError when calling subprocess.check_output(input=None) with encoding or errors args (python#97826)
  Add re.VERBOSE flag documentation example (python#97678)
  ...
mpage pushed a commit to mpage/cpython that referenced this issue Oct 11, 2022
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
3.11 only security fixes 3.12 only security fixes type-bug An unexpected behavior, bug, or error type-crash A hard crash of the interpreter, possibly with a core dump
Projects
None yet
Development

No branches or pull requests

1 participant