mirror of
https://github.com/openssl/openssl.git
synced 2025-04-06 20:20:50 +08:00
Avoid truncating the pointer on x32 platform.
The 64 bit pointer must not be cast to 32bit unsigned long on x32 platform. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org>
This commit is contained in:
parent
e7e5d608fb
commit
40c60b0d73
@ -230,11 +230,15 @@ int afalg_fin_cipher_aio(afalg_aio *aio, int sfd, unsigned char *buf,
|
||||
memset(cb, '\0', sizeof(*cb));
|
||||
cb->aio_fildes = sfd;
|
||||
cb->aio_lio_opcode = IOCB_CMD_PREAD;
|
||||
/*
|
||||
* The pointer has to be converted to unsigned value first to avoid
|
||||
* sign extension on cast to 64 bit value
|
||||
*/
|
||||
cb->aio_buf = (uint64_t)(unsigned long)buf;
|
||||
if (sizeof(buf) != sizeof(cb->aio_buf)) {
|
||||
/*
|
||||
* The pointer has to be converted to 32 bit unsigned value first
|
||||
* to avoid sign extension on cast to 64 bit value
|
||||
*/
|
||||
cb->aio_buf = (uint64_t)(unsigned long)buf;
|
||||
} else {
|
||||
cb->aio_buf = (uint64_t)buf;
|
||||
}
|
||||
cb->aio_offset = 0;
|
||||
cb->aio_data = 0;
|
||||
cb->aio_nbytes = len;
|
||||
|
Loading…
x
Reference in New Issue
Block a user