diff options
author | Silvio Traversaro <silvio@traversaro.it> | 2020-12-13 19:02:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-13 19:02:34 +0100 |
commit | 1f0a9b1bd8672582c8e585fe909be71cb86dd262 (patch) | |
tree | ef1d3e1ac3a500f01e64b5cf8b76855123d164e0 | |
parent | b1b55b2ae4a3c54c5dc8a8156decf39659c11381 (diff) | |
parent | d230e1ca57d1863bbb8e6ddfd3716b4832bf66c3 (diff) | |
download | dlfcn-win32-1f0a9b1bd8672582c8e585fe909be71cb86dd262.tar.gz dlfcn-win32-1f0a9b1bd8672582c8e585fe909be71cb86dd262.tar.bz2 dlfcn-win32-1f0a9b1bd8672582c8e585fe909be71cb86dd262.zip |
Merge pull request #90 from pali/master
Rewrite function save_err_ptr_str() to not use sprintf()
-rw-r--r-- | src/dlfcn.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/dlfcn.c b/src/dlfcn.c index 532af91..3251661 100644 --- a/src/dlfcn.c +++ b/src/dlfcn.c | |||
@@ -186,13 +186,20 @@ static void save_err_str( const char *str ) | |||
186 | 186 | ||
187 | static void save_err_ptr_str( const void *ptr ) | 187 | static void save_err_ptr_str( const void *ptr ) |
188 | { | 188 | { |
189 | char ptr_buf[19]; /* 0x<pointer> up to 64 bits. */ | 189 | char ptr_buf[2 + 2 * sizeof( ptr ) + 1]; |
190 | char num; | ||
191 | size_t i; | ||
190 | 192 | ||
191 | #ifdef _MSC_VER | 193 | ptr_buf[0] = '0'; |
192 | /* Supress warning C4996: 'sprintf': This function or variable may be unsafe */ | 194 | ptr_buf[1] = 'x'; |
193 | #pragma warning( suppress: 4996 ) | 195 | |
194 | #endif | 196 | for( i = 0; i < 2 * sizeof( ptr ); i++ ) |
195 | sprintf( ptr_buf, "0x%p", ptr ); | 197 | { |
198 | num = ( ( (ULONG_PTR) ptr ) >> ( 8 * sizeof( ptr ) - 4 * ( i + 1 ) ) ) & 0xF; | ||
199 | ptr_buf[2+i] = num + ( ( num < 0xA ) ? '0' : ( 'A' - 0xA ) ); | ||
200 | } | ||
201 | |||
202 | ptr_buf[2 + 2 * sizeof( ptr )] = 0; | ||
196 | 203 | ||
197 | save_err_str( ptr_buf ); | 204 | save_err_str( ptr_buf ); |
198 | } | 205 | } |