ReactOS  0.4.14-dev-323-g6fe6a88
rtcapi.c File Reference
#include <rtcapi.h>
Include dependency graph for rtcapi.c:

Go to the source code of this file.

Functions

int __cdecl _RTC_DefaultErrorFuncW (int errType, const wchar_t *file, int line, const wchar_t *module, const wchar_t *format,...)
 
_RTC_error_fnW __cdecl _CRT_RTC_INITW0 (void *_Res0, void **_Res1, int _Res2, int _Res3, int _Res4)
 
void __cdecl _RTC_InitBase (void)
 
void __cdecl _RTC_Shutdown (void)
 
void __cdecl _RTC_Initialize (void)
 
void __cdecl _RTC_Failure (void *retaddr, int errnum)
 
void __cdecl _RTC_UninitUse (const char *_Varname)
 
void __fastcall _RTC_CheckStackVars (void *_Esp, _RTC_framedesc *_Fd)
 
void __fastcall _RTC_CheckStackVars2 (void *_Esp, _RTC_framedesc *_Fd, _RTC_ALLOCA_NODE *_AllocaList)
 
void __fastcall _RTC_AllocaHelper (_RTC_ALLOCA_NODE *_PAllocaBase, size_t _CbSize, _RTC_ALLOCA_NODE **_PAllocaInfoList)
 

Variables

_RTC_error_fnW _RTC_pErrorFuncW = _RTC_DefaultErrorFuncW
 

Function Documentation

◆ _CRT_RTC_INITW0()

_RTC_error_fnW __cdecl _CRT_RTC_INITW0 ( void _Res0,
void **  _Res1,
int  _Res2,
int  _Res3,
int  _Res4 
)

Definition at line 56 of file rtcapi.c.

62 {
63  return &_RTC_DefaultErrorFuncW;
64 }
int __cdecl _RTC_DefaultErrorFuncW(int errType, const wchar_t *file, int line, const wchar_t *module, const wchar_t *format,...)
Definition: rtcapi.c:36

◆ _RTC_AllocaHelper()

void __fastcall _RTC_AllocaHelper ( _RTC_ALLOCA_NODE _PAllocaBase,
size_t  _CbSize,
_RTC_ALLOCA_NODE **  _PAllocaInfoList 
)

Definition at line 191 of file rtcapi.c.

195 {
196  unsigned long i;
197 
198  /* Check if we got any allocation */
199  if ((_PAllocaBase != 0) &&
200  (_CbSize != 0) &&
201  (_PAllocaInfoList != 0))
202  {
203  /* Mark the whole range */
204  char *guard = (char*)_PAllocaBase;
205  for (i = 0; i < _CbSize; i++)
206  {
207  guard[i] = 0xCC;
208  }
209 
210  /* Initialize the alloca base frame */
211  _PAllocaBase->allocaSize = _CbSize;
212 
213  /* Insert this frame into the alloca list */
214  _PAllocaBase->next = *_PAllocaInfoList;
215  *_PAllocaInfoList = _PAllocaBase;
216  }
217 }
size_t allocaSize
Definition: rtcapi.h:58
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _RTC_ALLOCA_NODE * next
Definition: rtcapi.h:54

◆ _RTC_CheckStackVars()

void __fastcall _RTC_CheckStackVars ( void _Esp,
_RTC_framedesc _Fd 
)

Definition at line 128 of file rtcapi.c.

131 {
132  int i, *guard1, *guard2;
133 
134  /* Loop all variables in the descriptor */
135  for (i = 0; i < _Fd->varCount; i++)
136  {
137  /* Get the 2 guards below and above the variable */
138  guard1 = (int*)((char*)_Esp + _Fd->variables[i].addr - sizeof(*guard1));
139  guard2 = (int*)((char*)_Esp + _Fd->variables[i].addr +_Fd->variables[i].size);
140 
141  /* Check if they contain the guard bytes */
142  if ((*guard1 != 0xCCCCCCCC) || (*guard2 != 0xCCCCCCCC))
143  {
145  L"unknown file",
146  -1,
147  L"unknown module",
148  L"Stack corruption near '%s'\n",
149  _Fd->variables[i].name);
150  }
151  }
152 }
int size
Definition: rtcapi.h:41
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:49
int varCount
Definition: rtcapi.h:46
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
int addr
Definition: rtcapi.h:40
char * name
Definition: rtcapi.h:42
static const WCHAR L[]
Definition: oid.c:1250
_RTC_vardesc * variables
Definition: rtcapi.h:47

Referenced by _RTC_CheckStackVars2().

◆ _RTC_CheckStackVars2()

