Sebastian Kuschel reports that pfd_closing can be called for a socket
[u/mdw/putty] / cproxy.c
index 7efcc23..934ce3d 100644 (file)
--- a/cproxy.c
+++ b/cproxy.c
@@ -130,8 +130,9 @@ int proxy_socks5_handlechap (Proxy_Socket p)
                outbuf[2] = 0x04; /* Response */
                outbuf[3] = 0x10; /* Length */
                hmacmd5_chap(data, p->chap_current_datalen,
-                            p->cfg.proxy_password, &outbuf[4]);
-               sk_write(p->sub_socket, outbuf, 20);
+                            conf_get_str(p->conf, CONF_proxy_password),
+                            &outbuf[4]);
+               sk_write(p->sub_socket, (char *)outbuf, 20);
              break;
              case 0x11:
                /* Chose a protocol */
@@ -159,7 +160,9 @@ int proxy_socks5_handlechap (Proxy_Socket p)
 
 int proxy_socks5_selectchap(Proxy_Socket p)
 {
-    if (p->cfg.proxy_username[0] || p->cfg.proxy_password[0]) {
+    char *username = conf_get_str(p->conf, CONF_proxy_username);
+    char *password = conf_get_str(p->conf, CONF_proxy_password);
+    if (username[0] || password[0]) {
        char chapbuf[514];
        int ulen;
        chapbuf[0] = '\x01'; /* Version */
@@ -169,11 +172,11 @@ int proxy_socks5_selectchap(Proxy_Socket p)
        chapbuf[4] = '\x85'; /* ...and it's HMAC-MD5, the core one */
        chapbuf[5] = '\x02'; /* Second attribute - username */
 
-       ulen = strlen(p->cfg.proxy_username);
+       ulen = strlen(username);
        if (ulen > 255) ulen = 255; if (ulen < 1) ulen = 1;
 
        chapbuf[6] = ulen;
-       memcpy(chapbuf+7, p->cfg.proxy_username, ulen);
+       memcpy(chapbuf+7, username, ulen);
 
        sk_write(p->sub_socket, chapbuf, ulen + 7);
        p->chap_num_attributes = 0;