summaryrefslogtreecommitdiffstats
path: root/gnu
diff options
context:
space:
mode:
authorrodrigc <rodrigc@FreeBSD.org>2007-01-25 06:39:25 +0000
committerrodrigc <rodrigc@FreeBSD.org>2007-01-25 06:39:25 +0000
commit5ecf1e982695ff237f2f1e4eba46419b85a2488e (patch)
tree2216108698e93e1318bd545ab7bf528a3e054a76 /gnu
parent83064ec323555287e3f57d6a7467f4f3017aacbf (diff)
downloadFreeBSD-src-5ecf1e982695ff237f2f1e4eba46419b85a2488e.zip
FreeBSD-src-5ecf1e982695ff237f2f1e4eba46419b85a2488e.tar.gz
Try to avoid a possible infinite loop when parsing an invalid kernel dump file.
PR: 108229 Submitted by: Jessica Han <jessicah juniper net> Reviewed by: marcel MFC after: 1 week
Diffstat (limited to 'gnu')
-rw-r--r--gnu/usr.bin/gdb/kgdb/kthr.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gnu/usr.bin/gdb/kgdb/kthr.c b/gnu/usr.bin/gdb/kgdb/kthr.c
index 02f9a20..37ecad2 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;
OpenPOWER on IntegriCloud