Re: [PATCH v2 3/4] ref: add symbolic ref content check for files backend
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 28, 2024, 15:41 UTC
- Message-ID
- <xmqqbk1c3baj.fsf@gitster.g>
- In-Reply-To
- <Zs8dAc0ss9KbwIDs@tanuki>
Patrick Steinhardt <ps@pks.im> writes:
> Also, I think we don't typically call the value of a symbolic ref > "pointee", but "target". Searching for "pointee" in our codebase only > gives a single hit, and that one is not related to symbolic refs.
Yesterday while I was studying for reviewing this series, I saw some existing code that call them "referent". There may also be "target".
Show 14 quoted lines
>> + if (!newline_pos || *(newline_pos + 1)) {
>> + ret = fsck_report_ref(o, report,
>> + FSCK_MSG_REF_MISSING_NEWLINE,
>> + "missing newline");
>> + }
>
> The second condition `*(newline_pos + 1)` checks whether there is any
> data after the newline, doesn't it? That indicates a different kind of
> error than "missing newline", namely that there is trailing garbage. I
> guess we'd want to report a separate info-level message for this.
>
> Also, shouldn't we use `strchr` instead of `strrchr()`? Otherwise, we're
> only checking for trailing garbage after the _last_ newline, not after
> the first one.None of the above. It should strbuf_rtrim() and if we removed anything but just a single terminating LF, we are looking at something we wouldn't ahve written. The next check_refname_format() call would then find "trailing garbage".
- "refs/heads/master \n " gets rtrimmed to "refs/heads/master", which is "valid but curious".
- "refs/heads/main trash\n " becomes "refs/heads/main trash", which is outright bad.