/* Provenance: openssl/openssl DTLS_RECORD_LAYER_clear (fixed). * repo: openssl/openssl * commit: 1ca5a124b48f1ffe6980ad33724b452fbd62da1e * parent: a0c8ec557d9cac078f032d76cdf684fe743eb382 * commit_url: https://github.com/openssl/openssl/commit/1ca5a124b48f1ffe6980ad33724b452fbd62da1e * cve: CVE-2026-54874 * license: Apache-2.0 * function: DTLS_RECORD_LAYER_clear * relpath: ssl/record/rec_layer_d1.c */ void DTLS_RECORD_LAYER_clear(RECORD_LAYER *rl) { DTLS_RECORD_LAYER *d; pitem *item = NULL; DTLS1_RECORD_DATA *rdata; pqueue *unprocessed_rcds; pqueue *processed_rcds; pqueue *buffered_app_data; d = rl->d; while ((item = pqueue_pop(d->unprocessed_rcds.q)) != NULL) { rdata = (DTLS1_RECORD_DATA *)item->data; OPENSSL_free(rdata->packet); OPENSSL_free(item->data); pitem_free(item); } while ((item = pqueue_pop(d->processed_rcds.q)) != NULL) { rdata = (DTLS1_RECORD_DATA *)item->data; if (rl->s->options & SSL_OP_CLEANSE_PLAINTEXT) OPENSSL_cleanse(rdata->packet, rdata->packet_length); OPENSSL_free(rdata->packet); OPENSSL_free(item->data); pitem_free(item); } while ((item = pqueue_pop(d->buffered_app_data.q)) != NULL) { rdata = (DTLS1_RECORD_DATA *)item->data; if (rl->s->options & SSL_OP_CLEANSE_PLAINTEXT) OPENSSL_cleanse(rdata->packet, rdata->packet_length); OPENSSL_free(rdata->packet); OPENSSL_free(item->data); pitem_free(item); } unprocessed_rcds = d->unprocessed_rcds.q; processed_rcds = d->processed_rcds.q; buffered_app_data = d->buffered_app_data.q; memset(d, 0, sizeof(*d)); d->unprocessed_rcds.q = unprocessed_rcds; d->processed_rcds.q = processed_rcds; d->buffered_app_data.q = buffered_app_data; }