ReactOS 0.4.16-dev-257-g6aa11ac
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{
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}
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
size_t allocaSize
Definition: rtcapi.h:58

◆ _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}
#define L(x)
Definition: ntvdm.h:50
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:50
@ _RTC_CORRUPT_STACK
Definition: rtcapi.h:20
int varCount
Definition: rtcapi.h:46
_RTC_vardesc * variables
Definition: rtcapi.h:47
char * name
Definition: rtcapi.h:42
int size
Definition: rtcapi.h:41
int addr
Definition: rtcapi.h:40

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}
struct task_struct * current
Definition: linux.c:32
void __fastcall _RTC_CheckStackVars(void *_Esp, _RTC_framedesc *_Fd)
Definition: rtcapi.c:129
@ _RTC_CORRUPTED_ALLOCA
Definition: rtcapi.h:20

◆ _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 */
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_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
_RTC_error_fnW __cdecl _CRT_RTC_INITW(void *_Res0, void **_Res1, int _Res2, int _Res3, int _Res4)
Definition: mscmain.c:65
int(__cdecl * _RTC_error_fnW)(int, const wchar_t *, int, const wchar_t *, const wchar_t *,...)
Definition: rtcapi.h:27
static BOOL initialized
Definition: syslog.c:39

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. */
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{
87}

◆ _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_UNINIT_LOCAL_USE
Definition: rtcapi.h:20

Variable Documentation

◆ _RTC_pErrorFuncW