ReactOS  0.4.15-dev-4916-gd519b11
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 57 of file rtcapi.c.

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

◆ _RTC_AllocaHelper()

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

Definition at line 192 of file rtcapi.c.

196 {
197  unsigned long i;
198 
199  /* Check if we got any allocation */
200  if ((_PAllocaBase != 0) &&
201  (_CbSize != 0) &&
202  (_PAllocaInfoList != 0))
203  {
204  /* Mark the whole range */
205  char *guard = (char*)_PAllocaBase;
206  for (i = 0; i < _CbSize; i++)
207  {
208  guard[i] = 0xCC;
209  }
210 
211  /* Initialize the alloca base frame */
212  _PAllocaBase->allocaSize = _CbSize;
213 
214  /* Insert this frame into the alloca list */
215  _PAllocaBase->next = *_PAllocaInfoList;
216  *_PAllocaInfoList = _PAllocaBase;
217  }
218 }
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 129 of file rtcapi.c.

132 {
133  int i, *guard1, *guard2;
134 
135  /* Loop all variables in the descriptor */
136  for (i = 0; i < _Fd->varCount; i++)
137  {
138  /* Get the 2 guards below and above the variable */
139  guard1 = (int*)((char*)_Esp + _Fd->variables[i].addr - sizeof(*guard1));
140  guard2 = (int*)((char*)_Esp + _Fd->variables[i].addr +_Fd->variables[i].size);
141 
142  /* Check if they contain the guard bytes */
143  if ((*guard1 != 0xCCCCCCCC) || (*guard2 != 0xCCCCCCCC))
144  {
146  L"unknown file",
147  -1,
148  L"unknown module",
149  L"Stack corruption near '%s'\n",
150  _Fd->variables[i].name);
151  }
152  }
153 }
int size
Definition: rtcapi.h:41
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:50
int varCount
Definition: rtcapi.h:46
#define L(x)
Definition: ntvdm.h:50
int addr
Definition: rtcapi.h:40
char * name
Definition: rtcapi.h:42
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
_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 157 of file rtcapi.c.

161 {
163  int *guard;
164 
165  /* Process normal variables */
166  _RTC_CheckStackVars(_Esp, _Fd);
167 
168  /* Process the alloca list */
169  for (current = _AllocaList; current != 0; current = current->next)
170  {
171  /* Get the upper guard */
172  guard = (int*)((char*)current + current->allocaSize - sizeof(*guard));
173 
174  /* Check if all guard locations are still ok */
175  if ((current->guard1 != 0xCCCCCCCC) ||
176  (current->guard2[0] != 0xCCCCCCCC) ||
177  (current->guard2[1] != 0xCCCCCCCC) ||
178  (current->guard2[2] != 0xCCCCCCCC) ||
179  (*guard != 0xCCCCCCCC))
180  {
182  L"unknown file",
183  -1,
184  L"unknown module",
185  L"Stack corruption in alloca frame\n");
186  }
187  }
188 }
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:50
#define L(x)
Definition: ntvdm.h:50
void __fastcall _RTC_CheckStackVars(void *_Esp, _RTC_framedesc *_Fd)
Definition: rtcapi.c:129
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 37 of file rtcapi.c.

44 {
45  /* Simple fallback function */
46  __debugbreak();
47  return 0;
48 }
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 101 of file rtcapi.c.

104 {
105  _RTC_pErrorFuncW(errnum,
106  L"unknown file",
107  -1,
108  L"unknown module",
109  L"Invalid stack pointer value caught at %p, error %d\n",
110  retaddr,
111  errnum);
112 }
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:50
#define L(x)
Definition: ntvdm.h:50

◆ _RTC_InitBase()

void __cdecl _RTC_InitBase ( void  )

Definition at line 69 of file rtcapi.c.

70 {
71  static char initialized = 0;
72  _RTC_error_fnW errorFunc;
73 
74  if (!initialized)
75  {
76  errorFunc = _CRT_RTC_INITW(0, 0, 0, 1, 0);
77  _RTC_SetErrorFuncW(errorFunc);
78  initialized = 1;
79  }
80 }
_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 91 of file rtcapi.c.

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

Referenced by __main().

◆ _RTC_Shutdown()

void __cdecl _RTC_Shutdown ( void  )

Definition at line 84 of file rtcapi.c.

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

◆ _RTC_UninitUse()

void __cdecl _RTC_UninitUse ( const char _Varname)

Definition at line 116 of file rtcapi.c.

118 {
120  L"unknown file",
121  -1,
122  L"unknown module",
123  L"Use of uninitialized variable %S!\n",
124  _Varname);
125 }
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:50
#define L(x)
Definition: ntvdm.h:50

Variable Documentation

◆ _RTC_pErrorFuncW