*/
/* b->pos is at header end, adjust by actual packet length */
- b->pos += pkt.len;
+ b->pos = pkt.data + pkt.len;
p = ngx_quic_skip_zero_padding(b);
}
uint64_t *largest_pn)
{
u_char clearflags, *p, *sample;
+ size_t len;
uint8_t badflags;
uint64_t pn, lpn;
ngx_int_t pnl, rc, key_phase;
secret = pkt->secret;
p = pkt->raw->pos;
+ len = pkt->data + pkt->len - p;
/* draft-ietf-quic-tls-23#section-5.4.2:
* the Packet Number field is assumed to be 4 bytes long
* AES-Based and ChaCha20-Based header protections sample 16 bytes
*/
- if (pkt->len < EVP_GCM_TLS_TAG_LEN + 4) {
+ if (len < EVP_GCM_TLS_TAG_LEN + 4) {
return NGX_DECLINED;
}
/* packet protection */
in.data = p;
- in.len = pkt->len - pnl;
+ in.len = len - pnl;
if (ngx_quic_long_pkt(pkt->flags)) {
badflags = clearflags & NGX_QUIC_PKT_LONG_RESERVED_BIT;
}
pkt->raw->pos = p;
- pkt->len = end - p;
return NGX_OK;
}
}
pkt->raw->pos = p;
- pkt->len = varint;
+ pkt->len = p + varint - pkt->data;
#ifdef NGX_QUIC_DEBUG_PACKETS
ngx_quic_hexdump(pkt->log, "quic DCID", pkt->dcid.data, pkt->dcid.len);
}
pkt->raw->pos = p;
- pkt->len = plen;
+ pkt->len = p + plen - pkt->data;
return NGX_OK;
}