mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-24 16:52:24 +00:00
Oops, Ben is quite right about the rather appalling design of
filename_from_str. Here's a better fix, with some const repercussions too. [originally from svn r2768]
This commit is contained in:
parent
947b70006e
commit
bd16b29a7a
2
import.c
2
import.c
@ -66,7 +66,7 @@ int import_encrypted(const Filename *filename, int type, char **comment)
|
|||||||
{
|
{
|
||||||
if (type == SSH_KEYTYPE_OPENSSH) {
|
if (type == SSH_KEYTYPE_OPENSSH) {
|
||||||
/* OpenSSH doesn't do key comments */
|
/* OpenSSH doesn't do key comments */
|
||||||
*comment = dupstr(filename_to_str(*filename));
|
*comment = dupstr(filename_to_str(filename));
|
||||||
return openssh_encrypted(filename);
|
return openssh_encrypted(filename);
|
||||||
}
|
}
|
||||||
if (type == SSH_KEYTYPE_SSHCOM) {
|
if (type == SSH_KEYTYPE_SSHCOM) {
|
||||||
|
@ -146,7 +146,7 @@ void logfopen(void *handle)
|
|||||||
ctx->cfg.logtype == LGTYP_DEBUG ? "raw" :
|
ctx->cfg.logtype == LGTYP_DEBUG ? "raw" :
|
||||||
ctx->cfg.logtype == LGTYP_PACKETS ? "SSH packets" : "<ukwn>"));
|
ctx->cfg.logtype == LGTYP_PACKETS ? "SSH packets" : "<ukwn>"));
|
||||||
/* Make sure we do not exceed the output buffer size */
|
/* Make sure we do not exceed the output buffer size */
|
||||||
strncat(buf, filename_to_str(ctx->currlogfilename), 128);
|
strncat(buf, filename_to_str(&ctx->currlogfilename), 128);
|
||||||
buf[strlen(buf)] = '\0';
|
buf[strlen(buf)] = '\0';
|
||||||
logevent(ctx->frontend, buf);
|
logevent(ctx->frontend, buf);
|
||||||
}
|
}
|
||||||
@ -210,10 +210,11 @@ static void xlatlognam(Filename *dest, Filename src,
|
|||||||
int size;
|
int size;
|
||||||
char buffer[FILENAME_MAX];
|
char buffer[FILENAME_MAX];
|
||||||
int len = sizeof(buffer)-1;
|
int len = sizeof(buffer)-1;
|
||||||
char *d, *s;
|
char *d;
|
||||||
|
const char *s;
|
||||||
|
|
||||||
d = buffer;
|
d = buffer;
|
||||||
s = filename_to_str(src);
|
s = filename_to_str(&src);
|
||||||
|
|
||||||
while (*s) {
|
while (*s) {
|
||||||
/* Let (bufp, len) be the string to append. */
|
/* Let (bufp, len) be the string to append. */
|
||||||
@ -257,5 +258,5 @@ static void xlatlognam(Filename *dest, Filename src,
|
|||||||
}
|
}
|
||||||
*d = '\0';
|
*d = '\0';
|
||||||
|
|
||||||
*dest = filename_from_str(s);
|
*dest = filename_from_str(d);
|
||||||
}
|
}
|
||||||
|
10
mac/mac.c
10
mac/mac.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: mac.c,v 1.39 2003/02/01 15:44:08 ben Exp $ */
|
/* $Id: mac.c,v 1.40 2003/02/01 17:24:26 simon Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1999 Ben Harris
|
* Copyright (c) 1999 Ben Harris
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -801,7 +801,7 @@ void platform_get_x11_auth(char *display, int *proto,
|
|||||||
/* SGT: I have no idea whether Mac X servers need anything here. */
|
/* SGT: I have no idea whether Mac X servers need anything here. */
|
||||||
}
|
}
|
||||||
|
|
||||||
Filename filename_from_str(char *str)
|
Filename filename_from_str(const char *str)
|
||||||
{
|
{
|
||||||
Filename ret;
|
Filename ret;
|
||||||
strncpy(ret.path, str, sizeof(ret.path));
|
strncpy(ret.path, str, sizeof(ret.path));
|
||||||
@ -809,11 +809,9 @@ Filename filename_from_str(char *str)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *filename_to_str(Filename fn)
|
const char *filename_to_str(const Filename *fn)
|
||||||
{
|
{
|
||||||
/* FIXME: Memory leak! */
|
return fn->path;
|
||||||
|
|
||||||
return dupstr(fn.path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int filename_equal(Filename f1, Filename f2)
|
int filename_equal(Filename f1, Filename f2)
|
||||||
|
3
plink.c
3
plink.c
@ -166,7 +166,8 @@ void try_output(int is_stderr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int from_backend(void *frontend_handle, int is_stderr, char *data, int len)
|
int from_backend(void *frontend_handle, int is_stderr,
|
||||||
|
const char *data, int len)
|
||||||
{
|
{
|
||||||
int osize, esize;
|
int osize, esize;
|
||||||
|
|
||||||
|
2
psftp.c
2
psftp.c
@ -1528,7 +1528,7 @@ static unsigned char *outptr; /* where to put the data */
|
|||||||
static unsigned outlen; /* how much data required */
|
static unsigned outlen; /* how much data required */
|
||||||
static unsigned char *pending = NULL; /* any spare data */
|
static unsigned char *pending = NULL; /* any spare data */
|
||||||
static unsigned pendlen = 0, pendsize = 0; /* length and phys. size of buffer */
|
static unsigned pendlen = 0, pendsize = 0; /* length and phys. size of buffer */
|
||||||
int from_backend(void *frontend, int is_stderr, char *data, int datalen)
|
int from_backend(void *frontend, int is_stderr, const char *data, int datalen)
|
||||||
{
|
{
|
||||||
unsigned char *p = (unsigned char *) data;
|
unsigned char *p = (unsigned char *) data;
|
||||||
unsigned len = (unsigned) datalen;
|
unsigned len = (unsigned) datalen;
|
||||||
|
6
putty.h
6
putty.h
@ -597,7 +597,7 @@ int term_ldisc(Terminal *, int option);
|
|||||||
void term_copyall(Terminal *);
|
void term_copyall(Terminal *);
|
||||||
void term_reconfig(Terminal *, Config *);
|
void term_reconfig(Terminal *, Config *);
|
||||||
void term_seen_key_event(Terminal *);
|
void term_seen_key_event(Terminal *);
|
||||||
int from_backend(void *, int is_stderr, char *data, int len);
|
int from_backend(void *, int is_stderr, const char *data, int len);
|
||||||
void term_provide_resize_fn(Terminal *term,
|
void term_provide_resize_fn(Terminal *term,
|
||||||
void (*resize_fn)(void *, int, int),
|
void (*resize_fn)(void *, int, int),
|
||||||
void *resize_ctx);
|
void *resize_ctx);
|
||||||
@ -790,8 +790,8 @@ extern const char *const x11_authnames[]; /* declared in x11fwd.c */
|
|||||||
/*
|
/*
|
||||||
* Miscellaneous exports from the platform-specific code.
|
* Miscellaneous exports from the platform-specific code.
|
||||||
*/
|
*/
|
||||||
Filename filename_from_str(char *string);
|
Filename filename_from_str(const char *string);
|
||||||
char *filename_to_str(Filename fn);
|
const char *filename_to_str(const Filename *fn);
|
||||||
int filename_equal(Filename f1, Filename f2);
|
int filename_equal(Filename f1, Filename f2);
|
||||||
int filename_is_null(Filename fn);
|
int filename_is_null(Filename fn);
|
||||||
|
|
||||||
|
2
scp.c
2
scp.c
@ -317,7 +317,7 @@ static unsigned char *outptr; /* where to put the data */
|
|||||||
static unsigned outlen; /* how much data required */
|
static unsigned outlen; /* how much data required */
|
||||||
static unsigned char *pending = NULL; /* any spare data */
|
static unsigned char *pending = NULL; /* any spare data */
|
||||||
static unsigned pendlen = 0, pendsize = 0; /* length and phys. size of buffer */
|
static unsigned pendlen = 0, pendsize = 0; /* length and phys. size of buffer */
|
||||||
int from_backend(void *frontend, int is_stderr, char *data, int datalen)
|
int from_backend(void *frontend, int is_stderr, const char *data, int datalen)
|
||||||
{
|
{
|
||||||
unsigned char *p = (unsigned char *) data;
|
unsigned char *p = (unsigned char *) data;
|
||||||
unsigned len = (unsigned) datalen;
|
unsigned len = (unsigned) datalen;
|
||||||
|
8
ssh.c
8
ssh.c
@ -734,7 +734,7 @@ static int alloc_channel_id(Ssh ssh)
|
|||||||
return low + 1 + CHANNEL_NUMBER_OFFSET;
|
return low + 1 + CHANNEL_NUMBER_OFFSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void c_write(Ssh ssh, char *buf, int len)
|
static void c_write(Ssh ssh, const char *buf, int len)
|
||||||
{
|
{
|
||||||
if ((flags & FLAG_STDERR)) {
|
if ((flags & FLAG_STDERR)) {
|
||||||
int i;
|
int i;
|
||||||
@ -746,7 +746,7 @@ static void c_write(Ssh ssh, char *buf, int len)
|
|||||||
from_backend(ssh->frontend, 1, buf, len);
|
from_backend(ssh->frontend, 1, buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void c_write_untrusted(Ssh ssh, char *buf, int len)
|
static void c_write_untrusted(Ssh ssh, const char *buf, int len)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
@ -757,7 +757,7 @@ static void c_write_untrusted(Ssh ssh, char *buf, int len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void c_write_str(Ssh ssh, char *buf)
|
static void c_write_str(Ssh ssh, const char *buf)
|
||||||
{
|
{
|
||||||
c_write(ssh, buf, strlen(buf));
|
c_write(ssh, buf, strlen(buf));
|
||||||
}
|
}
|
||||||
@ -2721,7 +2721,7 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen, int ispkt)
|
|||||||
int ret = loadrsakey(&ssh->cfg.keyfile, &s->key, s->password);
|
int ret = loadrsakey(&ssh->cfg.keyfile, &s->key, s->password);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
c_write_str(ssh, "Couldn't load private key from ");
|
c_write_str(ssh, "Couldn't load private key from ");
|
||||||
c_write_str(ssh, filename_to_str(ssh->cfg.keyfile));
|
c_write_str(ssh, filename_to_str(&ssh->cfg.keyfile));
|
||||||
c_write_str(ssh, ".\r\n");
|
c_write_str(ssh, ".\r\n");
|
||||||
continue; /* go and try password */
|
continue; /* go and try password */
|
||||||
}
|
}
|
||||||
|
@ -4602,7 +4602,7 @@ int term_ldisc(Terminal *term, int option)
|
|||||||
/*
|
/*
|
||||||
* from_backend(), to get data from the backend for the terminal.
|
* from_backend(), to get data from the backend for the terminal.
|
||||||
*/
|
*/
|
||||||
int from_backend(void *vterm, int is_stderr, char *data, int len)
|
int from_backend(void *vterm, int is_stderr, const char *data, int len)
|
||||||
{
|
{
|
||||||
Terminal *term = (Terminal *)vterm;
|
Terminal *term = (Terminal *)vterm;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ unsigned long getticks(void)
|
|||||||
return tv.tv_sec * 1000000 + tv.tv_usec;
|
return tv.tv_sec * 1000000 + tv.tv_usec;
|
||||||
}
|
}
|
||||||
|
|
||||||
Filename filename_from_str(char *str)
|
Filename filename_from_str(const char *str)
|
||||||
{
|
{
|
||||||
Filename ret;
|
Filename ret;
|
||||||
strncpy(ret.path, str, sizeof(ret.path));
|
strncpy(ret.path, str, sizeof(ret.path));
|
||||||
@ -26,9 +26,9 @@ Filename filename_from_str(char *str)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *filename_to_str(Filename fn)
|
const char *filename_to_str(const Filename *fn)
|
||||||
{
|
{
|
||||||
return fn.path;
|
return fn->path;
|
||||||
}
|
}
|
||||||
|
|
||||||
int filename_equal(Filename f1, Filename f2)
|
int filename_equal(Filename f1, Filename f2)
|
||||||
|
@ -208,7 +208,8 @@ void try_output(int is_stderr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int from_backend(void *frontend_handle, int is_stderr, char *data, int len)
|
int from_backend(void *frontend_handle, int is_stderr,
|
||||||
|
const char *data, int len)
|
||||||
{
|
{
|
||||||
int osize, esize;
|
int osize, esize;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ void platform_get_x11_auth(char *display, int *proto,
|
|||||||
/* We don't support this at all under Windows. */
|
/* We don't support this at all under Windows. */
|
||||||
}
|
}
|
||||||
|
|
||||||
Filename filename_from_str(char *str)
|
Filename filename_from_str(const char *str)
|
||||||
{
|
{
|
||||||
Filename ret;
|
Filename ret;
|
||||||
strncpy(ret.path, str, sizeof(ret.path));
|
strncpy(ret.path, str, sizeof(ret.path));
|
||||||
@ -21,9 +21,9 @@ Filename filename_from_str(char *str)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *filename_to_str(Filename fn)
|
const char *filename_to_str(const Filename *fn)
|
||||||
{
|
{
|
||||||
return fn.path;
|
return fn->path;
|
||||||
}
|
}
|
||||||
|
|
||||||
int filename_equal(Filename f1, Filename f2)
|
int filename_equal(Filename f1, Filename f2)
|
||||||
|
Loading…
Reference in New Issue
Block a user