> On Jun 23, 2023, at 8:56 AM, Mark Johnston <[email protected]> wrote:
…
>> Naive question: should this be an && conditional or an || conditional?
>
> It should be &&. Using || here would reintroduce the original bug.
> If strncmp(pname, pn->pn_name, namelen) == 0, then
> strlen(pn->pn_name) >= namelen, and pn->pn_name is nul-terminated, so it
> is safe to check pn->pn_name[namelen] == '\0'.
>
>> If the former, could this be simplified by using a direct NUL char equality
>> check instead of using strncmp?
>
> I'm not sure what you mean by this. This code is simply checking
> whether pname and pn->pn_name are the same string, without assuming that
> pname is nul-terminated.
I completely misread the conditional when I sent out my email. After
you pointed out the obvious part dealing with namelen, it doesn’t make sense
for the conditionals to exist by themselves.
Thanks for the explanation :)!
-Enji
signature.asc
Description: Message signed with OpenPGP
