<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Apr 24, 2021 at 2:30 AM Rob Landley <<a href="mailto:rob@landley.net">rob@landley.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 4/22/21 9:00 PM, enh via Toybox wrote:<br>
> Handling utmp is login's job: telnetd should just pass the appropriate<br>
> option to login.<br>
<br>
Introducing a call to getnameinfo... you're doing a DNS lookup on yourself?<br></blockquote><div><br></div><div>it's early on Monday morning, so i may have missed something but...</div><div><br></div><div>the call to getpeername(2) is the interesting bit:</div><div><br></div><div>  if (getpeername(sockfd, (void *)&sa, &sl)) perror_exit("getpeername");<br>  if (getnameinfo((void *)&sa, sl, toybuf, sizeof(toybuf), NULL, 0, 0))<br></div><div><br></div><div>we're asking for the name of the *other end* of the socket.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
(Given that telnet isn't encrypted, I'd expect most of the calls to take place<br>
in a LAN environment possibly with no gateway?)<br>
<br>
Is this going to produce a different result from gethostname()?<br>
<br>
> (I was investigating a different bug that caused telnetd to take 100%<br>
> CPU after a network outage and noticed an unexpected utmp fd. It turned<br>
> out to not be relevant to my actual problem, but it did remind me that<br>
> this utmp code isn't right in small details like that, but also in the<br>
> bigger picture: it's writing the wrong information, and only on logout,<br>
> not login. But rather than try to fix it, let's just let login do its<br>
> job.)<br>
<br>
I'm all for ripping out the utmp plumbing here, I'm just confused about where<br>
this data is coming from what what it's used for...<br></blockquote><div><br></div><div>i could barely remember myself because it's been >20 years, but commands like who(1) show who's logged on and "from where". my understanding is that it's supposed to be the job of login(1) to write the login and logout records that are used for this. for some reason telnetd was trying to do it itself (but was only writing one of the records anyway, and even that not correctly).</div><div><br></div><div>so, yeah, i don't think anyone needs this in 2021 -- and sincerely doubt that anyone's going to run telnetd except to test telnet -- but that seemed all the more reason to reduce the amount of code we're carrying around here :-)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Rob<br>
</blockquote></div></div>