Ensure that chunk buffer is '\0' terminated
authorMarcel Holtmann <marcel@holtmann.org>
Sat, 30 Oct 2010 23:23:24 +0000 (01:23 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 30 Oct 2010 23:23:24 +0000 (01:23 +0200)
gweb/gweb.c

index bdf90da..02bc659 100644 (file)
@@ -323,7 +323,7 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond,
        }
 
        status = g_io_channel_read_chars(channel, session->line_offset,
-                               session->line_space, &bytes_read, NULL);
+                               session->line_space - 1, &bytes_read, NULL);
 
        debug(session->web, "status %u bytes read %zu", status, bytes_read);
 
@@ -336,6 +336,7 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond,
        }
 
        if (session->header_done == TRUE) {
+               session->line_buffer[bytes_read] = '\0';
                session->result.length = bytes_read;
                call_result_func(session, 100);
                return TRUE;
@@ -359,6 +360,7 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond,
 
                if (count == 0) {
                        const void *ptr = session->current_line;
+                       session->current_line[bytes_read - consumed] = '\0';
                        session->header_done = TRUE;
                        session->result.buffer = ptr;
                        session->result.length = bytes_read - consumed;