|
@@ -1,4 +1,4 @@
|
|
|
-/* link_handshake.c -- generated by Trunnel v1.4.3.
|
|
|
+/* link_handshake.c -- generated by Trunnel v1.4.4.
|
|
|
* https://gitweb.torproject.org/trunnel.git
|
|
|
* You probably shouldn't edit this file.
|
|
|
*/
|
|
@@ -537,7 +537,8 @@ certs_cell_cert_encode(uint8_t *output, const size_t avail, const certs_cell_cer
|
|
|
trunnel_assert(written <= avail);
|
|
|
if (avail - written < elt_len)
|
|
|
goto truncated;
|
|
|
- memcpy(ptr, obj->body.elts_, elt_len);
|
|
|
+ if (elt_len)
|
|
|
+ memcpy(ptr, obj->body.elts_, elt_len);
|
|
|
written += elt_len; ptr += elt_len;
|
|
|
}
|
|
|
|
|
@@ -589,7 +590,8 @@ certs_cell_cert_parse_into(certs_cell_cert_t *obj, const uint8_t *input, const s
|
|
|
CHECK_REMAINING(obj->cert_len, truncated);
|
|
|
TRUNNEL_DYNARRAY_EXPAND(uint8_t, &obj->body, obj->cert_len, {});
|
|
|
obj->body.n_ = obj->cert_len;
|
|
|
- memcpy(obj->body.elts_, ptr, obj->cert_len);
|
|
|
+ if (obj->cert_len)
|
|
|
+ memcpy(obj->body.elts_, ptr, obj->cert_len);
|
|
|
ptr += obj->cert_len; remaining -= obj->cert_len;
|
|
|
trunnel_assert(ptr + remaining == input + len_in);
|
|
|
return len_in - remaining;
|
|
@@ -840,7 +842,8 @@ rsa_ed_crosscert_encode(uint8_t *output, const size_t avail, const rsa_ed_crossc
|
|
|
trunnel_assert(written <= avail);
|
|
|
if (avail - written < elt_len)
|
|
|
goto truncated;
|
|
|
- memcpy(ptr, obj->sig.elts_, elt_len);
|
|
|
+ if (elt_len)
|
|
|
+ memcpy(ptr, obj->sig.elts_, elt_len);
|
|
|
written += elt_len; ptr += elt_len;
|
|
|
}
|
|
|
|
|
@@ -899,7 +902,8 @@ rsa_ed_crosscert_parse_into(rsa_ed_crosscert_t *obj, const uint8_t *input, const
|
|
|
CHECK_REMAINING(obj->sig_len, truncated);
|
|
|
TRUNNEL_DYNARRAY_EXPAND(uint8_t, &obj->sig, obj->sig_len, {});
|
|
|
obj->sig.n_ = obj->sig_len;
|
|
|
- memcpy(obj->sig.elts_, ptr, obj->sig_len);
|
|
|
+ if (obj->sig_len)
|
|
|
+ memcpy(obj->sig.elts_, ptr, obj->sig_len);
|
|
|
ptr += obj->sig_len; remaining -= obj->sig_len;
|
|
|
trunnel_assert(ptr + remaining == input + len_in);
|
|
|
return len_in - remaining;
|
|
@@ -1467,7 +1471,8 @@ auth1_encode(uint8_t *output, const size_t avail, const auth1_t *obj, const auth
|
|
|
trunnel_assert(written <= avail);
|
|
|
if (avail - written < elt_len)
|
|
|
goto truncated;
|
|
|
- memcpy(ptr, obj->sig.elts_, elt_len);
|
|
|
+ if (elt_len)
|
|
|
+ memcpy(ptr, obj->sig.elts_, elt_len);
|
|
|
written += elt_len; ptr += elt_len;
|
|
|
}
|
|
|
|
|
@@ -1576,7 +1581,8 @@ auth1_parse_into(auth1_t *obj, const uint8_t *input, const size_t len_in, const
|
|
|
/* Parse u8 sig[] */
|
|
|
TRUNNEL_DYNARRAY_EXPAND(uint8_t, &obj->sig, remaining, {});
|
|
|
obj->sig.n_ = remaining;
|
|
|
- memcpy(obj->sig.elts_, ptr, remaining);
|
|
|
+ if (remaining)
|
|
|
+ memcpy(obj->sig.elts_, ptr, remaining);
|
|
|
ptr += remaining; remaining -= remaining;
|
|
|
trunnel_assert(ptr + remaining == input + len_in);
|
|
|
return len_in - remaining;
|