mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 07:37:02 +02:00
BUG/MEDIUM: shctx: make sure to keep all blocks aligned
The blocksize and the extra field are not necessarily aligned on a machine word. This can result in crashing an align-sensitive machine when initializing the shctx area. Let's round both sizes up to a pointer size to make this safe everywhere. This fixes issue #512. This should be backported as far as 1.8.
This commit is contained in:
parent
4fb196c1d6
commit
a7ddab0c25
@ -308,6 +308,10 @@ int shctx_init(struct shared_context **orig_shctx, int maxblocks, int blocksize,
|
||||
if (maxblocks <= 0)
|
||||
return 0;
|
||||
|
||||
/* make sure to align the records on a pointer size */
|
||||
blocksize = (blocksize + sizeof(void *) - 1) & -sizeof(void *);
|
||||
extra = (extra + sizeof(void *) - 1) & -sizeof(void *);
|
||||
|
||||
#ifndef USE_PRIVATE_CACHE
|
||||
if (shared)
|
||||
maptype = MAP_SHARED;
|
||||
|
Loading…
Reference in New Issue
Block a user