From c4b1628e07bbc09ad531852c8affea7a5e352a77 Mon Sep 17 00:00:00 2001 From: Craig Rodrigues Date: Thu, 25 Jan 2007 06:39:25 +0000 Subject: Try to avoid a possible infinite loop when parsing an invalid kernel dump file. PR: 108229 Submitted by: Jessica Han Reviewed by: marcel MFC after: 1 week --- gnu/usr.bin/gdb/kgdb/kthr.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'gnu/usr.bin') diff --git a/gnu/usr.bin/gdb/kgdb/kthr.c b/gnu/usr.bin/gdb/kgdb/kthr.c index 02f9a20994c4..37ecad2c2639 100644 --- a/gnu/usr.bin/gdb/kgdb/kthr.c +++ b/gnu/usr.bin/gdb/kgdb/kthr.c @@ -104,12 +104,17 @@ kgdb_thr_init(void) stoppcbs = lookup("_stoppcbs"); while (paddr != 0) { - if (kvm_read(kvm, paddr, &p, sizeof(p)) != sizeof(p)) + if (kvm_read(kvm, paddr, &p, sizeof(p)) != sizeof(p)) { warnx("kvm_read: %s", kvm_geterr(kvm)); + break; + } addr = (uintptr_t)TAILQ_FIRST(&p.p_threads); while (addr != 0) { - if (kvm_read(kvm, addr, &td, sizeof(td)) != sizeof(td)) + if (kvm_read(kvm, addr, &td, sizeof(td)) != + sizeof(td)) { warnx("kvm_read: %s", kvm_geterr(kvm)); + break; + } kt = malloc(sizeof(*kt)); kt->next = first; kt->kaddr = addr; -- cgit v1.3