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