aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/chunk.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-03-22 16:13:15 +0100
committerTobias Brunner <tobias@strongswan.org>2012-03-27 09:10:34 +0200
commit817ab8a8d428fe4854625ee0a804701449951833 (patch)
treee84d2c51f1b3986a69ca04e9c00a779b7c0fcf57 /src/libstrongswan/chunk.c
parentadfd3b992fc4effb81f8ce9268d66117e8c32557 (diff)
downloadstrongswan-817ab8a8d428fe4854625ee0a804701449951833.tar.bz2
strongswan-817ab8a8d428fe4854625ee0a804701449951833.tar.xz
Don't cast second argument of mem_printf_hook (%b) to size_t.
Also treat the given number as unsigned int. Due to the printf hook registration the second argument of mem_printf_hook (if called via printf etc.) is always of type int*. Casting this to a size_t pointer and then dereferencing that as int does not work on big endian machines if int is smaller than size_t (e.g. on ppc64). In order to make this change work if the argument is of a type larger than int, size_t for instance, the second argument for %b has to be casted to (u_)int.
Diffstat (limited to 'src/libstrongswan/chunk.c')
-rw-r--r--src/libstrongswan/chunk.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libstrongswan/chunk.c b/src/libstrongswan/chunk.c
index bb879002e..9397c4e44 100644
--- a/src/libstrongswan/chunk.c
+++ b/src/libstrongswan/chunk.c
@@ -668,7 +668,8 @@ int chunk_printf_hook(char *dst, size_t len, printf_hook_spec_t *spec,
if (!spec->hash)
{
- const void *new_args[] = {&chunk->ptr, &chunk->len};
+ u_int chunk_len = chunk->len;
+ const void *new_args[] = {&chunk->ptr, &chunk_len};
return mem_printf_hook(dst, len, spec, new_args);
}