diff options
Diffstat (limited to 'dmake/dbug/malloc/mlc_chk.c')
-rw-r--r-- | dmake/dbug/malloc/mlc_chk.c | 256 |
1 files changed, 0 insertions, 256 deletions
diff --git a/dmake/dbug/malloc/mlc_chk.c b/dmake/dbug/malloc/mlc_chk.c deleted file mode 100644 index 40690580c..000000000 --- a/dmake/dbug/malloc/mlc_chk.c +++ /dev/null @@ -1,256 +0,0 @@ -/* - * (c) Copyright 1990 Conor P. Cahill (uunet!virtech!cpcahil). - * You may copy, distribute, and use this software as long as this - * copyright statement is not removed. - */ - -#include <stdio.h> -#include "malloc.h" -#include "debug.h" - -#ifndef lint -static -char rcs_hdr[] = "$Id: mlc_chk.c,v 1.2 2006-07-25 10:09:34 rt Exp $"; -#endif - -extern struct mlist malloc_start; -extern struct mlist * malloc_end; -extern char * malloc_data_start; -extern char * malloc_data_end; - -/* - * Function: malloc_in_arena() - * - * Purpose: to verify address is within malloc arena. - * - * Arguments: ptr - pointer to verify - * - * Returns: TRUE - if pointer is within malloc area - * FALSE - otherwise - * - * Narrative: - * IF pointer is >= malloc area start AND <= malloc area end - * return TRUE - * ELSE - * return FALSE - * - * Mod History: - * 90/01/24 cpcahil Initial revision. - */ -int -malloc_in_arena(ptr) - char * ptr; -{ - extern char * malloc_data_start; - extern char * malloc_data_end; - int rtn = 0; - - if( ptr >= malloc_data_start && ptr <= malloc_data_end ) - { - rtn = 1; - } - - return(rtn); -} - -/* - * Function: malloc_check_str() - * - * Arguments: func - name of function calling this routine - * str - pointer to area to check - * - * Purpose: to verify that if str is within the malloc arena, the data - * it points to does not extend beyond the applicable region. - * - * Returns: Nothing of any use (function is void). - * - * Narrative: - * IF pointer is within malloc arena - * determin length of string - * call malloc_verify() to verify data is withing applicable region - * return - * - * Mod History: - * 90/01/24 cpcahil Initial revision. - * 90/01/29 cpcahil Added code to ignore recursive calls. - */ -void -malloc_check_str(func,str) - char * func; - char * str; -{ - static int layers; - register char * s; - - if( (layers++ == 0) && malloc_in_arena(str) ) - { - for( s=str; *s; s++) - { - } - - malloc_verify(func,str,s-str+1); - } - - layers--; -} - -/* - * Function: malloc_check_strn() - * - * Arguments: func - name of function calling this routine - * str - pointer to area to check - * len - max length of string - * - * Purpose: to verify that if str is within the malloc arena, the data - * it points to does not extend beyond the applicable region. - * - * Returns: Nothing of any use (function is void). - * - * Narrative: - * IF pointer is within malloc arena - * determin length of string - * call malloc_verify() to verify data is withing applicable region - * return - * - * Mod History: - * 90/01/24 cpcahil Initial revision. - * 90/01/29 cpcahil Added code to ignore recursive calls. - * 90/08/29 cpcahil added length (for strn* functions) - */ -void -malloc_check_strn(func,str,len) - char * func; - char * str; - int len; -{ - register int i; - static int layers; - register char * s; - - if( (layers++ == 0) && malloc_in_arena(str) ) - { - for( s=str,i=0; (i < len) && *s; s++) - { - } - - malloc_verify(func,str,s-str+1); - } - - layers--; -} - -/* - * Function: malloc_check_data() - * - * Arguments: func - name of function calling this routine - * ptr - pointer to area to check - * len - length to verify - * - * Purpose: to verify that if ptr is within the malloc arena, the data - * it points to does not extend beyond the applicable region. - * - * Returns: Nothing of any use (function is void). - * - * Narrative: - * IF pointer is within malloc arena - * call malloc_verify() to verify data is withing applicable region - * return - * - * Mod History: - * 90/01/24 cpcahil Initial revision. - * 90/01/29 cpcahil Added code to ignore recursive calls. - */ -void -malloc_check_data(func,ptr,len) - char * func; - char * ptr; - int len; -{ - static int layers; - - if( layers++ == 0 ) - { - DEBUG3(40,"malloc_check_data(%s,0x%x,%d) called...", - func,ptr,len); - if( malloc_in_arena(ptr) ) - { - DEBUG0(10,"pointer in malloc arena, verifying..."); - malloc_verify(func,ptr,len); - } - } - - layers--; -} - -/* - * Function: malloc_verify() - * - * Arguments: func - name of function calling the malloc check routines - * ptr - pointer to area to check - * len - length to verify - * - * Purpose: to verify that the data ptr points to does not extend beyond - * the applicable malloc region. This function is only called - * if it has been determined that ptr points into the malloc arena. - * - * Returns: Nothing of any use (function is void). - * - * Narrative: - * - * Mod History: - * 90/01/24 cpcahil Initial revision. - */ -void -malloc_verify(func,ptr,len) - char * func; - char * ptr; - int len; -{ - extern struct mlist * malloc_end; - extern int malloc_errno; - extern struct mlist malloc_start; - struct mlist * mptr; - - DEBUG3(40,"malloc_verify(%s,0x%x,%d) called...", func,ptr,len); - /* - * Find the malloc block that includes this pointer - */ - mptr = &malloc_start; - while( mptr && - ! (((char *)mptr < ptr) && ((mptr->data+mptr->s.size) > ptr) ) ) - { - mptr = mptr->next; - } - - /* - * if ptr was not in a malloc block, it must be part of - * some direct sbrk() stuff, so just return. - */ - if( ! mptr ) - { - DEBUG1(10,"ptr (0x%x) not found in malloc search", ptr); - return; - } - - /* - * Now we have a valid malloc block that contains the indicated - * pointer. We must verify that it is withing the requested block - * size (as opposed to the real block size which is rounded up to - * allow for correct alignment). - */ - - DEBUG4(60,"Checking 0x%x-0x%x, 0x%x-0x%x", - ptr, ptr+len, mptr->data, mptr->data+mptr->r_size); - - if( (ptr < mptr->data) || ((ptr+len) > (mptr->data+mptr->r_size)) ) - { - DEBUG4(0,"pointer not within region 0x%x-0x%x, 0x%x-0x%x", - ptr, ptr+len, mptr->data, mptr->data+mptr->r_size); - - malloc_errno = M_CODE_OUTOF_BOUNDS; - malloc_warning(func); - } - - return; -} - |