void __fastcall _RTC_CheckStackVars2 ( void _Esp,
_RTC_framedesc _Fd,
_RTC_ALLOCA_NODE _AllocaList 
)

Definition at line 156 of file rtcapi.c.

160 {
162  int *guard;
163 
164  /* Process normal variables */
165  _RTC_CheckStackVars(_Esp, _Fd);
166 
167  /* Process the alloca list */
168  for (current = _AllocaList; current != 0; current = current->next)
169  {
170  /* Get the upper guard */
171  guard = (int*)((char*)current + current->allocaSize - sizeof(*guard));
172 
173  /* Check if all guard locations are still ok */
174  if ((current->guard1 != 0xCCCCCCCC) ||
175  (current->guard2[0] != 0xCCCCCCCC) ||
176  (current->guard2[1] != 0xCCCCCCCC) ||
177  (current->guard2[2] != 0xCCCCCCCC) ||
178  (*guard != 0xCCCCCCCC))
179  {
181  L"unknown file",
182  -1,
183  L"unknown module",
184  L"Stack corruption in alloca frame\n");
185  }
186  }
187 }
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:49
void __fastcall _RTC_CheckStackVars(void *_Esp, _RTC_framedesc *_Fd)
Definition: rtcapi.c:128
static const WCHAR L[]
Definition: oid.c:1250
struct task_struct * current
Definition: linux.c:32

◆ _RTC_DefaultErrorFuncW()

int __cdecl _RTC_DefaultErrorFuncW ( int  errType,
const wchar_t file,
int  line,
const wchar_t module,
const wchar_t format,
  ... 
)

Definition at line 36 of file rtcapi.c.

43 {
44  /* Simple fallback function */
45  __debugbreak();
46  return 0;
47 }
void __cdecl __debugbreak(void)
Definition: intrin_ppc.h:698

Referenced by _CRT_RTC_INITW0(), and _RTC_SetErrorFuncW().

◆ _RTC_Failure()

void __cdecl _RTC_Failure ( void retaddr,
int  errnum 
)

Definition at line 100 of file rtcapi.c.

103 {
104  _RTC_pErrorFuncW(errnum,
105  L"unknown file",
106  -1,
107  L"unknown module",
108  L"Invalid stack pointer value caught at %p, error %d\n",
109  retaddr,
110  errnum);
111 }
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:49
static const WCHAR L[]
Definition: oid.c:1250

◆ _RTC_InitBase()

void __cdecl _RTC_InitBase ( void  )

Definition at line 68 of file rtcapi.c.

69 {
70  static char initialized = 0;
71  _RTC_error_fnW errorFunc;
72 
73  if (!initialized)
74  {
75  errorFunc = _CRT_RTC_INITW(0, 0, 0, 1, 0);
76  _RTC_SetErrorFuncW(errorFunc);
77  initialized = 1;
78  }
79 }
_RTC_error_fnW __cdecl _RTC_SetErrorFuncW(_RTC_error_fnW)
Definition: rtcuserapi.c:78
static BOOL initialized
Definition: syslog.c:39
int(__cdecl * _RTC_error_fnW)(int, const wchar_t *, int, const wchar_t *, const wchar_t *,...)
Definition: rtcapi.h:27
_RTC_error_fnW __cdecl _CRT_RTC_INITW(void *_Res0, void **_Res1, int _Res2, int _Res3, int _Res4)
Definition: mscmain.c:65

Referenced by _RTC_Initialize().

◆ _RTC_Initialize()

void __cdecl _RTC_Initialize ( void  )

Definition at line 90 of file rtcapi.c.

91 {
92  /* Usually this function would walk an array of function pointers and call
93  each of these, like done with global ctors, but since these are currently
94  only _RTC_InitBase, we simply call that function once. */
95  _RTC_InitBase();
96 }
void __cdecl _RTC_InitBase(void)
Definition: rtcapi.c:68

Referenced by __main().

◆ _RTC_Shutdown()

void __cdecl _RTC_Shutdown ( void  )

Definition at line 83 of file rtcapi.c.

84 {
85  __debugbreak();
86 }
void __cdecl __debugbreak(void)
Definition: intrin_ppc.h:698

◆ _RTC_UninitUse()

void __cdecl _RTC_UninitUse ( const char _Varname)

Definition at line 115 of file rtcapi.c.

117 {
119  L"unknown file",
120  -1,
121  L"unknown module",
122  L"Use of uninitialized variable %S!\n",
123  _Varname);
124 }
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:49
static const WCHAR L[]
Definition: oid.c:1250

Variable Documentation

◆ _RTC_pErrorFuncW