Use memdup_nulterm and check for NULs in handle_cmd_transport

This commit is contained in:
Nick Mathewson 2013-07-16 13:59:09 -04:00
parent 550af7be0a
commit 50136b6698

View File

@ -467,9 +467,13 @@ static int
connection_ext_or_handle_cmd_transport(or_connection_t *conn, connection_ext_or_handle_cmd_transport(or_connection_t *conn,
const char *payload, uint16_t len) const char *payload, uint16_t len)
{ {
char *transport_str = tor_malloc(len + 1); /* NUL-terminate the string */ char *transport_str;
memcpy(transport_str, payload, len); if (memchr(payload, '\0', len)) {
transport_str[len] = 0; log_fn(LOG_PROTOCOL_WARN, LD_NET, "Unexpected NUL in ExtORPort Transport");
return -1;
}
transport_str = tor_memdup_nulterm(payload, len);
/* Transport names MUST be C-identifiers. */ /* Transport names MUST be C-identifiers. */
if (!string_is_C_identifier(transport_str)) { if (!string_is_C_identifier(transport_str)) {