When extracting the capture buffer from a crashdump, only read the valid
portion of the capture buffer (db_capture_bufoff vs db_capture_bufsize). This could result in outputting garbage (e.g. lots of 'p' characters if DIAGNOSTIC is enabled) after the end of the capture buffer. While here, fix a spelling nit. Reported by: Mikolaj Golub to my trociny of gmail MFC after: 3 days
This commit is contained in:
parent
e5310f3310
commit
742765c971
@ -95,24 +95,24 @@ kread_symbol(kvm_t *kvm, int index, void *address, size_t size,
|
||||
static void
|
||||
ddb_capture_print_kvm(kvm_t *kvm)
|
||||
{
|
||||
u_int db_capture_bufsize;
|
||||
u_int db_capture_bufoff;
|
||||
char *buffer, *db_capture_buf;
|
||||
|
||||
if (kread_symbol(kvm, X_DB_CAPTURE_BUF, &db_capture_buf,
|
||||
sizeof(db_capture_buf), 0) < 0)
|
||||
errx(-1, "kvm: unable to read db_capture_buf");
|
||||
|
||||
if (kread_symbol(kvm, X_DB_CAPTURE_BUFSIZE, &db_capture_bufsize,
|
||||
sizeof(db_capture_bufsize), 0) < 0)
|
||||
errx(-1, "kvm: unable to read db_capture_bufsize");
|
||||
if (kread_symbol(kvm, X_DB_CAPTURE_BUFOFF, &db_capture_bufoff,
|
||||
sizeof(db_capture_bufoff), 0) < 0)
|
||||
errx(-1, "kvm: unable to read db_capture_bufoff");
|
||||
|
||||
buffer = malloc(db_capture_bufsize + 1);
|
||||
buffer = malloc(db_capture_bufoff + 1);
|
||||
if (buffer == NULL)
|
||||
err(-1, "malloc: db_capture_bufsize (%u)",
|
||||
db_capture_bufsize);
|
||||
bzero(buffer, db_capture_bufsize + 1);
|
||||
err(-1, "malloc: db_capture_bufoff (%u)",
|
||||
db_capture_bufoff);
|
||||
bzero(buffer, db_capture_bufoff + 1);
|
||||
|
||||
if (kread(kvm, db_capture_buf, buffer, db_capture_bufsize, 0) < 0)
|
||||
if (kread(kvm, db_capture_buf, buffer, db_capture_bufoff, 0) < 0)
|
||||
errx(-1, "kvm: unable to read buffer");
|
||||
|
||||
printf("%s\n", buffer);
|
||||
@ -161,7 +161,7 @@ ddb_capture_status_kvm(kvm_t *kvm)
|
||||
errx(-1, "kvm: unable to read db_capture_bufsize");
|
||||
if (kread_symbol(kvm, X_DB_CAPTURE_INPROGRESS,
|
||||
&db_capture_inprogress, sizeof(db_capture_inprogress), 0) < 0)
|
||||
err(-1, "kvm: unable to read db_capture_inpgoress");
|
||||
err(-1, "kvm: unable to read db_capture_inprogress");
|
||||
printf("%u/%u bytes used\n", db_capture_bufoff, db_capture_bufsize);
|
||||
if (db_capture_inprogress)
|
||||
printf("capture is on\n");
|
||||
|
Loading…
Reference in New Issue
Block a user