[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r16309: Limit hidden service descriptor size to 20 kilobytes. (tor/branches/121-hs-authorization/src/or)
Author: kloesing
Date: 2008-07-31 15:05:25 -0400 (Thu, 31 Jul 2008)
New Revision: 16309
Modified:
tor/branches/121-hs-authorization/src/or/or.h
tor/branches/121-hs-authorization/src/or/routerparse.c
Log:
Limit hidden service descriptor size to 20 kilobytes.
Modified: tor/branches/121-hs-authorization/src/or/or.h
===================================================================
--- tor/branches/121-hs-authorization/src/or/or.h 2008-07-31 17:30:18 UTC (rev 16308)
+++ tor/branches/121-hs-authorization/src/or/or.h 2008-07-31 19:05:25 UTC (rev 16309)
@@ -647,6 +647,9 @@
* exchanging client authorization between hidden service and client. */
#define REND_DESC_COOKIE_LEN_BASE64 22
+/** Maximum size of v2 hidden service descriptors. */
+#define REND_DESC_MAX_SIZE 20 * 1024
+
/** Legal characters for use in authorized client names for a hidden
* service. */
#define REND_LEGAL_CLIENTNAME_CHARACTERS \
Modified: tor/branches/121-hs-authorization/src/or/routerparse.c
===================================================================
--- tor/branches/121-hs-authorization/src/or/routerparse.c 2008-07-31 17:30:18 UTC (rev 16308)
+++ tor/branches/121-hs-authorization/src/or/routerparse.c 2008-07-31 19:05:25 UTC (rev 16309)
@@ -3385,6 +3385,13 @@
eos = desc + strlen(desc);
else
eos = eos + 1;
+ /* Check length. */
+ if (strlen(desc) > REND_DESC_MAX_SIZE) {
+ log_warn(LD_REND, "Descriptor length is %i which exceeds "
+ "maximum descriptor size of %i kilobytes.",
+ strlen(desc), REND_DESC_MAX_SIZE);
+ goto err;
+ }
/* Tokenize descriptor. */
area = memarea_new(4096);
if (tokenize_string(area, desc, eos, tokens, desc_token_table, 0)) {