From 0e7182533ce53592139e8ea35fab48b4ddaa43ae Mon Sep 17 00:00:00 2001 From: Robert James Kaes Date: Fri, 26 Apr 2002 16:43:20 +0000 Subject: Need to check the return value of hashmap_first() since it could be negative. --- ChangeLog | 6 ++++++ src/reqs.c | 50 ++++++++++++++++++++++++++------------------------ 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7bafb66..5e13517 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-04-26 Robert James Kaes + + * src/reqs.c (process_client_headers): + (process_server_headers): Test the return value of hashmap_first() + since the hashmap could be empty (returning a -1 via hashmap_first.) + 2002-04-25 Robert James Kaes * src/reqs.c (remove_connection_headers): Handle both the diff --git a/src/reqs.c b/src/reqs.c index 18bc675..f5cf0a6 100644 --- a/src/reqs.c +++ b/src/reqs.c @@ -1,4 +1,4 @@ -/* $Id: reqs.c,v 1.67 2002-04-25 19:20:56 rjkaes Exp $ +/* $Id: reqs.c,v 1.68 2002-04-26 16:43:20 rjkaes Exp $ * * This is where all the work in tinyproxy is actually done. Incoming * connections have a new thread created for them. The thread then @@ -769,18 +769,19 @@ process_client_headers(struct conn_s *connptr) /* * Output all the remaining headers to the remote machine. */ - for (iter = hashmap_first(hashofheaders); - !hashmap_is_end(hashofheaders, iter); - ++iter) { - hashmap_return_entry(hashofheaders, - iter, - &data, - (void**)&header); - - if (!is_anonymous_enabled() || anonymous_search(data) <= 0) { - write_message(connptr->server_fd, - "%s: %s\r\n", - data, header); + iter = hashmap_first(hashofheaders); + if (iter >= 0) { + for ( ; !hashmap_is_end(hashofheaders, iter); ++iter) { + hashmap_return_entry(hashofheaders, + iter, + &data, + (void**)&header); + + if (!is_anonymous_enabled() || anonymous_search(data) <= 0) { + write_message(connptr->server_fd, + "%s: %s\r\n", + data, header); + } } } @@ -879,17 +880,18 @@ process_server_headers(struct conn_s *connptr) /* * Okay, output all the remaining headers to the client. */ - for (iter = hashmap_first(hashofheaders); - !hashmap_is_end(hashofheaders, iter); - ++iter) { - hashmap_return_entry(hashofheaders, - iter, - &data, - (void **)&header); - - write_message(connptr->client_fd, - "%s: %s\r\n", - data, header); + iter = hashmap_first(hashofheaders); + if (iter >= 0) { + for ( ; !hashmap_is_end(hashofheaders, iter); ++iter) { + hashmap_return_entry(hashofheaders, + iter, + &data, + (void **)&header); + + write_message(connptr->client_fd, + "%s: %s\r\n", + data, header); + } } hashmap_delete(hashofheaders); -- cgit v1.2.3