X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/37ec7a1124d00440401b81023260ff05bead4edf..471c20b0e70634fcd864da81a502d74c11aa41ee:/telnet.c diff --git a/telnet.c b/telnet.c index 4f0a36fe..20ccc83e 100644 --- a/telnet.c +++ b/telnet.c @@ -466,29 +466,33 @@ static void process_subneg(Telnet telnet) b[n++] = *e++; e++; } - if (*telnet->cfg.username) { - b[n++] = var; - b[n++] = 'U'; - b[n++] = 'S'; - b[n++] = 'E'; - b[n++] = 'R'; - b[n++] = value; - e = telnet->cfg.username; - while (*e) - b[n++] = *e++; + { + char user[sizeof(telnet->cfg.username)]; + (void) get_remote_username(&telnet->cfg, user, sizeof(user)); + if (*user) { + b[n++] = var; + b[n++] = 'U'; + b[n++] = 'S'; + b[n++] = 'E'; + b[n++] = 'R'; + b[n++] = value; + e = user; + while (*e) + b[n++] = *e++; + } + b[n++] = IAC; + b[n++] = SE; + telnet->bufsize = sk_write(telnet->s, (char *)b, n); + logbuf = dupprintf("client:\tSB %s IS %s%s%s%s", + telopt(telnet->sb_opt), + *user ? "USER=" : "", + user, + *user ? " " : "", + n == 6 ? "" : + (*telnet->cfg.environmt ? "" : "")); + logevent(telnet->frontend, logbuf); + sfree(logbuf); } - b[n++] = IAC; - b[n++] = SE; - telnet->bufsize = sk_write(telnet->s, (char *)b, n); - logbuf = dupprintf("client:\tSB %s IS %s%s%s%s", - telopt(telnet->sb_opt), - *telnet->cfg.username ? "USER=" : "", - telnet->cfg.username, - *telnet->cfg.username ? " " : "", - n == 6 ? "" : - (*telnet->cfg.environmt ? "" : "")); - logevent(telnet->frontend, logbuf); - sfree(logbuf); } break; }