0020-telnetd-Scrub-USER-from-environment.patch 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. From e971f2bdfab2465d9f86cf092ce3ab8ba05e57c9 Mon Sep 17 00:00:00 2001
  2. From: Mats Erik Andersson <gnu@gisladisker.se>
  3. Date: Fri, 24 Feb 2017 00:02:14 +0100
  4. Subject: [PATCH 20/60] telnetd: Scrub USER from environment.
  5. Avoid conflicting user identity by forgetting whatever
  6. the serving host considers to be the process owner.
  7. ---
  8. ChangeLog | 11 +++++++++++
  9. telnetd/telnetd.c | 8 ++++++++
  10. 2 files changed, 19 insertions(+)
  11. diff --git a/ChangeLog b/ChangeLog
  12. index f0289780..8c95a08f 100644
  13. --- a/ChangeLog
  14. +++ b/ChangeLog
  15. @@ -1,3 +1,14 @@
  16. +2017-02-23 Mats Erik Andersson <gnu@gisladisker.se>
  17. +
  18. + telnetd: Scrub USER from environment.
  19. + Discard the environment variable USER. It will later be set
  20. + properly for autologin, but at least one BSD system passes
  21. + a preset value when telnetd starts, a value which will cause
  22. + rejected login when autologin is not in effect.
  23. +
  24. + * telnetd/telnetd.c (telnetd_setup): Unset environment
  25. + variable USER before calling getterminaltype().
  26. +
  27. 2016-05-23 Mats Erik Andersson <gnu@gisladisker.se>
  28. hostname: Avoid a trailing space.
  29. diff --git a/telnetd/telnetd.c b/telnetd/telnetd.c
  30. index 0bf102ac..b7c57dd2 100644
  31. --- a/telnetd/telnetd.c
  32. +++ b/telnetd/telnetd.c
  33. @@ -504,6 +504,14 @@ telnetd_setup (int fd)
  34. io_setup ();
  35. + /* Before doing anything related to the identity of the client,
  36. + * scrub the environment variable USER, since it may be set with
  37. + * an irrelevant user name at this point. OpenBSD has been known
  38. + * to offend at this point with their own inetd. Any demand for
  39. + * autologin will get attention in getterminaltype().
  40. + */
  41. + unsetenv ("USER");
  42. +
  43. /* get terminal type. */
  44. uname[0] = 0;
  45. level = getterminaltype (uname, sizeof (uname));
  46. --
  47. 2.26.0.292.g33ef6b2f38