Re: [PATCH] submodule add: sanity check existing .gitmodules
On Sat, Nov 15, 2025 at 11:03 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 6 quoted lines
>
> "git submodule add" tries to find if a submodule with the same name
> already exists at a different path, by looking up an entry in the
> .gitmodules file. If the entry in the file is incomplete, e.g.,
> when the submodule.<name>.something variable is defined but there is
> no definition of submodule.<name>.path variable, it accessing the
accessing => tries to access
(or accessing => accesses)
Show 16 quoted lines
> missing .path member of the submodule structure and triggers a
> segfault.
>
> A brief audit was done to make sure that the code does not assume
> members other than those that are absolutely certain to exist: a
> submodule obtained by submodule_from_name() should have .name
> member, while a submodule obtained by submodule_from_path() should
> also have .path as well as .name member, and we cannot assume
> anything else. Luckily, the module_add() codepath was the only
> problematic one. It is fairly recent code that comes from 1fa06ced
> (submodule: prevent overwriting .gitmodules on path reuse,
> 2025-07-24).
>
> A helper used by update_submodule() seems to assume that its call to
> submodule_from_path() always yields a submodule object without a
> failure, which seems to rely on the caller's making sure it is the
> case. Leave an assert() with a NEEDSWORK comment there for future
> developers to make sure the assumption actually holds.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>