]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Use memdup_nulterm and check for NULs in handle_cmd_transport
authorNick Mathewson <nickm@torproject.org>
Tue, 16 Jul 2013 17:59:09 +0000 (13:59 -0400)
committerNick Mathewson <nickm@torproject.org>
Thu, 15 Aug 2013 16:03:35 +0000 (12:03 -0400)
src/or/ext_orport.c

index 7dfe6248b04057bafcb7ca527860794ed0fe44f8..e0980dedac2b7e893b3aa124225afcf03e560f49 100644 (file)
@@ -467,9 +467,13 @@ static int
 connection_ext_or_handle_cmd_transport(or_connection_t *conn,
                                        const char *payload, uint16_t len)
 {
-  char *transport_str = tor_malloc(len + 1); /* NUL-terminate the string */
-  memcpy(transport_str, payload, len);
-  transport_str[len] = 0;
+  char *transport_str;
+  if (memchr(payload, '\0', len)) {
+    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. */
   if (!string_is_C_identifier(transport_str)) {