From b73c5d785a71edade3ba473cbb13ec57aaeec7ed Mon Sep 17 00:00:00 2001 From: snowdrop Date: Mon, 27 Feb 2006 22:26:01 +0000 Subject: - removes a memleak in examples/csoap/simpleserver.c say_hello - adds various malloc error messages - does some libcsoap/*.c #include fixups - removes a memleak in libcsoap/soap-server.c soap_server_entry - removes the double free of SoapCtx->action (again!!!) - rewrites more or less cleanly hsocket_close - adds volatile keywords for thread shared data items - _httpd_parse_arguments cleanup - rwerites the _httpd_connection initialization - adds a call to pthread_attr_destroy in httpd_session_main - fixes a wrong loop initialization in _httpd_wait_for_emtpy_conn - fixes a memleak in httpd_session_main (req) - more sophisticated httpd_server example - HTTP authentication SEGfault without password fixed --- nanohttp/nanohttp-request.c | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) (limited to 'nanohttp/nanohttp-request.c') diff --git a/nanohttp/nanohttp-request.c b/nanohttp/nanohttp-request.c index 98880f2..1a3e998 100755 --- a/nanohttp/nanohttp-request.c +++ b/nanohttp/nanohttp-request.c @@ -1,5 +1,5 @@ /****************************************************************** -* $Id: nanohttp-request.c,v 1.10 2006/02/18 20:14:36 snowdrop Exp $ +* $Id: nanohttp-request.c,v 1.11 2006/02/27 22:26:02 snowdrop Exp $ * * CSOAP Project: A http client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -25,24 +25,35 @@ #include #endif +#ifdef HAVE_STDIO_H +#include +#endif + #ifdef HAVE_STRING_H #include #endif +#ifdef HAVE_ERRNO_H +#include +#endif + #ifdef MEM_DEBUG #include #endif -#include -#include - -/* request stuff */ - +#include "nanohttp-common.h" +#include "nanohttp-request.h" static hrequest_t * hrequest_new() { - hrequest_t *req = (hrequest_t *) malloc(sizeof(hrequest_t)); + hrequest_t *req; + + if (!(req = (hrequest_t *) malloc(sizeof(hrequest_t)))) { + + log_error2("malloc failed (%s)", strerror(errno)); + return NULL; + } req->method = HTTP_REQUEST_GET; req->version = HTTP_1_1; @@ -147,7 +158,11 @@ _hrequest_parse_header(char *data) /* create option pair */ if (opt_key != NULL) { - tmppair = (hpair_t *) malloc(sizeof(hpair_t)); + if (!(tmppair = (hpair_t *) malloc(sizeof(hpair_t)))) + { + log_error2("malloc failed (%s)", strerror(errno)); + return NULL; + } if (req->query == NULL) { @@ -161,11 +176,8 @@ _hrequest_parse_header(char *data) /* fill hpairnode_t struct */ qpair->next = NULL; - qpair->key = (char *) malloc(strlen(opt_key) + 1); - qpair->value = (char *) malloc(strlen(opt_value) + 1); - - strcpy(qpair->key, opt_key); - strcpy(qpair->value, opt_value); + qpair->key = strdup(opt_key); + qpair->value = strdup(opt_value); } } -- cgit v1.1-32-gdbae