diff --git a/debugger/stack.c b/debugger/stack.c
index 82cd1e6..f41f25c 100644
--- a/debugger/stack.c
+++ b/debugger/stack.c
@@ -225,10 +225,18 @@
 
     next_switch = THREAD_Current()->cur_stack;
     if (is16) {
+      if (IsBadReadPtr((STACK32FRAME*)next_switch, sizeof(STACK32FRAME))) {
+	 fprintf( stderr, "Bad stack frame %p\n", (STACK32FRAME*)next_switch );
+	 return;
+      }
       cur_switch = (DWORD)((STACK32FRAME*)next_switch)->frame16;
       sw_addr.seg = SELECTOROF(cur_switch);
       sw_addr.off = OFFSETOF(cur_switch);
     } else {
+      if (IsBadReadPtr((STACK16FRAME*)PTR_SEG_TO_LIN(next_switch), sizeof(STACK16FRAME))) {
+	 fprintf( stderr, "Bad stack frame %p\n", (STACK16FRAME*)PTR_SEG_TO_LIN(next_switch) );
+	 return;
+      }
       cur_switch = (DWORD)((STACK16FRAME*)PTR_SEG_TO_LIN(next_switch))->frame32;
       sw_addr.seg = ss;
       sw_addr.off = cur_switch;
@@ -245,7 +253,15 @@
          * yes, I know this is confusing, it gave me a headache too */
         if (is16) {
           STACK32FRAME *frame = (STACK32FRAME*)next_switch;
-          DBG_ADDR code = { NULL, 0, frame->retaddr };
+          DBG_ADDR code;
+
+	  if (IsBadReadPtr((STACK32FRAME*)next_switch, sizeof(STACK32FRAME))) {
+	    fprintf( stderr, "Bad stack frame %p\n", (STACK32FRAME*)next_switch );
+	    return;
+	  }
+	  code.type = NULL;
+	  code.seg  = 0;
+	  code.off  = frame->retaddr;
 
           cs = 0;
           addr.seg = 0;
@@ -253,6 +269,10 @@
           DEBUG_ForceFrame( &addr, &code, ++frameno, 32, noisy );
 
           next_switch = cur_switch;
+	  if (IsBadReadPtr((STACK16FRAME*)PTR_SEG_TO_LIN(next_switch), sizeof(STACK16FRAME))) {
+	    fprintf( stderr, "Bad stack frame %p\n", (STACK16FRAME*)PTR_SEG_TO_LIN(next_switch) );
+	    return;
+	  }
           cur_switch = (DWORD)((STACK16FRAME*)PTR_SEG_TO_LIN(next_switch))->frame32;
           sw_addr.seg = 0;
           sw_addr.off = cur_switch;
@@ -260,7 +280,16 @@
           is16 = FALSE;
         } else {
           STACK16FRAME *frame = (STACK16FRAME*)PTR_SEG_TO_LIN(next_switch);
-          DBG_ADDR code = { NULL, frame->cs, frame->ip };
+          DBG_ADDR code;
+
+	  if (IsBadReadPtr((STACK16FRAME*)PTR_SEG_TO_LIN(next_switch), sizeof(STACK16FRAME))) {
+	    fprintf( stderr, "Bad stack frame %p\n", (STACK16FRAME*)PTR_SEG_TO_LIN(next_switch) );
+	    return;
+	  }
+
+	  code.type = NULL;
+	  code.seg  = frame->cs;
+	  code.off  = frame->ip;
 
           cs = frame->cs;
           addr.seg = SELECTOROF(next_switch);
@@ -268,6 +297,10 @@
           DEBUG_ForceFrame( &addr, &code, ++frameno, 16, noisy );
 
           next_switch = cur_switch;
+	  if (IsBadReadPtr((STACK32FRAME*)next_switch, sizeof(STACK32FRAME))) {
+	    fprintf( stderr, "Bad stack frame %p\n", (STACK32FRAME*)next_switch );
+	    return;
+	  }
           cur_switch = (DWORD)((STACK32FRAME*)next_switch)->frame16;
           sw_addr.seg = SELECTOROF(cur_switch);
           sw_addr.off = OFFSETOF(cur_switch);
