提交 40c60b0d 编写于 作者: T Tomas Mraz 提交者: Matt Caswell

Avoid truncating the pointer on x32 platform.

The 64 bit pointer must not be cast to 32bit unsigned long on
x32 platform.
Reviewed-by: NTim Hudson <tjh@openssl.org>
Reviewed-by: NMatt Caswell <matt@openssl.org>
上级 e7e5d608
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册