From a8a862c90989e8d81bcebab5bbe63d4984d00b96 Mon Sep 17 00:00:00 2001 From: George Kadianakis Date: Fri, 18 May 2012 15:04:48 +0300 Subject: [PATCH] Ignore unknown lines from managed proxies. --- changes/bug5910 | 4 ++++ src/or/transports.c | 13 ++----------- 2 files changed, 6 insertions(+), 11 deletions(-) create mode 100644 changes/bug5910 diff --git a/changes/bug5910 b/changes/bug5910 new file mode 100644 index 0000000000..712ed55c04 --- /dev/null +++ b/changes/bug5910 @@ -0,0 +1,4 @@ + o Minor bugfixes: + - Don't abort the managed proxy protocol if the managed proxy + sends us an unrecognized line; ignore it instead. Fixes bug + 5910; bugfix on 0.2.3.9-alpha. diff --git a/src/or/transports.c b/src/or/transports.c index 5f650d107a..a20decfc03 100644 --- a/src/or/transports.c +++ b/src/or/transports.c @@ -119,10 +119,6 @@ static INLINE void free_execve_args(char **arg); #define PROTO_CMETHODS_DONE "CMETHODS DONE" #define PROTO_SMETHODS_DONE "SMETHODS DONE" -/* The smallest valid managed proxy protocol line that can - appear. It's the size of "VERSION 1" */ -#define SMALLEST_MANAGED_LINE_SIZE 9 - /** Number of environment variables for managed proxy clients/servers. */ #define ENVIRON_SIZE_CLIENT 3 #define ENVIRON_SIZE_SERVER 7 /* XXX known to be too high, but that's ok */ @@ -633,12 +629,6 @@ handle_proxy_line(const char *line, managed_proxy_t *mp) log_info(LD_GENERAL, "Got a line from managed proxy '%s': (%s)", mp->argv[0], line); - if (strlen(line) < SMALLEST_MANAGED_LINE_SIZE) { - log_warn(LD_GENERAL, "Managed proxy configuration line is too small. " - "Discarding"); - goto err; - } - if (!strcmpstart(line, PROTO_ENV_ERROR)) { if (mp->conf_state != PT_PROTO_LAUNCHED) goto err; @@ -712,7 +702,8 @@ handle_proxy_line(const char *line, managed_proxy_t *mp) return; } - log_warn(LD_CONFIG, "Unknown line received by managed proxy. (%s)", line); + log_notice(LD_GENERAL, "Unknown line received by managed proxy (%s).", line); + return; err: mp->conf_state = PT_PROTO_BROKEN;