Merge branch 'asraa-fix-ubsan'
This commit is contained in:
commit
6d7f1256de
|
@ -82,8 +82,10 @@ void nghttp2_buf_reset(nghttp2_buf *buf) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void nghttp2_buf_wrap_init(nghttp2_buf *buf, uint8_t *begin, size_t len) {
|
void nghttp2_buf_wrap_init(nghttp2_buf *buf, uint8_t *begin, size_t len) {
|
||||||
buf->begin = buf->pos = buf->last = buf->mark = begin;
|
buf->begin = buf->pos = buf->last = buf->mark = buf->end = begin;
|
||||||
buf->end = begin + len;
|
if (len) {
|
||||||
|
buf->end += len;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int buf_chain_new(nghttp2_buf_chain **chain, size_t chunk_length,
|
static int buf_chain_new(nghttp2_buf_chain **chain, size_t chunk_length,
|
||||||
|
|
|
@ -818,8 +818,10 @@ int nghttp2_frame_unpack_origin_payload(nghttp2_extension *frame,
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
origin = frame->payload;
|
origin = frame->payload;
|
||||||
p = payload;
|
p = end = payload;
|
||||||
end = p + payloadlen;
|
if (payloadlen) {
|
||||||
|
end += payloadlen;
|
||||||
|
}
|
||||||
|
|
||||||
for (; p != end;) {
|
for (; p != end;) {
|
||||||
if (end - p < 2) {
|
if (end - p < 2) {
|
||||||
|
@ -897,9 +899,25 @@ nghttp2_settings_entry *nghttp2_frame_iv_copy(const nghttp2_settings_entry *iv,
|
||||||
}
|
}
|
||||||
|
|
||||||
int nghttp2_nv_equal(const nghttp2_nv *a, const nghttp2_nv *b) {
|
int nghttp2_nv_equal(const nghttp2_nv *a, const nghttp2_nv *b) {
|
||||||
return a->namelen == b->namelen && a->valuelen == b->valuelen &&
|
if (a->namelen != b->namelen || a->valuelen != b->valuelen) {
|
||||||
memcmp(a->name, b->name, a->namelen) == 0 &&
|
return 0;
|
||||||
memcmp(a->value, b->value, a->valuelen) == 0;
|
}
|
||||||
|
|
||||||
|
if (a->name == NULL || b->name == NULL) {
|
||||||
|
assert(a->namelen == 0);
|
||||||
|
assert(b->namelen == 0);
|
||||||
|
} else if (memcmp(a->name, b->name, a->namelen) != 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->value == NULL || b->value == NULL) {
|
||||||
|
assert(a->valuelen == 0);
|
||||||
|
assert(b->valuelen == 0);
|
||||||
|
} else if (memcmp(a->value, b->value, a->valuelen) != 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nghttp2_nv_array_del(nghttp2_nv *nva, nghttp2_mem *mem) {
|
void nghttp2_nv_array_del(nghttp2_nv *nva, nghttp2_mem *mem) {
|
||||||
|
|
|
@ -5353,9 +5353,11 @@ static ssize_t inbound_frame_effective_readlen(nghttp2_inbound_frame *iframe,
|
||||||
return (ssize_t)(readlen);
|
return (ssize_t)(readlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const uint8_t sin[] = {0};
|
||||||
|
|
||||||
ssize_t nghttp2_session_mem_recv(nghttp2_session *session, const uint8_t *in,
|
ssize_t nghttp2_session_mem_recv(nghttp2_session *session, const uint8_t *in,
|
||||||
size_t inlen) {
|
size_t inlen) {
|
||||||
const uint8_t *first = in, *last = in + inlen;
|
const uint8_t *first, *last;
|
||||||
nghttp2_inbound_frame *iframe = &session->iframe;
|
nghttp2_inbound_frame *iframe = &session->iframe;
|
||||||
size_t readlen;
|
size_t readlen;
|
||||||
ssize_t padlen;
|
ssize_t padlen;
|
||||||
|
@ -5366,6 +5368,14 @@ ssize_t nghttp2_session_mem_recv(nghttp2_session *session, const uint8_t *in,
|
||||||
size_t pri_fieldlen;
|
size_t pri_fieldlen;
|
||||||
nghttp2_mem *mem;
|
nghttp2_mem *mem;
|
||||||
|
|
||||||
|
if (in == NULL) {
|
||||||
|
assert(inlen == 0);
|
||||||
|
in = sin;
|
||||||
|
}
|
||||||
|
|
||||||
|
first = in;
|
||||||
|
last = in + inlen;
|
||||||
|
|
||||||
DEBUGF("recv: connection recv_window_size=%d, local_window=%d\n",
|
DEBUGF("recv: connection recv_window_size=%d, local_window=%d\n",
|
||||||
session->recv_window_size, session->local_window_size);
|
session->recv_window_size, session->local_window_size);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue