projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
radioline() was broken after the portable-dialog stuff got added, so
[u/mdw/putty]
/
pageant.c
diff --git
a/pageant.c
b/pageant.c
index
b8a4bd8
..
c401ea5
100644
(file)
--- a/
pageant.c
+++ b/
pageant.c
@@
-12,6
+12,7
@@
#include <assert.h>
#include <tchar.h>
#include <assert.h>
#include <tchar.h>
+#include "putty.h"
#include "ssh.h"
#include "misc.h"
#include "tree234.h"
#include "ssh.h"
#include "misc.h"
#include "tree234.h"
@@
-65,13
+66,14
@@
static int initial_menuitems_count;
void modalfatalbox(char *fmt, ...)
{
va_list ap;
void modalfatalbox(char *fmt, ...)
{
va_list ap;
- char
stuff[200]
;
+ char
*buf
;
va_start(ap, fmt);
va_start(ap, fmt);
-
vsprintf(stuff,
fmt, ap);
+
buf = dupvprintf(
fmt, ap);
va_end(ap);
va_end(ap);
- MessageBox(main_hwnd,
stuf
f, "Pageant Fatal Error",
+ MessageBox(main_hwnd,
bu
f, "Pageant Fatal Error",
MB_SYSTEMMODAL | MB_ICONERROR | MB_OK);
MB_SYSTEMMODAL | MB_ICONERROR | MB_OK);
+ sfree(buf);
exit(1);
}
exit(1);
}
@@
-229,7
+231,7
@@
static int CALLBACK AboutProc(HWND hwnd, UINT msg,
return 0;
case 101:
EnableWindow(hwnd, 0);
return 0;
case 101:
EnableWindow(hwnd, 0);
- DialogBox(instance, MAKEINTRESOURCE(214),
NULL
, LicenceProc);
+ DialogBox(instance, MAKEINTRESOURCE(214),
hwnd
, LicenceProc);
EnableWindow(hwnd, 1);
SetActiveWindow(hwnd);
return 0;
EnableWindow(hwnd, 1);
SetActiveWindow(hwnd);
return 0;
@@
-389,7
+391,7
@@
static void keylist_update(void)
/*
* This function loads a key from a file and adds it.
*/
/*
* This function loads a key from a file and adds it.
*/
-static void add_keyfile(
char *
filename)
+static void add_keyfile(
Filename
filename)
{
char passphrase[PASSPHRASE_MAXLEN];
struct RSAKey *rkey = NULL;
{
char passphrase[PASSPHRASE_MAXLEN];
struct RSAKey *rkey = NULL;
@@
-402,7
+404,7
@@
static void add_keyfile(char *filename)
int type;
int original_pass;
int type;
int original_pass;
- type = key_type(filename);
+ type = key_type(
&
filename);
if (type != SSH_KEYTYPE_SSH1 && type != SSH_KEYTYPE_SSH2) {
char msg[256];
sprintf(msg, "Couldn't load this key (%s)", key_type_to_str(type));
if (type != SSH_KEYTYPE_SSH1 && type != SSH_KEYTYPE_SSH2) {
char msg[256];
sprintf(msg, "Couldn't load this key (%s)", key_type_to_str(type));
@@
-420,7
+422,7
@@
static void add_keyfile(char *filename)
int i, nkeys, bloblen;
if (type == SSH_KEYTYPE_SSH1) {
int i, nkeys, bloblen;
if (type == SSH_KEYTYPE_SSH1) {
- if (!rsakey_pubblob(filename, &blob, &bloblen)) {
+ if (!rsakey_pubblob(
&
filename, &blob, &bloblen)) {
MessageBox(NULL, "Couldn't load private key.", APPNAME,
MB_OK | MB_ICONERROR);
return;
MessageBox(NULL, "Couldn't load private key.", APPNAME,
MB_OK | MB_ICONERROR);
return;
@@
-428,14
+430,14
@@
static void add_keyfile(char *filename)
keylist = get_keylist1();
} else {
unsigned char *blob2;
keylist = get_keylist1();
} else {
unsigned char *blob2;
- blob = ssh2_userkey_loadpub(filename, NULL, &bloblen);
+ blob = ssh2_userkey_loadpub(
&
filename, NULL, &bloblen);
if (!blob) {
MessageBox(NULL, "Couldn't load private key.", APPNAME,
MB_OK | MB_ICONERROR);
return;
}
/* For our purposes we want the blob prefixed with its length */
if (!blob) {
MessageBox(NULL, "Couldn't load private key.", APPNAME,
MB_OK | MB_ICONERROR);
return;
}
/* For our purposes we want the blob prefixed with its length */
- blob2 = s
malloc(bloblen+4
);
+ blob2 = s
newn(bloblen+4, unsigned char
);
PUT_32BIT(blob2, bloblen);
memcpy(blob2 + 4, blob, bloblen);
sfree(blob);
PUT_32BIT(blob2, bloblen);
memcpy(blob2 + 4, blob, bloblen);
sfree(blob);
@@
-470,12
+472,12
@@
static void add_keyfile(char *filename)
}
if (type == SSH_KEYTYPE_SSH1)
}
if (type == SSH_KEYTYPE_SSH1)
- needs_pass = rsakey_encrypted(filename, &comment);
+ needs_pass = rsakey_encrypted(
&
filename, &comment);
else
else
- needs_pass = ssh2_userkey_encrypted(filename, &comment);
+ needs_pass = ssh2_userkey_encrypted(
&
filename, &comment);
attempts = 0;
if (type == SSH_KEYTYPE_SSH1)
attempts = 0;
if (type == SSH_KEYTYPE_SSH1)
- rkey = s
malloc(sizeof(*rkey)
);
+ rkey = s
new(struct RSAKey
);
pps.passphrase = passphrase;
pps.comment = comment;
original_pass = 0;
pps.passphrase = passphrase;
pps.comment = comment;
original_pass = 0;
@@
-502,9
+504,9
@@
static void add_keyfile(char *filename)
} else
*passphrase = '\0';
if (type == SSH_KEYTYPE_SSH1)
} else
*passphrase = '\0';
if (type == SSH_KEYTYPE_SSH1)
- ret = loadrsakey(filename, rkey, passphrase);
+ ret = loadrsakey(
&
filename, rkey, passphrase);
else {
else {
- skey = ssh2_load_userkey(filename, passphrase);
+ skey = ssh2_load_userkey(
&
filename, passphrase);
if (skey == SSH2_WRONG_PASSPHRASE)
ret = -1;
else if (!skey)
if (skey == SSH2_WRONG_PASSPHRASE)
ret = -1;
else if (!skey)
@@
-548,7
+550,7
@@
static void add_keyfile(char *filename)
ssh1_bignum_length(rkey->q) + 4 + clen /* comment */
;
ssh1_bignum_length(rkey->q) + 4 + clen /* comment */
;
- request = s
malloc(reqlen
);
+ request = s
newn(reqlen, unsigned char
);
request[4] = SSH1_AGENTC_ADD_RSA_IDENTITY;
reqlen = 5;
request[4] = SSH1_AGENTC_ADD_RSA_IDENTITY;
reqlen = 5;
@@
-596,7
+598,7
@@
static void add_keyfile(char *filename)
4 + clen /* comment */
;
4 + clen /* comment */
;
- request = s
malloc(reqlen
);
+ request = s
newn(reqlen, unsigned char
);
request[4] = SSH2_AGENTC_ADD_IDENTITY;
reqlen = 5;
request[4] = SSH2_AGENTC_ADD_IDENTITY;
reqlen = 5;
@@
-655,7
+657,7
@@
static void *make_keylist1(int *length)
}
/* Allocate the buffer. */
}
/* Allocate the buffer. */
- p = ret = s
malloc(len
);
+ p = ret = s
newn(len, unsigned char
);
if (length) *length = len;
PUT_32BIT(p, nkeys);
if (length) *length = len;
PUT_32BIT(p, nkeys);
@@
-700,7
+702,7
@@
static void *make_keylist2(int *length)
}
/* Allocate the buffer. */
}
/* Allocate the buffer. */
- p = ret = s
malloc(len
);
+ p = ret = s
newn(len, unsigned char
);
if (length) *length = len;
/*
if (length) *length = len;
/*
@@
-746,7
+748,7
@@
static void *get_keylist1(void)
if (resplen < 5 || response[4] != SSH1_AGENT_RSA_IDENTITIES_ANSWER)
return NULL;
if (resplen < 5 || response[4] != SSH1_AGENT_RSA_IDENTITIES_ANSWER)
return NULL;
- ret = s
malloc(resplen-5
);
+ ret = s
newn(resplen-5, unsigned char
);
memcpy(ret, response+5, resplen-5);
sfree(response);
} else {
memcpy(ret, response+5, resplen-5);
sfree(response);
} else {
@@
-777,7
+779,7
@@
static void *get_keylist2(void)
if (resplen < 5 || response[4] != SSH2_AGENT_IDENTITIES_ANSWER)
return NULL;
if (resplen < 5 || response[4] != SSH2_AGENT_IDENTITIES_ANSWER)
return NULL;
- ret = s
malloc(resplen-5
);
+ ret = s
newn(resplen-5, unsigned char
);
memcpy(ret, response+5, resplen-5);
sfree(response);
} else {
memcpy(ret, response+5, resplen-5);
sfree(response);
} else {
@@
-929,7
+931,7
@@
static void answer_msg(void *msg)
struct RSAKey *key;
char *comment;
int commentlen;
struct RSAKey *key;
char *comment;
int commentlen;
- key = s
malloc(sizeof(struct RSAKey)
);
+ key = s
new(struct RSAKey
);
memset(key, 0, sizeof(struct RSAKey));
p += makekey(p, key, NULL, 1);
p += makeprivate(p, key);
memset(key, 0, sizeof(struct RSAKey));
p += makekey(p, key, NULL, 1);
p += makeprivate(p, key);
@@
-937,7
+939,7
@@
static void answer_msg(void *msg)
p += ssh1_read_bignum(p, &key->p); /* p */
p += ssh1_read_bignum(p, &key->q); /* q */
commentlen = GET_32BIT(p);
p += ssh1_read_bignum(p, &key->p); /* p */
p += ssh1_read_bignum(p, &key->q); /* q */
commentlen = GET_32BIT(p);
- comment = s
malloc(commentlen+1
);
+ comment = s
newn(commentlen+1, char
);
if (comment) {
memcpy(comment, p + 4, commentlen);
comment[commentlen] = '\0';
if (comment) {
memcpy(comment, p + 4, commentlen);
comment[commentlen] = '\0';
@@
-965,7
+967,7
@@
static void answer_msg(void *msg)
int alglen, commlen;
int bloblen;
int alglen, commlen;
int bloblen;
- key = s
malloc(sizeof(struct ssh2_userkey)
);
+ key = s
new(struct ssh2_userkey
);
alglen = GET_32BIT(p);
p += 4;
alglen = GET_32BIT(p);
p += 4;
@@
-993,7
+995,7
@@
static void answer_msg(void *msg)
commlen = GET_32BIT(p);
p += 4;
commlen = GET_32BIT(p);
p += 4;
- comment = s
malloc(commlen + 1
);
+ comment = s
newn(commlen + 1, char
);
if (comment) {
memcpy(comment, p, commlen);
comment[commlen] = '\0';
if (comment) {
memcpy(comment, p, commlen);
comment[commlen] = '\0';
@@
-1238,7
+1240,7
@@
static void prompt_add_keyfile(void)
{
OPENFILENAME of;
char filename[FILENAME_MAX];
{
OPENFILENAME of;
char filename[FILENAME_MAX];
- char *filelist = s
malloc(8192
);
+ char *filelist = s
newn(8192, char
);
char *filewalker;
int n, dirlen;
char *filewalker;
int n, dirlen;
@@
-1249,7
+1251,8
@@
static void prompt_add_keyfile(void)
of.lStructSize = sizeof(of);
#endif
of.hwndOwner = main_hwnd;
of.lStructSize = sizeof(of);
#endif
of.hwndOwner = main_hwnd;
- of.lpstrFilter = "PuTTY Private Key Files\0*.PPK\0AllFiles\0*\0\0\0";
+ of.lpstrFilter = "PuTTY Private Key Files (*.ppk)\0*.ppk\0"
+ "All Files (*.*)\0*\0\0\0";
of.lpstrCustomFilter = NULL;
of.nFilterIndex = 1;
of.lpstrFile = filelist;
of.lpstrCustomFilter = NULL;
of.nFilterIndex = 1;
of.lpstrFile = filelist;
@@
-1262,7
+1265,7
@@
static void prompt_add_keyfile(void)
if (GetOpenFileName(&of)) {
if(strlen(filelist) > of.nFileOffset)
/* Only one filename returned? */
if (GetOpenFileName(&of)) {
if(strlen(filelist) > of.nFileOffset)
/* Only one filename returned? */
- add_keyfile(file
list
);
+ add_keyfile(file
name_from_str(filelist)
);
else {
/* we are returned a bunch of strings, end to
* end. first string is the directory, the
else {
/* we are returned a bunch of strings, end to
* end. first string is the directory, the
@@
-1290,7
+1293,7
@@
static void prompt_add_keyfile(void)
memcpy(filename + dirlen, filewalker, n);
filewalker += n;
memcpy(filename + dirlen, filewalker, n);
filewalker += n;
- add_keyfile(filename);
+ add_keyfile(filename
_from_str(filename)
);
}
}
}
}
@@
-1384,7
+1387,7
@@
static int CALLBACK KeyListProc(HWND hwnd, UINT msg,
}
/* get item indices in an array */
}
/* get item indices in an array */
- selectedArray = s
malloc(numSelected * sizeof(int)
);
+ selectedArray = s
newn(numSelected, int
);
SendDlgItemMessage(hwnd, 100, LB_GETSELITEMS,
numSelected, (WPARAM)selectedArray);
SendDlgItemMessage(hwnd, 100, LB_GETSELITEMS,
numSelected, (WPARAM)selectedArray);
@@
-1781,10
+1784,11
@@
void spawn_cmd(char *cmdline, char * args, int show)
{
if (ShellExecute(NULL, _T("open"), cmdline,
args, NULL, show) <= (HINSTANCE) 32) {
{
if (ShellExecute(NULL, _T("open"), cmdline,
args, NULL, show) <= (HINSTANCE) 32) {
- TCHAR sMsg[140];
- sprintf(sMsg, _T("Failed to run \"%.100s\", Error: %d"), cmdline,
- (int)GetLastError());
- MessageBox(NULL, sMsg, APPNAME, MB_OK | MB_ICONEXCLAMATION);
+ char *msg;
+ msg = dupprintf("Failed to run \"%.100s\", Error: %d", cmdline,
+ (int)GetLastError());
+ MessageBox(NULL, msg, APPNAME, MB_OK | MB_ICONEXCLAMATION);
+ sfree(msg);
}
}
}
}
@@
-1965,7
+1969,7
@@
int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
command = "";
break;
} else {
command = "";
break;
} else {
- add_keyfile(
argv[i]
);
+ add_keyfile(
filename_from_str(argv[i])
);
added_keys = TRUE;
}
}
added_keys = TRUE;
}
}