From: Vsevolod Stakhov Date: Wed, 4 Mar 2009 16:14:30 +0000 (+0300) Subject: * Fix bug in url parser with freeing memory allocated by memory_pool allocator X-Git-Tag: 0.2.7~270 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c09632127fb53347239f5f35c0049d8d316a607;p=thirdparty%2Frspamd.git * Fix bug in url parser with freeing memory allocated by memory_pool allocator * Do not write to log if we don't do any read operation in dispatcher library --- diff --git a/src/buffer.c b/src/buffer.c index 5864da3827..fe5cf7a72e 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -176,12 +176,11 @@ read_buffers (int fd, rspamd_io_dispatcher_t *d, gboolean skip_read) d->in_buf->pos += r; d->in_buf->data->len += r; } - + msg_debug ("read_buffers: read %ld characters, policy is %s, watermark is: %ld", + (long int)r, d->policy == BUFFER_LINE ? "LINE" : "CHARACTER", + (long int)d->nchars); } - msg_debug ("read_buffers: read %ld characters, policy is %s, watermark is: %ld", - (long int)r, d->policy == BUFFER_LINE ? "LINE" : "CHARACTER", - (long int)d->nchars); saved_policy = d->policy; c = d->in_buf->data->begin; r = 0; diff --git a/src/url.c b/src/url.c index 09be6f1129..31851c3bba 100644 --- a/src/url.c +++ b/src/url.c @@ -446,7 +446,7 @@ char_needs_escaping (const char *p) */ static char * -reencode_escapes (const char *s, memory_pool_t *pool) +reencode_escapes (char *s, memory_pool_t *pool) { const char *p1; char *newstr, *p2; @@ -462,7 +462,7 @@ reencode_escapes (const char *s, memory_pool_t *pool) if (!encode_count) { /* The string is good as it is. */ - return memory_pool_strdup (pool, s); + return s; } oldlen = p1 - s; @@ -620,8 +620,8 @@ parse_uri(struct uri *uri, unsigned char *uristring, memory_pool_t *pool) /* Assume http as default protocol */ if (!uri->protocollen || (uri->protocol = get_protocol (struri(uri), uri->protocollen)) == PROTOCOL_UNKNOWN) { p = g_strconcat ("http://", uri->string, NULL); - g_free (uri->string); - uri->string = p; + uri->string = memory_pool_strdup (pool, p); + g_free (p); uri->protocol = PROTOCOL_HTTP; prefix_end = struri (uri) + 7; }