1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00

Fix an assortment of dupprintf() format string bugs.

I've enabled gcc's format-string checking on dupprintf, by declaring
it in misc.h to have the appropriate GNU-specific attribute. This
pointed out a selection of warnings, which I've fixed.

[originally from svn r10084]
This commit is contained in:
Simon Tatham 2013-11-17 14:05:44 +00:00
parent bb78583ad2
commit 85d1e7608e
6 changed files with 13 additions and 10 deletions

View File

@ -275,7 +275,7 @@ int cmdline_process_param(char *p, char *value, int need_save, Conf *conf)
return ret;
}
key = dupprintf("%c%.*s", type, q - value, value);
key = dupprintf("%c%.*s", type, (int)(q - value), value);
val = dupstr(q+1);
} else {
/*
@ -307,7 +307,7 @@ int cmdline_process_param(char *p, char *value, int need_save, Conf *conf)
return ret;
}
host = dupprintf("%.*s", portp - value, value);
host = dupprintf("%.*s", (int)(portp - value), value);
conf_set_str(conf, CONF_ssh_nc_host, host);
conf_set_int(conf, CONF_ssh_nc_port, atoi(portp + 1));
sfree(host);

6
misc.h
View File

@ -26,7 +26,11 @@ char ctrlparse(char *s, char **next);
char *dupstr(const char *s);
char *dupcat(const char *s1, ...);
char *dupprintf(const char *fmt, ...);
char *dupprintf(const char *fmt, ...)
#ifdef __GNUC__
__attribute__ ((format (printf, 1, 2)))
#endif
;
char *dupvprintf(const char *fmt, va_list ap);
void burnstr(char *string);

4
ssh.c
View File

@ -3292,7 +3292,7 @@ static void ssh_socket_log(Plug plug, int type, SockAddr addr, int port,
if (sk_addr_needs_port(addr)) {
msg = dupprintf("Connecting to %s port %d", addrbuf, port);
} else {
msg = dupprintf("Connecting to %s", addrbuf, port);
msg = dupprintf("Connecting to %s", addrbuf);
}
} else {
msg = dupprintf("Failed to connect to %s: %s", addrbuf, error_msg);
@ -5292,7 +5292,7 @@ static void ssh1_msg_port_open(Ssh ssh, struct Packet *pktin)
ssh_pkt_getstring(pktin, &host, &hostsize);
port = ssh_pkt_getuint32(pktin);
pf.dhost = dupprintf(".*s", hostsize, host);
pf.dhost = dupprintf("%.*s", hostsize, host);
pf.dport = port;
pfp = find234(ssh->rportfwds, &pf, NULL);

View File

@ -2901,7 +2901,7 @@ char *setup_fonts_ucs(struct gui_data *inst)
for (i = 0; i < 2; i++)
if (fonts[i])
unifont_destroy(fonts[i]);
return dupprintf("%s: unable to load wide font \"%s\"", fs->name);
return dupprintf("unable to load wide font \"%s\"", fs->name);
}
} else {
fonts[2] = NULL;
@ -2917,8 +2917,7 @@ char *setup_fonts_ucs(struct gui_data *inst)
for (i = 0; i < 3; i++)
if (fonts[i])
unifont_destroy(fonts[i]);
return dupprintf("%s: unable to load wide bold font \"%s\"",
fs->name);
return dupprintf("unable to load wide bold font \"%s\"", fs->name);
}
}

View File

@ -204,7 +204,7 @@ static char *get_ttychar(struct termios *t, int index)
cc_t c = t->c_cc[index];
#if defined(_POSIX_VDISABLE)
if (c == _POSIX_VDISABLE)
return dupprintf("");
return dupstr("");
#endif
return dupprintf("^<%d>", c);
}

View File

@ -938,7 +938,7 @@ static const char *pty_init(void *frontend, void **backend_handle, Conf *conf,
*backend_handle = pty;
*realhost = dupprintf("\0");
*realhost = dupstr("");
return NULL;
}