mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-21 04:55:02 -05:00
Debugging improvements. Started using Dave Hinton's dmemdump
function (woohoo!), improved that function so it provides an ASCII dump as well as hex (whee!), removed all remaining spurious \r in debug statements (ooh!), and made enabling of packet debugging in SSH a matter of one ifdef rather than lots (phew!). [originally from svn r1091]
This commit is contained in:
parent
d27112ea87
commit
f30937f737
10
misc.c
10
misc.c
@ -334,6 +334,7 @@ void dprintf(char *fmt, ...) {
|
|||||||
void debug_memdump (void *buf, int len, int L) {
|
void debug_memdump (void *buf, int len, int L) {
|
||||||
int i;
|
int i;
|
||||||
unsigned char *p = buf;
|
unsigned char *p = buf;
|
||||||
|
char foo[17];
|
||||||
if (L) {
|
if (L) {
|
||||||
int delta;
|
int delta;
|
||||||
dprintf ("\t%d (0x%x) bytes:\n", len, len);
|
dprintf ("\t%d (0x%x) bytes:\n", len, len);
|
||||||
@ -342,20 +343,25 @@ void debug_memdump (void *buf, int len, int L) {
|
|||||||
len += delta;
|
len += delta;
|
||||||
}
|
}
|
||||||
for (; 0 < len; p += 16, len -= 16) {
|
for (; 0 < len; p += 16, len -= 16) {
|
||||||
dputs ("\t");
|
dputs (" ");
|
||||||
if (L) dprintf ("%p: ", p);
|
if (L) dprintf ("%p: ", p);
|
||||||
|
strcpy(foo, "................"); /* sixteen dots */
|
||||||
for (i = 0; i < 16 && i < len; ++i) {
|
for (i = 0; i < 16 && i < len; ++i) {
|
||||||
if (&p[i] < (unsigned char *) buf) {
|
if (&p[i] < (unsigned char *) buf) {
|
||||||
dputs (" "); /* 3 spaces */
|
dputs (" "); /* 3 spaces */
|
||||||
|
foo[i] = ' ';
|
||||||
} else {
|
} else {
|
||||||
dprintf (
|
dprintf (
|
||||||
"%c%02.2x",
|
"%c%02.2x",
|
||||||
&p[i] != (unsigned char *) buf && i % 4 ? '.' : ' ',
|
&p[i] != (unsigned char *) buf && i % 4 ? '.' : ' ',
|
||||||
p[i]
|
p[i]
|
||||||
);
|
);
|
||||||
|
if (p[i] >= ' ' && p[i] <= '~')
|
||||||
|
foo[i] = (char)p[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dputs ("\n");
|
foo[i] = '\0';
|
||||||
|
dprintf("%*s%s\n", (16-i)*3+2, "", foo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
20
pageant.c
20
pageant.c
@ -1095,11 +1095,11 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
|
|||||||
if (mapname[cds->cbData - 1] != '\0')
|
if (mapname[cds->cbData - 1] != '\0')
|
||||||
return 0; /* failure to be ASCIZ! */
|
return 0; /* failure to be ASCIZ! */
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("mapname is :%s:\r\n", mapname));
|
debug(("mapname is :%s:\n", mapname));
|
||||||
#endif
|
#endif
|
||||||
filemap = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, mapname);
|
filemap = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, mapname);
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("filemap is %p\r\n", filemap));
|
debug(("filemap is %p\n", filemap));
|
||||||
#endif
|
#endif
|
||||||
if (filemap != NULL && filemap != INVALID_HANDLE_VALUE) {
|
if (filemap != NULL && filemap != INVALID_HANDLE_VALUE) {
|
||||||
int rc;
|
int rc;
|
||||||
@ -1108,7 +1108,7 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
|
|||||||
if ((proc = OpenProcess(MAXIMUM_ALLOWED, FALSE,
|
if ((proc = OpenProcess(MAXIMUM_ALLOWED, FALSE,
|
||||||
GetCurrentProcessId())) == NULL) {
|
GetCurrentProcessId())) == NULL) {
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("couldn't get handle for process\r\n"));
|
debug(("couldn't get handle for process\n"));
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1117,7 +1117,7 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
|
|||||||
&procowner, NULL, NULL, NULL,
|
&procowner, NULL, NULL, NULL,
|
||||||
&psd2) != ERROR_SUCCESS) {
|
&psd2) != ERROR_SUCCESS) {
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("couldn't get owner info for process\r\n"));
|
debug(("couldn't get owner info for process\n"));
|
||||||
#endif
|
#endif
|
||||||
CloseHandle(proc);
|
CloseHandle(proc);
|
||||||
return 0; /* unable to get security info */
|
return 0; /* unable to get security info */
|
||||||
@ -1128,30 +1128,30 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
|
|||||||
&mapowner, NULL, NULL, NULL,
|
&mapowner, NULL, NULL, NULL,
|
||||||
&psd1) != ERROR_SUCCESS)) {
|
&psd1) != ERROR_SUCCESS)) {
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("couldn't get owner info for filemap: %d\r\n", rc));
|
debug(("couldn't get owner info for filemap: %d\n", rc));
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("got security stuff\r\n"));
|
debug(("got security stuff\n"));
|
||||||
#endif
|
#endif
|
||||||
if (!EqualSid(mapowner, procowner))
|
if (!EqualSid(mapowner, procowner))
|
||||||
return 0; /* security ID mismatch! */
|
return 0; /* security ID mismatch! */
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("security stuff matched\r\n"));
|
debug(("security stuff matched\n"));
|
||||||
#endif
|
#endif
|
||||||
LocalFree(psd1);
|
LocalFree(psd1);
|
||||||
LocalFree(psd2);
|
LocalFree(psd2);
|
||||||
} else {
|
} else {
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("security APIs not present\r\n"));
|
debug(("security APIs not present\n"));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
p = MapViewOfFile(filemap, FILE_MAP_WRITE, 0, 0, 0);
|
p = MapViewOfFile(filemap, FILE_MAP_WRITE, 0, 0, 0);
|
||||||
#ifdef DEBUG_IPC
|
#ifdef DEBUG_IPC
|
||||||
debug(("p is %p\r\n", p));
|
debug(("p is %p\n", p));
|
||||||
{int i; for(i=0;i<5;i++)debug(("p[%d]=%02x\r\n", i, ((unsigned char *)p)[i]));}
|
{int i; for(i=0;i<5;i++)debug(("p[%d]=%02x\n", i, ((unsigned char *)p)[i]));}
|
||||||
#endif
|
#endif
|
||||||
answer_msg(p);
|
answer_msg(p);
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
89
ssh.c
89
ssh.c
@ -15,6 +15,9 @@
|
|||||||
#define TRUE 1
|
#define TRUE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* uncomment this for packet level debugging */
|
||||||
|
/* #define DUMP_PACKETS */
|
||||||
|
|
||||||
#define logevent(s) { logevent(s); \
|
#define logevent(s) { logevent(s); \
|
||||||
if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) \
|
if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) \
|
||||||
{ fprintf(stderr, "%s\n", s); fflush(stderr); } }
|
{ fprintf(stderr, "%s\n", s); fflush(stderr); } }
|
||||||
@ -487,11 +490,9 @@ next_packet:
|
|||||||
|
|
||||||
if (cipher)
|
if (cipher)
|
||||||
cipher->decrypt(pktin.data, st->biglen);
|
cipher->decrypt(pktin.data, st->biglen);
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
debug(("Got packet len=%d pad=%d\r\n", st->len, st->pad));
|
debug(("Got packet len=%d pad=%d\n", st->len, st->pad));
|
||||||
for (st->i = 0; st->i < st->biglen; st->i++)
|
dmemdump(pktin.data, st->biglen);
|
||||||
debug((" %02x", (unsigned char)pktin.data[st->i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
st->realcrc = crc32(pktin.data, st->biglen-4);
|
st->realcrc = crc32(pktin.data, st->biglen-4);
|
||||||
@ -506,14 +507,9 @@ next_packet:
|
|||||||
if (ssh1_compressing) {
|
if (ssh1_compressing) {
|
||||||
unsigned char *decompblk;
|
unsigned char *decompblk;
|
||||||
int decomplen;
|
int decomplen;
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
{
|
|
||||||
int i;
|
|
||||||
debug(("Packet payload pre-decompression:\n"));
|
debug(("Packet payload pre-decompression:\n"));
|
||||||
for (i = -1; i < pktin.length; i++)
|
dmemdump(pktin.body-1, pktin.length+1);
|
||||||
debug((" %02x", (unsigned char)pktin.body[i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
zlib_decompress_block(pktin.body-1, pktin.length+1,
|
zlib_decompress_block(pktin.body-1, pktin.length+1,
|
||||||
&decompblk, &decomplen);
|
&decompblk, &decomplen);
|
||||||
@ -529,14 +525,9 @@ next_packet:
|
|||||||
memcpy(pktin.body-1, decompblk, decomplen);
|
memcpy(pktin.body-1, decompblk, decomplen);
|
||||||
sfree(decompblk);
|
sfree(decompblk);
|
||||||
pktin.length = decomplen-1;
|
pktin.length = decomplen-1;
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
{
|
|
||||||
int i;
|
|
||||||
debug(("Packet payload post-decompression:\n"));
|
debug(("Packet payload post-decompression:\n"));
|
||||||
for (i = -1; i < pktin.length; i++)
|
dmemdump(pktin.body-1, pktin.length+1);
|
||||||
debug((" %02x", (unsigned char)pktin.body[i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -672,11 +663,9 @@ next_packet:
|
|||||||
sccipher->decrypt(pktin.data + st->cipherblk,
|
sccipher->decrypt(pktin.data + st->cipherblk,
|
||||||
st->packetlen - st->cipherblk);
|
st->packetlen - st->cipherblk);
|
||||||
|
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
debug(("Got packet len=%d pad=%d\r\n", st->len, st->pad));
|
debug(("Got packet len=%d pad=%d\n", st->len, st->pad));
|
||||||
for (st->i = 0; st->i < st->packetlen; st->i++)
|
dmemdump(pktin.data, st->packetlen);
|
||||||
debug((" %02x", (unsigned char)pktin.data[st->i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -705,11 +694,9 @@ next_packet:
|
|||||||
}
|
}
|
||||||
pktin.length = 5 + newlen;
|
pktin.length = 5 + newlen;
|
||||||
memcpy(pktin.data+5, newpayload, newlen);
|
memcpy(pktin.data+5, newpayload, newlen);
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
debug(("Post-decompression payload:\r\n"));
|
debug(("Post-decompression payload:\n"));
|
||||||
for (st->i = 0; st->i < newlen; st->i++)
|
dmemdump(pktin.data+5, newlen);
|
||||||
debug((" %02x", (unsigned char)pktin.data[5+st->i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sfree(newpayload);
|
sfree(newpayload);
|
||||||
@ -783,11 +770,9 @@ static int s_wrpkt_prepare(void) {
|
|||||||
|
|
||||||
pktout.body[-1] = pktout.type;
|
pktout.body[-1] = pktout.type;
|
||||||
|
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
debug(("Packet payload pre-compression:\n"));
|
debug(("Packet payload pre-compression:\n"));
|
||||||
for (i = -1; i < pktout.length; i++)
|
dmemdump(pktout.body-1, pktout.length+1);
|
||||||
debug((" %02x", (unsigned char)pktout.body[i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ssh1_compressing) {
|
if (ssh1_compressing) {
|
||||||
@ -798,11 +783,9 @@ static int s_wrpkt_prepare(void) {
|
|||||||
ssh1_pktout_size(complen-1);
|
ssh1_pktout_size(complen-1);
|
||||||
memcpy(pktout.body-1, compblk, complen);
|
memcpy(pktout.body-1, compblk, complen);
|
||||||
sfree(compblk);
|
sfree(compblk);
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
debug(("Packet payload post-compression:\n"));
|
debug(("Packet payload post-compression:\n"));
|
||||||
for (i = -1; i < pktout.length; i++)
|
dmemdump(pktout.body-1, pktout.length+1);
|
||||||
debug((" %02x", (unsigned char)pktout.body[i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -816,11 +799,9 @@ static int s_wrpkt_prepare(void) {
|
|||||||
PUT_32BIT(pktout.data+biglen, crc);
|
PUT_32BIT(pktout.data+biglen, crc);
|
||||||
PUT_32BIT(pktout.data, len);
|
PUT_32BIT(pktout.data, len);
|
||||||
|
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
debug(("Sending packet len=%d\r\n", biglen+4));
|
debug(("Sending packet len=%d\n", biglen+4));
|
||||||
for (i = 0; i < biglen+4; i++)
|
dmemdump(pktout.data, biglen+4);
|
||||||
debug((" %02x", (unsigned char)pktout.data[i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
if (cipher)
|
if (cipher)
|
||||||
cipher->encrypt(pktout.data+4, biglen);
|
cipher->encrypt(pktout.data+4, biglen);
|
||||||
@ -1058,11 +1039,9 @@ static int ssh2_pkt_construct(void) {
|
|||||||
/*
|
/*
|
||||||
* Compress packet payload.
|
* Compress packet payload.
|
||||||
*/
|
*/
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
debug(("Pre-compression payload:\r\n"));
|
debug(("Pre-compression payload:\n"));
|
||||||
for (i = 5; i < pktout.length; i++)
|
dmemdump(pktout.data+5, pktout.length-5);
|
||||||
debug((" %02x", (unsigned char)pktout.data[i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
unsigned char *newpayload;
|
unsigned char *newpayload;
|
||||||
@ -1094,11 +1073,9 @@ static int ssh2_pkt_construct(void) {
|
|||||||
outgoing_sequence);
|
outgoing_sequence);
|
||||||
outgoing_sequence++; /* whether or not we MACed */
|
outgoing_sequence++; /* whether or not we MACed */
|
||||||
|
|
||||||
#if 0
|
#ifdef DUMP_PACKETS
|
||||||
debug(("Sending packet len=%d\r\n", pktout.length+padding));
|
debug(("Sending packet len=%d\n", pktout.length+padding));
|
||||||
for (i = 0; i < pktout.length+padding; i++)
|
dmemdump(pktout.data, pktout.length+padding);
|
||||||
debug((" %02x", (unsigned char)pktout.data[i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (cscipher)
|
if (cscipher)
|
||||||
@ -1156,7 +1133,7 @@ void bndebug(char *string, Bignum b) {
|
|||||||
debug(("%s", string));
|
debug(("%s", string));
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
debug((" %02x", p[i]));
|
debug((" %02x", p[i]));
|
||||||
debug(("\r\n"));
|
debug(("\n"));
|
||||||
sfree(p);
|
sfree(p);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -2782,10 +2759,8 @@ static int do_ssh2_transport(unsigned char *in, int inlen, int ispkt)
|
|||||||
dh_cleanup();
|
dh_cleanup();
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
debug(("Exchange hash is:\r\n"));
|
debug(("Exchange hash is:\n"));
|
||||||
for (i = 0; i < 20; i++)
|
dmemdump(exchange_hash, 20);
|
||||||
debug((" %02x", exchange_hash[i]));
|
|
||||||
debug(("\r\n"));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
hkey = hostkey->newkey(hostkeydata, hostkeylen);
|
hkey = hostkey->newkey(hostkeydata, hostkeylen);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user