Wrap libc calls with UNSAFE_BUFFERS() in fx_memcpy_wrappers.h.
Begin to prepare for a day when -Wunsafe-buffer-usage-in-libc-call
might become an enabled diagnostic.
Change-Id: I343abb22d1a1afe23cbfe20b000be82f099e4162
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/127270
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/core/fxcrt/fx_memcpy_wrappers.h b/core/fxcrt/fx_memcpy_wrappers.h
index 195824d..cef4fa8 100644
--- a/core/fxcrt/fx_memcpy_wrappers.h
+++ b/core/fxcrt/fx_memcpy_wrappers.h
@@ -21,59 +21,69 @@
UNSAFE_BUFFER_USAGE inline int FXSYS_memcmp(const void* ptr1,
const void* ptr2,
size_t len) {
- return len ? memcmp(ptr1, ptr2, len) : 0;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(memcmp(ptr1, ptr2, len)) : 0;
}
UNSAFE_BUFFER_USAGE inline int FXSYS_wmemcmp(const wchar_t* ptr1,
const wchar_t* ptr2,
size_t len) {
- return len ? wmemcmp(ptr1, ptr2, len) : 0;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(wmemcmp(ptr1, ptr2, len)) : 0;
}
UNSAFE_BUFFER_USAGE inline void* FXSYS_memcpy(void* ptr1,
const void* ptr2,
size_t len) {
- return len ? memcpy(ptr1, ptr2, len) : ptr1;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(memcpy(ptr1, ptr2, len)) : ptr1;
}
UNSAFE_BUFFER_USAGE inline wchar_t* FXSYS_wmemcpy(wchar_t* ptr1,
const wchar_t* ptr2,
size_t len) {
- return len ? wmemcpy(ptr1, ptr2, len) : ptr1;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(wmemcpy(ptr1, ptr2, len)) : ptr1;
}
UNSAFE_BUFFER_USAGE inline void* FXSYS_memmove(void* ptr1,
const void* ptr2,
size_t len) {
- return len ? memmove(ptr1, ptr2, len) : ptr1;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(memmove(ptr1, ptr2, len)) : ptr1;
}
UNSAFE_BUFFER_USAGE inline wchar_t* FXSYS_wmemmove(wchar_t* ptr1,
const wchar_t* ptr2,
size_t len) {
- return len ? wmemmove(ptr1, ptr2, len) : ptr1;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(wmemmove(ptr1, ptr2, len)) : ptr1;
}
UNSAFE_BUFFER_USAGE inline void* FXSYS_memset(void* ptr1, int val, size_t len) {
- return len ? memset(ptr1, val, len) : ptr1;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(memset(ptr1, val, len)) : ptr1;
}
UNSAFE_BUFFER_USAGE inline wchar_t* FXSYS_wmemset(wchar_t* ptr1,
int val,
size_t len) {
- return len ? wmemset(ptr1, val, len) : ptr1;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(wmemset(ptr1, val, len)) : ptr1;
}
UNSAFE_BUFFER_USAGE inline const void* FXSYS_memchr(const void* ptr1,
int val,
size_t len) {
- return len ? memchr(ptr1, val, len) : nullptr;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(memchr(ptr1, val, len)) : nullptr;
}
UNSAFE_BUFFER_USAGE inline const wchar_t* FXSYS_wmemchr(const wchar_t* ptr1,
wchar_t val,
size_t len) {
- return len ? wmemchr(ptr1, val, len) : nullptr;
+ // SAFETY: required from caller, enforced by UNSAFE_BUFFER_USAGE.
+ return len ? UNSAFE_BUFFERS(wmemchr(ptr1, val, len)) : nullptr;
}
#endif // CORE_FXCRT_FX_MEMCPY_WRAPPERS_H_