1 : // Copyright 2015 Google Inc. All Rights Reserved.
2 : //
3 : // Licensed under the Apache License, Version 2.0 (the "License");
4 : // you may not use this file except in compliance with the License.
5 : // You may obtain a copy of the License at
6 : //
7 : // http://www.apache.org/licenses/LICENSE-2.0
8 : //
9 : // Unless required by applicable law or agreed to in writing, software
10 : // distributed under the License is distributed on an "AS IS" BASIS,
11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 : // See the License for the specific language governing permissions and
13 : // limitations under the License.
14 :
15 : #include "syzygy/agent/asan/hp_crt_interceptors.h"
16 :
17 : #include <cstring>
18 :
19 m : extern "C" {
20 :
21 m : const void* __cdecl hp_asan_memchr(const unsigned char* ptr,
22 m : int value,
23 m : size_t num) {
24 m : return ::memchr(ptr, value, num);
25 m : }
26 :
27 m : void* __cdecl hp_asan_memcpy(unsigned char* destination,
28 m : const unsigned char* source,
29 m : size_t num) {
30 m : return ::memcpy(destination, source, num);
31 m : }
32 :
33 m : void* __cdecl hp_asan_memmove(unsigned char* destination,
34 m : const unsigned char* source,
35 m : size_t num) {
36 m : return ::memmove(destination, source, num);
37 m : }
38 :
39 m : void* __cdecl hp_asan_memset(unsigned char* ptr, int value, size_t num) {
40 m : return ::memset(ptr, value, num);
41 m : }
42 :
43 m : int __cdecl hp_asan_strcmp(const char* str1, const char* str2) {
44 m : return ::strcmp(str1, str2);
45 m : }
46 :
47 m : size_t __cdecl hp_asan_strcspn(const char* str1, const char* str2) {
48 m : return ::strcspn(str1, str2);
49 m : }
50 :
51 m : size_t __cdecl hp_asan_strlen(const char* str) {
52 m : return ::strlen(str);
53 m : }
54 :
55 m : const char* __cdecl hp_asan_strpbrk(const char* str1, const char* str2) {
56 m : return ::strpbrk(str1, str2);
57 m : }
58 :
59 m : const char* __cdecl hp_asan_strrchr(const char* str, int character) {
60 m : return ::strrchr(str, character);
61 m : }
62 :
63 m : char* __cdecl hp_asan_strncat(char* destination,
64 m : const char* source,
65 m : size_t num) {
66 m : return ::strncat(destination, source, num);
67 m : }
68 :
69 m : char* __cdecl hp_asan_strncpy(char* destination,
70 m : const char* source,
71 m : size_t num) {
72 m : return ::strncpy(destination, source, num);
73 m : }
74 :
75 m : const char* __cdecl hp_asan_strstr(const char* str1, const char* str2) {
76 m : return ::strstr(str1, str2);
77 m : }
78 :
79 m : size_t __cdecl hp_asan_strspn(const char* str1, const char* str2) {
80 m : return ::strspn(str1, str2);
81 m : }
82 :
83 m : const wchar_t* hp_asan_wcschr(const wchar_t* str, wchar_t character) {
84 m : return ::wcschr(str, character);
85 m : }
86 :
87 m : const wchar_t* hp_asan_wcsrchr(const wchar_t* str, wchar_t character) {
88 m : return ::wcsrchr(str, character);
89 m : }
90 :
91 m : const wchar_t* hp_asan_wcsstr(const wchar_t* str, const wchar_t* keys) {
92 m : return ::wcsstr(str, keys);
93 m : }
94 :
95 m : } // extern "C"
|