On Tue, Jun 06, 2023 at 12:59:05PM +0200, Claudio Jeker wrote: > Replace some ibuf_data() + offset constructs to use ibuf_seek() the actual > interface built exactly for this. > > Should behave the same unless the code is already broken and overflowing > the buffer.
Agreed. Reads fine, ok tb > -- > :wq Claudio > > Index: crypto.c > =================================================================== > RCS file: /cvs/src/sbin/iked/crypto.c,v > retrieving revision 1.43 > diff -u -p -r1.43 crypto.c > --- crypto.c 23 May 2023 13:12:19 -0000 1.43 > +++ crypto.c 6 Jun 2023 10:52:59 -0000 > @@ -567,9 +567,9 @@ cipher_init(struct iked_cipher *encr, in > return (-1); > if (encr->encr_saltlength > 0) { > /* For AEADs the nonce is salt + IV (see RFC5282) */ > - nonce = ibuf_new(ibuf_data(encr->encr_key) + > + nonce = ibuf_new(ibuf_seek(encr->encr_key, > ibuf_size(encr->encr_key) - encr->encr_saltlength, > - encr->encr_saltlength); > + encr->encr_saltlength), encr->encr_saltlength); > if (nonce == NULL) > return (-1); > if (ibuf_add(nonce, ibuf_data(encr->encr_iv) , > ibuf_size(encr->encr_iv)) != 0) > Index: ikev2_msg.c > =================================================================== > RCS file: /cvs/src/sbin/iked/ikev2_msg.c,v > retrieving revision 1.93 > diff -u -p -r1.93 ikev2_msg.c > --- ikev2_msg.c 30 May 2023 08:41:15 -0000 1.93 > +++ ikev2_msg.c 6 Jun 2023 10:51:45 -0000 > @@ -644,7 +644,7 @@ ikev2_msg_decrypt(struct iked *env, stru > } > > cipher_setkey(sa->sa_encr, encr->buf, ibuf_length(encr)); > - cipher_setiv(sa->sa_encr, ibuf_data(src) + ivoff, ivlen); > + cipher_setiv(sa->sa_encr, ibuf_seek(src, ivoff, ivlen), ivlen); > if (cipher_init_decrypt(sa->sa_encr) == -1) { > log_info("%s: error initiating cipher.", __func__); > goto done; > @@ -676,7 +676,7 @@ ikev2_msg_decrypt(struct iked *env, stru > } > > if ((outlen = ibuf_length(out)) != 0) { > - if (cipher_update(sa->sa_encr, ibuf_data(src) + encroff, > + if (cipher_update(sa->sa_encr, ibuf_seek(src, encroff, encrlen), > encrlen, ibuf_data(out), &outlen) == -1) { > log_info("%s: error updating cipher.", __func__); > goto done; >