Merge pull request #151 from rdebath/patch-3

Hexdump for verbose mode.
This commit is contained in:
yrutschle 2017-11-24 13:55:53 +01:00 committed by GitHub
commit e66e443d5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

21
probe.c
View File

@ -107,25 +107,25 @@ void hexdump(const char *mem, unsigned int len)
{
/* print offset */
if(i % HEXDUMP_COLS == 0)
printf("0x%06x: ", i);
fprintf(stderr, "0x%06x: ", i);
/* print hex data */
if(i < len)
printf("%02x ", 0xFF & mem[i]);
fprintf(stderr, "%02x ", 0xFF & mem[i]);
else /* end of block, just aligning for ASCII dump */
printf(" ");
fprintf(stderr, " ");
/* print ASCII dump */
if(i % HEXDUMP_COLS == (HEXDUMP_COLS - 1)) {
for(j = i - (HEXDUMP_COLS - 1); j <= i; j++) {
if(j >= len) /* end of block, not really printing */
putchar(' ');
fputc(' ', stderr);
else if(isprint(mem[j])) /* printable char */
putchar(0xFF & mem[j]);
fputc(0xFF & mem[j], stderr);
else /* other char */
putchar('.');
fputc('.', stderr);
}
putchar('\n');
fputc('\n', stderr);
}
}
}
@ -297,6 +297,13 @@ int probe_client_protocol(struct connection *cnx)
* happens, we just connect to the default protocol so the caller of this
* function does not have to deal with a specific failure condition (the
* connection will just fail later normally). */
/* Dump hex values of the packet */
if (verbose) {
fprintf(stderr, "hexdump of incoming packet:\n");
hexdump(buffer, n);
}
if (n > 0) {
int res = PROBE_NEXT;