{
char *body_utf8 = getUTF8FromLatin1(request->body);
- strcpy(request->body, body_utf8);
+ strncpy(request->body, body_utf8, MAX_HTTP_BODY_SIZE);
+ request->body[MAX_HTTP_BODY_SIZE] = '\0';
+
checked_free(body_utf8);
}
{
char *body_latin1 = getLatin1FromUTF8(response->body);
- strcpy(response->body, body_latin1);
- checked_free(body_latin1);
+ strncpy(response->body, body_latin1, MAX_HTTP_BODY_SIZE);
+ response->body[MAX_HTTP_BODY_SIZE] = '\0';
response->body_size = strlen(response->body);
+
+ checked_free(body_latin1);
}
static void SetHttpResponseToDefaults(struct HttpResponse *response)
response->status_text[0] = '\0';
}
+struct HttpResponse *GetHttpResponseFromBuffer(void *buffer, int size)
+{
+ if (size > MAX_HTTP_BODY_SIZE)
+ return NULL;
+
+ struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse));
+
+ SetHttpResponseToDefaults(response);
+
+ strncpy(response->body, buffer, MAX_HTTP_BODY_SIZE);
+ response->body[MAX_HTTP_BODY_SIZE] = '\0';
+ response->body_size = MIN(size, MAX_HTTP_BODY_SIZE);
+
+ return response;
+}
+
static boolean SetHTTPResponseCode(struct HttpResponse *response, char *buffer)
{
char *prefix = "HTTP/1.1 ";
checked_free(send_buffer);
checked_free(recv_buffer);
+ runtime.use_api_server = success;
+
return success;
}