Fix ubsan applying zero offset to null pointer occurred in unit test
This commit is contained in:
parent
78a56cf66f
commit
cf094bd56b
|
@ -899,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