1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-15 01:57:40 -05:00

Giant const-correctness patch of doom!

Having found a lot of unfixed constness issues in recent development,
I thought perhaps it was time to get proactive, so I compiled the
whole codebase with -Wwrite-strings. That turned up a huge load of
const problems, which I've fixed in this commit: the Unix build now
goes cleanly through with -Wwrite-strings, and the Windows build is as
close as I could get it (there are some lingering issues due to
occasional Windows API functions like AcquireCredentialsHandle not
having the right constness).

Notable fallout beyond the purely mechanical changing of types:
 - the stuff saved by cmdline_save_param() is now explicitly
   dupstr()ed, and freed in cmdline_run_saved.
 - I couldn't make both string arguments to cmdline_process_param()
   const, because it intentionally writes to one of them in the case
   where it's the argument to -pw (in the vain hope of being at least
   slightly friendly to 'ps'), so elsewhere I had to temporarily
   dupstr() something for the sake of passing it to that function
 - I had to invent a silly parallel version of const_cmp() so I could
   pass const string literals in to lookup functions.
 - stripslashes() in pscp.c and psftp.c has the annoying strchr nature
This commit is contained in:
Simon Tatham
2015-05-15 11:15:42 +01:00
parent fb4fbe1158
commit 89da2ddf56
65 changed files with 559 additions and 450 deletions

View File

@ -68,7 +68,7 @@ Filename *platform_default_filename(const char *name)
char *get_ttymode(void *frontend, const char *mode) { return NULL; }
int get_userpass_input(prompts_t *p, unsigned char *in, int inlen)
int get_userpass_input(prompts_t *p, const unsigned char *in, int inlen)
{
int ret;
ret = cmdline_get_passwd_input(p, in, inlen);
@ -120,7 +120,7 @@ struct RFile {
int fd;
};
RFile *open_existing_file(char *name, uint64 *size,
RFile *open_existing_file(const char *name, uint64 *size,
unsigned long *mtime, unsigned long *atime,
long *perms)
{
@ -174,7 +174,7 @@ struct WFile {
char *name;
};
WFile *open_new_file(char *name, long perms)
WFile *open_new_file(const char *name, long perms)
{
int fd;
WFile *ret;
@ -192,7 +192,7 @@ WFile *open_new_file(char *name, long perms)
}
WFile *open_existing_wfile(char *name, uint64 *size)
WFile *open_existing_wfile(const char *name, uint64 *size)
{
int fd;
WFile *ret;
@ -298,7 +298,7 @@ uint64 get_file_posn(WFile *f)
return ret;
}
int file_type(char *name)
int file_type(const char *name)
{
struct stat statbuf;
@ -321,7 +321,7 @@ struct DirHandle {
DIR *dir;
};
DirHandle *open_directory(char *name)
DirHandle *open_directory(const char *name)
{
DIR *dir;
DirHandle *ret;
@ -356,7 +356,7 @@ void close_directory(DirHandle *dir)
sfree(dir);
}
int test_wildcard(char *name, int cmdline)
int test_wildcard(const char *name, int cmdline)
{
struct stat statbuf;
@ -390,7 +390,7 @@ struct WildcardMatcher {
glob_t globbed;
int i;
};
WildcardMatcher *begin_wildcard_matching(char *name) {
WildcardMatcher *begin_wildcard_matching(const char *name) {
WildcardMatcher *ret = snew(WildcardMatcher);
if (glob(name, 0, NULL, &ret->globbed) < 0) {
@ -413,7 +413,7 @@ void finish_wildcard_matching(WildcardMatcher *dir) {
sfree(dir);
}
int vet_filename(char *name)
int vet_filename(const char *name)
{
if (strchr(name, '/'))
return FALSE;
@ -424,12 +424,12 @@ int vet_filename(char *name)
return TRUE;
}
int create_directory(char *name)
int create_directory(const char *name)
{
return mkdir(name, 0777) == 0;
}
char *dir_file_cat(char *dir, char *file)
char *dir_file_cat(const char *dir, const char *file)
{
return dupcat(dir, "/", file, NULL);
}
@ -559,7 +559,7 @@ int ssh_sftp_loop_iteration(void)
/*
* Read a PSFTP command line from stdin.
*/
char *ssh_sftp_get_cmdline(char *prompt, int no_fds_ok)
char *ssh_sftp_get_cmdline(const char *prompt, int no_fds_ok)
{
char *buf;
int buflen, bufsize, ret;