diff --git a/sys/opencrypto/criov.c b/sys/opencrypto/criov.c --- a/sys/opencrypto/criov.c +++ b/sys/opencrypto/criov.c @@ -404,16 +404,16 @@ void * crypto_cursor_segment(struct crypto_buffer_cursor *cc, size_t *len) { + if (cc->cc_buf_len == 0) { + *len = 0; + return (NULL); + } switch (cc->cc_type) { case CRYPTO_BUF_CONTIG: *len = cc->cc_buf_len; return (cc->cc_buf); case CRYPTO_BUF_MBUF: case CRYPTO_BUF_SINGLE_MBUF: - if (cc->cc_mbuf == NULL) { - *len = 0; - return (NULL); - } if (cc->cc_mbuf->m_flags & M_EXTPG) return (m_epg_segment(cc->cc_mbuf, cc->cc_offset, len)); *len = cc->cc_mbuf->m_len - cc->cc_offset;