summaryrefslogtreecommitdiff
path: root/gweb
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-10-31 01:23:24 +0200
committerMarcel Holtmann <marcel@holtmann.org>2010-10-31 01:23:24 +0200
commit65bbd6ca12d11c48d0333465076769abbf67476e (patch)
tree0b588d154b221c2c78970be2c4e94fd864312365 /gweb
parent38156cef9ee7dd8f704919468028202373c40e72 (diff)
downloadconnman-65bbd6ca12d11c48d0333465076769abbf67476e.tar.gz
connman-65bbd6ca12d11c48d0333465076769abbf67476e.tar.bz2
connman-65bbd6ca12d11c48d0333465076769abbf67476e.zip
Ensure that chunk buffer is '\0' terminated
Diffstat (limited to 'gweb')
-rw-r--r--gweb/gweb.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gweb/gweb.c b/gweb/gweb.c
index bdf90da8..02bc6591 100644
--- a/gweb/gweb.c
+++ b/gweb/gweb.c
@@ -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;