Browse Source

Make write_escaped_data more bulletproof; backport candidate.

svn:r5106
Nick Mathewson 20 years ago
parent
commit
f99b91505b
1 changed files with 3 additions and 1 deletions
  1. 3 1
      src/or/control.c

+ 3 - 1
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;
 }