Arguments to ctype functions are required to be either EOF or representable
[u/mdw/putty] / unix / ux_x11.c
index 0998069..5794d31 100644 (file)
@@ -6,6 +6,7 @@
 #include <unistd.h>
 #include <assert.h>
 #include <stdlib.h>
+#include <errno.h>
 
 #include "putty.h"
 #include "ssh.h"
@@ -36,11 +37,14 @@ void platform_get_x11_auth(struct X11Display *disp, const Config *cfg)
        int len;
 
        sfree(disp->hostname);
+       disp->hostname = NULL;
        len = 128;
        do {
            len *= 2;
-           disp->hostname = snewn(len, char);
-           if (gethostname(disp->hostname, len) < 0) {
+           disp->hostname = sresize(disp->hostname, len, char);
+           if ((gethostname(disp->hostname, len) < 0) &&
+               (errno != ENAMETOOLONG)) {
+               sfree(disp->hostname);
                disp->hostname = NULL;
                return;
            }