Download raw body.
got/tog segfault with corrupted (?) checkout
On Wed, Dec 27, 2023 at 01:22:48PM +0100, Stefan Sperling wrote:
> On Wed, Dec 27, 2023 at 01:13:22PM +0100, Theo Buehler wrote:
> > does /usr/ports/.got/base_commit happen to be empty?
>
> Yes, the problem can be reproduced with these steps:
>
> $ rm .got/base-commit
> $ touch .got/base-commit
> $ got up
> Segmentation fault (core dumped)
>
> Below is the obvious fix:
>
> $ got up
> got: /tmp/test-wt/.got/base-commit: bad worktree meta data
ok tb
>
> diff /home/stsp/src/got
> commit - 1e63031fcde1dee62ea14a73d4bf3638632e691b
> path + /home/stsp/src/got
> blob - cbce00f57c0999cd56f639776fdc0be83f732cf9
> file + lib/worktree_open.c
> --- lib/worktree_open.c
> +++ lib/worktree_open.c
> @@ -80,6 +80,10 @@ read_meta_file(char **content, const char *path_got, c
> err = got_error_from_errno2("fstat", path);
> goto done;
> }
> + if (sb.st_size == 0) {
> + err = got_error_path(path, GOT_ERR_WORKTREE_META);
> + goto done;
> + }
> *content = calloc(1, sb.st_size);
> if (*content == NULL) {
> err = got_error_from_errno("calloc");
got/tog segfault with corrupted (?) checkout