@@ -528,7 +528,7 @@ static void set_canary(UNUSED const struct slab_metadata *metadata, UNUSED void
528
528
}
529
529
#endif
530
530
531
- memcpy ((char * )p + size - canary_size , & metadata -> canary_value , canary_size );
531
+ h_memcpy_real ((char * )p + size - canary_size , & metadata -> canary_value , canary_size );
532
532
#endif
533
533
}
534
534
@@ -541,7 +541,7 @@ static void check_canary(UNUSED const struct slab_metadata *metadata, UNUSED con
541
541
#endif
542
542
543
543
u64 canary_value ;
544
- memcpy (& canary_value , (const char * )p + size - canary_size , canary_size );
544
+ h_memcpy_real (& canary_value , (const char * )p + size - canary_size , canary_size );
545
545
546
546
#ifdef HAS_ARM_MTE
547
547
if (unlikely (canary_value == 0 )) {
@@ -831,7 +831,7 @@ static inline void deallocate_small(void *p, const size_t *expected_size) {
831
831
#endif
832
832
833
833
if (ZERO_ON_FREE && !skip_zero ) {
834
- memset (p , 0 , size - canary_size );
834
+ h_memset_real (p , 0 , size - canary_size );
835
835
}
836
836
}
837
837
@@ -1502,7 +1502,7 @@ EXPORT void *h_calloc(size_t nmemb, size_t size) {
1502
1502
total_size = adjust_size_for_canary (total_size );
1503
1503
void * p = alloc (total_size );
1504
1504
if (!ZERO_ON_FREE && likely (p != NULL ) && total_size && total_size <= max_slab_size_class ) {
1505
- memset (p , 0 , total_size - canary_size );
1505
+ h_memset_real (p , 0 , total_size - canary_size );
1506
1506
}
1507
1507
#ifdef HAS_ARM_MTE
1508
1508
// use an assert instead of adding a conditional to memset() above (freed memory is always
@@ -1624,7 +1624,7 @@ EXPORT void *h_realloc(void *old, size_t size) {
1624
1624
mutex_unlock (& ra -> lock );
1625
1625
1626
1626
if (memory_remap_fixed (old , old_size , new , size )) {
1627
- memcpy (new , old , copy_size );
1627
+ h_memcpy_real (new , old , copy_size );
1628
1628
deallocate_pages (old , old_size , old_guard_size );
1629
1629
} else {
1630
1630
memory_unmap ((char * )old - old_guard_size , old_guard_size );
@@ -1646,7 +1646,7 @@ EXPORT void *h_realloc(void *old, size_t size) {
1646
1646
if (copy_size > 0 && copy_size <= max_slab_size_class ) {
1647
1647
copy_size -= canary_size ;
1648
1648
}
1649
- memcpy (new , old_orig , copy_size );
1649
+ h_memcpy_real (new , old_orig , copy_size );
1650
1650
if (old_size <= max_slab_size_class ) {
1651
1651
deallocate_small (old , NULL );
1652
1652
} else {
@@ -1874,8 +1874,8 @@ EXPORT size_t h_malloc_object_size_fast(const void *p) {
1874
1874
return SIZE_MAX ;
1875
1875
}
1876
1876
1877
- #if CONFIG_BLOCK_OPS_CHECK_SIZE
1878
1877
inline void * h_memcpy_real (void * dst , const void * src , size_t len ) {
1878
+ #if CONFIG_BLOCK_OPS_CHECK_SIZE
1879
1879
char * p_dst = (char * )dst ;
1880
1880
char const * p_src = (char const * )src ;
1881
1881
@@ -1884,20 +1884,13 @@ inline void *h_memcpy_real(void *dst, const void *src, size_t len) {
1884
1884
}
1885
1885
1886
1886
return dst ;
1887
- }
1888
-
1889
- EXPORT void * h_memcpy (void * dst , const void * src , size_t len ) {
1890
- if (len > malloc_object_size_fast (src )) {
1891
- fatal_error ("memcpy read overflow" );
1892
- }
1893
- if (len > malloc_object_size_fast (dst )) {
1894
- fatal_error ("memcpy buffer overflow" );
1895
- }
1896
-
1897
- return h_memcpy_real (dst , src , len );
1887
+ #else
1888
+ return memcpy (dst , src , len );
1889
+ #endif
1898
1890
}
1899
1891
1900
1892
inline void * h_memmove_real (void * dst , const void * src , size_t len ) {
1893
+ #if CONFIG_BLOCK_OPS_CHECK_SIZE
1901
1894
char * p_dst = (char * )dst ;
1902
1895
char const * p_src = (char const * )src ;
1903
1896
@@ -1912,38 +1905,58 @@ inline void *h_memmove_real(void *dst, const void *src, size_t len) {
1912
1905
* -- p_dst = * -- p_src ;
1913
1906
}
1914
1907
} else {
1915
- dst = h_memcpy (dst , src , len );
1908
+ dst = h_memcpy_real (dst , src , len );
1916
1909
}
1917
1910
1918
1911
return dst ;
1919
- }
1920
-
1921
- EXPORT void * h_memmove (void * dst , const void * src , size_t len ) {
1922
- if (len > malloc_object_size_fast (src )) {
1923
- fatal_error ("memmove read overflow" );
1924
- }
1925
- if (len > malloc_object_size_fast (dst )) {
1926
- fatal_error ("memmove buffer overflow" );
1927
- }
1928
-
1929
- return h_memmove_real (dst , src , len );
1912
+ #else
1913
+ return memmove (dst , src , len );
1914
+ #endif
1930
1915
}
1931
1916
1932
1917
inline void * h_memset_real (void * dst , int value , size_t len ) {
1918
+ #if CONFIG_BLOCK_OPS_CHECK_SIZE
1933
1919
char * p_dst = (char * )dst ;
1934
1920
1935
1921
while (len -- ) {
1936
1922
* p_dst ++ = value ;
1937
1923
}
1938
1924
1939
1925
return dst ;
1926
+ #else
1927
+ return memset (dst , value , len );
1928
+ #endif
1940
1929
}
1941
1930
1942
- EXPORT void * h_memset (void * dst , int value , size_t len ) {
1931
+ #if CONFIG_BLOCK_OPS_CHECK_SIZE
1932
+ EXPORT void * h_memcpy (void * dst , const void * src , size_t len ) {
1933
+ if (len > malloc_object_size_fast (src )) {
1934
+ fatal_error ("memcpy read overflow" );
1935
+ }
1943
1936
if (len > malloc_object_size_fast (dst )) {
1944
- fatal_error ("memset buffer overflow" );
1937
+ fatal_error ("memcpy buffer overflow" );
1945
1938
}
1946
1939
1940
+ return h_memcpy_real (dst , src , len );
1941
+ }
1942
+
1943
+ EXPORT void * h_memmove (void * dst , const void * src , size_t len ) {
1944
+ if (len > malloc_object_size_fast (src )) {
1945
+ fatal_error ("memmove read overflow" );
1946
+ }
1947
+ if (len > malloc_object_size_fast (dst )) {
1948
+ fatal_error ("memmove buffer overflow" );
1949
+ }
1950
+
1951
+ return h_memmove_real (dst , src , len );
1952
+ }
1953
+
1954
+ EXPORT void * h_memset (void * dst , int value , size_t len ) {
1955
+ //if (len > malloc_object_size_fast(dst)) {
1956
+ // fatal_error("memset buffer overflow");
1957
+ //}
1958
+ fprintf (stderr , "memset: dst: %p, value: %d len: %zu\n" , dst , value , len );
1959
+
1947
1960
return h_memset_real (dst , value , len );
1948
1961
}
1949
1962
#endif
0 commit comments