Module Name: src
Committed By: skrll
Date: Mon Jan 16 09:01:35 UTC 2012
Modified Files:
src/sys/arch/hppa/hppa: db_disasm.c
Log Message:
Don't NULL deref on unknown subop, e.g. PA2.0 instruction.
Print undefined instead of ???.
To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/hppa/hppa/db_disasm.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/hppa/hppa/db_disasm.c
diff -u src/sys/arch/hppa/hppa/db_disasm.c:1.12 src/sys/arch/hppa/hppa/db_disasm.c:1.13
--- src/sys/arch/hppa/hppa/db_disasm.c:1.12 Tue Nov 3 05:07:26 2009
+++ src/sys/arch/hppa/hppa/db_disasm.c Mon Jan 16 09:01:35 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: db_disasm.c,v 1.12 2009/11/03 05:07:26 snj Exp $ */
+/* $NetBSD: db_disasm.c,v 1.13 2012/01/16 09:01:35 skrll Exp $ */
/* $OpenBSD: db_disasm.c,v 1.9 2000/04/18 20:02:45 mickey Exp $ */
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.12 2009/11/03 05:07:26 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.13 2012/01/16 09:01:35 skrll Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -2253,16 +2253,18 @@ db_disasm(vaddr_t loc, bool flag)
else
i = m->subops[ext];
- if (i->dasmfcn != coprDasm && i->dasmfcn != diagDasm &&
- i->dasmfcn != ariDasm && i->dasmfcn != scDasm &&
- i->dasmfcn != ldDasm)
- db_printf(i->mnem);
- if (i->dasmfcn)
- (*i->dasmfcn)(i, ofs, instruct);
- else if (i->mnem[0] == '?')
- db_printf("???");
+ if (i) {
+ if (i->dasmfcn != coprDasm && i->dasmfcn != diagDasm &&
+ i->dasmfcn != ariDasm && i->dasmfcn != scDasm &&
+ i->dasmfcn != ldDasm)
+ db_printf("%s", i->mnem);
+ if (i->dasmfcn)
+ (*i->dasmfcn)(i, ofs, instruct);
+ } else {
+ db_printf("undefined subop");
+ }
} else
- db_printf("???");
+ db_printf("undefined");
db_printf("\n");
return (loc + sizeof(instruct));