> I think the [mostly] portable way to turn a pointer into an integral > is a uintptr_t or size_t. I'm not sure about uintptr_t availability > because of std=c89/90. size_t will work for most platforms; but the > one I am aware it will fail is older hardware like i386/i486 with > 16-bit segments and 32-bit registers.
Yeah, this looks fishy... According to the libc manual, 13.10 Perform I/O Operations in Parallel (https://www.gnu.org/software/libc/manual/html_node/Asynchronous-I_002fO.html): volatile void *aio_buf This is a pointer to the buffer with the data to be written or the place where the read data is stored. That cast should be to a void*, not an unsigned long. Jeff On Thu, Mar 17, 2016 at 7:47 PM, Jeffrey Walton <noloa...@gmail.com> wrote: > I was looking at the code for afalg_fin_cipher_aio in engines/afalg/e_afalg.c: > > int afalg_fin_cipher_aio(afalg_aio *aio, int sfd, unsigned char *buf, > size_t len) > { > int r; > int retry = 0; > unsigned int done = 0; > struct iocb *cb; > struct timespec timeout; > struct io_event events[MAX_INFLIGHTS]; > u_int64_t eval = 0; > > timeout.tv_sec = 0; > timeout.tv_nsec = 0; > > cb = &(aio->cbt[0 % MAX_INFLIGHTS]); > memset(cb, '\0', sizeof(*cb)); > cb->aio_fildes = sfd; > cb->aio_lio_opcode = IOCB_CMD_PREAD; > cb->aio_buf = (unsigned long)buf; > cb->aio_offset = 0; > cb->aio_data = 0; > cb->aio_nbytes = len; > cb->aio_flags = IOCB_FLAG_RESFD; > cb->aio_resfd = aio->efd; > > ... > > That cast of 'buf' from 'unsigned char*' to 'unsigned long' does not > quite look right. > > I think the [mostly] portable way to turn a pointer into an integral > is a uintptr_t or size_t. I'm not sure about uintptr_t availability > because of std=c89/90. size_t will work for most platforms; but the > one I am aware it will fail is older hardware like i386/i486 with > 16-bit segments and 32-bit registers. > > Can anyone confirm that's supposed to be happening? > > On Thu, Mar 10, 2016 at 2:29 PM, Jeffrey Walton <noloa...@gmail.com> wrote: >> Working from Master: >> >> $ git reset --hard HEAD && git pull >> HEAD is now at fb04434 In the recipe using "makedepend", make sure the >> object file extension is there >> Already up-to-date. >> >> $ ./config >> ... >> $ make depend && make clean && make >> ... >> $ make test >> ... >> ( cd test; \ >> SRCTOP=../. \ >> BLDTOP=../. \ >> EXE_EXT= \ >> /usr/bin/perl .././test/run_tests.pl ) >> ../test/recipes/01-test_ordinals.t ........ ok >> ../test/recipes/05-test_bf.t .............. ok >> ... >> ../test/recipes/25-test_x509.t ............ ok >> ../test/recipes/30-test_afalg.t ........... >> ^C (after about 20 minutes) >> ... -- Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4443 Please log in as guest with password guest if prompted -- openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev