diff options
-rw-r--r-- | src/daemon/session.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/daemon/session.c b/src/daemon/session.c index 8854b94b..e3aa1241 100644 --- a/src/daemon/session.c +++ b/src/daemon/session.c | |||
@@ -158,6 +158,8 @@ MHD_get_next_header_line(struct MHD_Session * session) { | |||
158 | size_t pos; | 158 | size_t pos; |
159 | size_t start; | 159 | size_t start; |
160 | 160 | ||
161 | if (session->readLoc == 0) | ||
162 | return NULL; | ||
161 | start = 0; | 163 | start = 0; |
162 | pos = 0; | 164 | pos = 0; |
163 | rbuf = session->read_buffer; | 165 | rbuf = session->read_buffer; |
@@ -189,11 +191,11 @@ MHD_get_next_header_line(struct MHD_Session * session) { | |||
189 | return NULL; | 191 | return NULL; |
190 | } | 192 | } |
191 | /* found, check if we have proper CRLF */ | 193 | /* found, check if we have proper CRLF */ |
192 | rbuf = malloc(pos); | 194 | rbuf = malloc(pos + 1); |
193 | memcpy(rbuf, | 195 | memcpy(rbuf, |
194 | session->read_buffer, | 196 | session->read_buffer, |
195 | pos-1); | 197 | pos); |
196 | rbuf[pos-1] = '\0'; | 198 | rbuf[pos] = '\0'; |
197 | if ( (session->read_buffer[pos] == '\r') && | 199 | if ( (session->read_buffer[pos] == '\r') && |
198 | (session->read_buffer[pos+1] == '\n') ) | 200 | (session->read_buffer[pos+1] == '\n') ) |
199 | pos++; /* skip both r and n */ | 201 | pos++; /* skip both r and n */ |