OLD | NEW |
1 /* | 1 /* |
2 * globals.c: definition and handling of the set of global variables | 2 * globals.c: definition and handling of the set of global variables |
3 * of the library | 3 * of the library |
4 * | 4 * |
5 * The bottom of this file is automatically generated by build_glob.py | 5 * The bottom of this file is automatically generated by build_glob.py |
6 * based on the description file global.data | 6 * based on the description file global.data |
7 * | 7 * |
8 * See Copyright for the status of this software. | 8 * See Copyright for the status of this software. |
9 * | 9 * |
10 * Gary Pennington <Gary.Pennington@uk.sun.com> | 10 * Gary Pennington <Gary.Pennington@uk.sun.com> |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 #undef xmlMemStrdup | 79 #undef xmlMemStrdup |
80 #undef xmlRealloc | 80 #undef xmlRealloc |
81 | 81 |
82 #if defined(DEBUG_MEMORY_LOCATION) || defined(DEBUG_MEMORY) | 82 #if defined(DEBUG_MEMORY_LOCATION) || defined(DEBUG_MEMORY) |
83 xmlFreeFunc xmlFree = (xmlFreeFunc) xmlMemFree; | 83 xmlFreeFunc xmlFree = (xmlFreeFunc) xmlMemFree; |
84 xmlMallocFunc xmlMalloc = (xmlMallocFunc) xmlMemMalloc; | 84 xmlMallocFunc xmlMalloc = (xmlMallocFunc) xmlMemMalloc; |
85 xmlMallocFunc xmlMallocAtomic = (xmlMallocFunc) xmlMemMalloc; | 85 xmlMallocFunc xmlMallocAtomic = (xmlMallocFunc) xmlMemMalloc; |
86 xmlReallocFunc xmlRealloc = (xmlReallocFunc) xmlMemRealloc; | 86 xmlReallocFunc xmlRealloc = (xmlReallocFunc) xmlMemRealloc; |
87 xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) xmlMemoryStrdup; | 87 xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) xmlMemoryStrdup; |
88 #else | 88 #else |
| 89 |
| 90 #define MAX_LIBXML_MALLOC (1024*1024*512) |
| 91 |
| 92 static void* size_checked_malloc(size_t size) { |
| 93 if (size > MAX_LIBXML_MALLOC) { |
| 94 *(volatile char*)0 = '\0'; |
| 95 return NULL; |
| 96 } |
| 97 return malloc(size); |
| 98 } |
| 99 |
| 100 static void* size_checked_realloc(void* ptr, size_t size) { |
| 101 if (size > MAX_LIBXML_MALLOC) { |
| 102 *(volatile char*)0 = '\0'; |
| 103 return NULL; |
| 104 } |
| 105 return realloc(ptr, size); |
| 106 } |
| 107 |
89 /** | 108 /** |
90 * xmlFree: | 109 * xmlFree: |
91 * @mem: an already allocated block of memory | 110 * @mem: an already allocated block of memory |
92 * | 111 * |
93 * The variable holding the libxml free() implementation | 112 * The variable holding the libxml free() implementation |
94 */ | 113 */ |
95 xmlFreeFunc xmlFree = (xmlFreeFunc) free; | 114 xmlFreeFunc xmlFree = (xmlFreeFunc) free; |
96 /** | 115 /** |
97 * xmlMalloc: | 116 * xmlMalloc: |
98 * @size: the size requested in bytes | 117 * @size: the size requested in bytes |
99 * | 118 * |
100 * The variable holding the libxml malloc() implementation | 119 * The variable holding the libxml malloc() implementation |
101 * | 120 * |
102 * Returns a pointer to the newly allocated block or NULL in case of error | 121 * Returns a pointer to the newly allocated block or NULL in case of error |
103 */ | 122 */ |
104 xmlMallocFunc xmlMalloc = (xmlMallocFunc) malloc; | 123 xmlMallocFunc xmlMalloc = (xmlMallocFunc) size_checked_malloc; |
105 /** | 124 /** |
106 * xmlMallocAtomic: | 125 * xmlMallocAtomic: |
107 * @size: the size requested in bytes | 126 * @size: the size requested in bytes |
108 * | 127 * |
109 * The variable holding the libxml malloc() implementation for atomic | 128 * The variable holding the libxml malloc() implementation for atomic |
110 * data (i.e. blocks not containings pointers), useful when using a | 129 * data (i.e. blocks not containings pointers), useful when using a |
111 * garbage collecting allocator. | 130 * garbage collecting allocator. |
112 * | 131 * |
113 * Returns a pointer to the newly allocated block or NULL in case of error | 132 * Returns a pointer to the newly allocated block or NULL in case of error |
114 */ | 133 */ |
115 xmlMallocFunc xmlMallocAtomic = (xmlMallocFunc) malloc; | 134 xmlMallocFunc xmlMallocAtomic = (xmlMallocFunc) size_checked_malloc; |
116 /** | 135 /** |
117 * xmlRealloc: | 136 * xmlRealloc: |
118 * @mem: an already allocated block of memory | 137 * @mem: an already allocated block of memory |
119 * @size: the new size requested in bytes | 138 * @size: the new size requested in bytes |
120 * | 139 * |
121 * The variable holding the libxml realloc() implementation | 140 * The variable holding the libxml realloc() implementation |
122 * | 141 * |
123 * Returns a pointer to the newly reallocated block or NULL in case of error | 142 * Returns a pointer to the newly reallocated block or NULL in case of error |
124 */ | 143 */ |
125 xmlReallocFunc xmlRealloc = (xmlReallocFunc) realloc; | 144 xmlReallocFunc xmlRealloc = (xmlReallocFunc) size_checked_realloc; |
126 /** | 145 /** |
127 * xmlMemStrdup: | 146 * xmlMemStrdup: |
128 * @str: a zero terminated string | 147 * @str: a zero terminated string |
129 * | 148 * |
130 * The variable holding the libxml strdup() implementation | 149 * The variable holding the libxml strdup() implementation |
131 * | 150 * |
132 * Returns the copy of the string or NULL in case of error | 151 * Returns the copy of the string or NULL in case of error |
133 */ | 152 */ |
134 xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) xmlStrdup; | 153 xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) xmlStrdup; |
135 #endif /* DEBUG_MEMORY_LOCATION || DEBUG_MEMORY */ | 154 #endif /* DEBUG_MEMORY_LOCATION || DEBUG_MEMORY */ |
(...skipping 969 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1105 xmlOutputBufferCreateFilenameFunc * | 1124 xmlOutputBufferCreateFilenameFunc * |
1106 __xmlOutputBufferCreateFilenameValue(void) { | 1125 __xmlOutputBufferCreateFilenameValue(void) { |
1107 if (IS_MAIN_THREAD) | 1126 if (IS_MAIN_THREAD) |
1108 return (&xmlOutputBufferCreateFilenameValue); | 1127 return (&xmlOutputBufferCreateFilenameValue); |
1109 else | 1128 else |
1110 return (&xmlGetGlobalState()->xmlOutputBufferCreateFilenameValue); | 1129 return (&xmlGetGlobalState()->xmlOutputBufferCreateFilenameValue); |
1111 } | 1130 } |
1112 | 1131 |
1113 #define bottom_globals | 1132 #define bottom_globals |
1114 #include "elfgcchack.h" | 1133 #include "elfgcchack.h" |
OLD | NEW |