projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
I added more detail to the `Authentication failed at PuTTY X11
[u/mdw/putty]
/
x11fwd.c
diff --git
a/x11fwd.c
b/x11fwd.c
index
52e678b
..
8b045f3
100644
(file)
--- a/
x11fwd.c
+++ b/
x11fwd.c
@@
-81,7
+81,7
@@
struct X11Private {
void *x11_invent_auth(char *proto, int protomaxlen,
char *data, int datamaxlen, int proto_id)
{
void *x11_invent_auth(char *proto, int protomaxlen,
char *data, int datamaxlen, int proto_id)
{
- struct X11Auth *auth = s
malloc(sizeof(struct X11Auth)
);
+ struct X11Auth *auth = s
new(struct X11Auth
);
char ourdata[64];
int i;
char ourdata[64];
int i;
@@
-112,6
+112,12
@@
void *x11_invent_auth(char *proto, int protomaxlen,
return auth;
}
return auth;
}
+void x11_free_auth(void *auth)
+{
+
+ sfree(auth);
+}
+
/*
* Fetch the real auth data for a given display string, and store
* it in an X11Auth structure. Returns NULL on success, or an error
/*
* Fetch the real auth data for a given display string, and store
* it in an X11Auth structure. Returns NULL on success, or an error
@@
-168,7
+174,7
@@
static char *x11_verify(unsigned long peer_ip, int peer_port,
return NULL;
}
return NULL;
}
-static int x11_closing(Plug plug, char *error_msg, int error_code,
+static int x11_closing(Plug plug, c
onst c
har *error_msg, int error_code,
int calling_back)
{
struct X11Private *pr = (struct X11Private *) plug;
int calling_back)
{
struct X11Private *pr = (struct X11Private *) plug;
@@
-226,8
+232,8
@@
int x11_get_screen_number(char *display)
* Returns an error message, or NULL on success.
* also, fills the SocketsStructure
*/
* Returns an error message, or NULL on success.
* also, fills the SocketsStructure
*/
-char *x11_init(Socket * s, char *display, void *c, void *auth,
- const char *peeraddr, int peerport, const Config *cfg)
+c
onst c
har *x11_init(Socket * s, char *display, void *c, void *auth,
+
const char *peeraddr, int peerport, const Config *cfg)
{
static const struct plug_function_table fn_table = {
x11_closing,
{
static const struct plug_function_table fn_table = {
x11_closing,
@@
-238,7
+244,8
@@
char *x11_init(Socket * s, char *display, void *c, void *auth,
SockAddr addr;
int port;
SockAddr addr;
int port;
- char *err, *dummy_realhost;
+ const char *err;
+ char *dummy_realhost;
char host[128];
int n, displaynum;
struct X11Private *pr;
char host[128];
int n, displaynum;
struct X11Private *pr;
@@
-270,13
+277,15
@@
char *x11_init(Socket * s, char *display, void *c, void *auth,
* Try to find host.
*/
addr = name_lookup(host, port, &dummy_realhost, cfg);
* Try to find host.
*/
addr = name_lookup(host, port, &dummy_realhost, cfg);
- if ((err = sk_addr_error(addr)) != NULL)
+ if ((err = sk_addr_error(addr)) != NULL) {
+ sk_addr_free(addr);
return err;
return err;
+ }
/*
* Open socket.
*/
/*
* Open socket.
*/
- pr =
(struct X11Private *) smalloc(sizeof(struct X11Private)
);
+ pr =
snew(struct X11Private
);
pr->fn = &fn_table;
pr->auth_protocol = NULL;
pr->auth = (struct X11Auth *)auth;
pr->fn = &fn_table;
pr->auth_protocol = NULL;
pr->auth = (struct X11Auth *)auth;
@@
-308,7
+317,6
@@
char *x11_init(Socket * s, char *display, void *c, void *auth,
}
sk_set_private_ptr(*s, pr);
}
sk_set_private_ptr(*s, pr);
- sk_addr_free(addr);
return NULL;
}
return NULL;
}
@@
-355,10
+363,10
@@
void x11_override_throttle(Socket s, int enable)
*/
int x11_send(Socket s, char *data, int len)
{
*/
int x11_send(Socket s, char *data, int len)
{
- struct X11Private *pr = (struct X11Private *) sk_get_private_ptr(s);
-
- if (s == NULL)
+ struct X11Private *pr;
+ if (!s)
return 0;
return 0;
+ pr = (struct X11Private *) sk_get_private_ptr(s);
/*
* Read the first packet.
/*
* Read the first packet.
@@
-378,8
+386,8
@@
int x11_send(Socket s, char *data, int len)
pr->auth_psize = (pr->auth_plen + 3) & ~3;
pr->auth_dsize = (pr->auth_dlen + 3) & ~3;
/* Leave room for a terminating zero, to make our lives easier. */
pr->auth_psize = (pr->auth_plen + 3) & ~3;
pr->auth_dsize = (pr->auth_dlen + 3) & ~3;
/* Leave room for a terminating zero, to make our lives easier. */
- pr->auth_protocol =
(char *) smalloc(pr->auth_psize + 1
);
- pr->auth_data =
(unsigned char *) smalloc(pr->auth_dsize
);
+ pr->auth_protocol =
snewn(pr->auth_psize + 1, char
);
+ pr->auth_data =
snewn(pr->auth_dsize, unsigned char
);
}
/*
}
/*
@@
-415,7
+423,7
@@
int x11_send(Socket s, char *data, int len)
message = dupprintf("PuTTY X11 proxy: %s", err);
msglen = strlen(message);
message = dupprintf("PuTTY X11 proxy: %s", err);
msglen = strlen(message);
- reply = s
malloc(8 + msglen+1 + 4); /* include zero byte
*/
+ reply = s
newn(8 + msglen+1 + 4, unsigned char); /* include zero
*/
msgsize = (msglen + 3) & ~3;
reply[0] = 0; /* failure */
reply[1] = msglen; /* length of reason string */
msgsize = (msglen + 3) & ~3;
reply[0] = 0; /* failure */
reply[1] = msglen; /* length of reason string */