From e14164702f1e20019996f4bbdf272843538de833 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Fri, 17 Nov 2000 07:18:56 +0000 Subject: Use the byte-read count to decrement the number of bytes left to read 2000-11-17 Jeffrey Stedfast * providers/imap/camel-imap-command.c (imap_read_untagged): Use the byte-read count to decrement the number of bytes left to read rather than using strlen. Not only does this protect against a DoS (embedded NUL chars in the literal string would make strlen inaccurate) but it also improves performace a little. * camel-remote-store.c (remote_recv_line): *Sigh* Return the number of bytes read on success rather than 0. Also don't use camel_stream_buffer_read_line since we can't get an accurate octet count. svn path=/trunk/; revision=6599 --- camel/providers/imap/camel-imap-command.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'camel/providers/imap') diff --git a/camel/providers/imap/camel-imap-command.c b/camel/providers/imap/camel-imap-command.c index e9808d5a1f..f1be74b4a9 100644 --- a/camel/providers/imap/camel-imap-command.c +++ b/camel/providers/imap/camel-imap-command.c @@ -239,6 +239,7 @@ imap_read_untagged (CamelImapStore *store, char *line, CamelException *ex) int fulllen, length, left, i; GPtrArray *data; char *end, *p; + int n; p = strrchr (line, '{'); if (!p) @@ -257,8 +258,7 @@ imap_read_untagged (CamelImapStore *store, char *line, CamelException *ex) g_ptr_array_add (data, line); left = length; while (1) { - if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store), - &line, ex) < 0) { + if ((n = camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store), &line, ex)) < 0) { for (i = 0; i < data->len; i++) g_free (data->pdata[i]); g_ptr_array_free (data, TRUE); @@ -268,9 +268,9 @@ imap_read_untagged (CamelImapStore *store, char *line, CamelException *ex) if (left <= 0) break; - - left -= strlen (line) + 2; - + + left -= n + 2; + /* The output string will have only LF, not CRLF, so * decrement the length by one. */ -- cgit v1.2.3