From f99b91505bc823e07fae3c83b17210753fe8b3f8 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 21 Sep 2005 23:13:29 +0000 Subject: [PATCH] Make write_escaped_data more bulletproof; backport candidate. svn:r5106 --- src/or/control.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/or/control.c b/src/or/control.c index 36f0cffee2..9767d0e2e8 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -290,7 +290,7 @@ write_escaped_data(const char *data, size_t len, int translate_newlines, int start_of_line; for (i=0; i<(int)len; ++i) { if (data[i]== '\n') - ++sz_out; + sz_out += 2; /* Maybe add a CR; maybe add a dot. */ } *out = outp = tor_malloc(sz_out+1); end = data+len; @@ -317,6 +317,8 @@ write_escaped_data(const char *data, size_t len, int translate_newlines, *outp++ = '.'; *outp++ = '\r'; *outp++ = '\n'; + *outp = '\0'; /* NUL-terminate just in case. */ + tor_assert((outp - *out) <= (sz_out)); return outp - *out; }