mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-15 21:59:41 -04: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
1 changed files with 4 additions and 0 deletions
|
|
@ -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 a new issue