From 71598bc0f187b882a77e1e9caa327274bc5c895f Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Fri, 25 Aug 2000 01:50:34 +0000 Subject: [PATCH] better message when request is too large --- src/rsrv/camessage.c | 7 ++++++- src/rsrv/camsgtask.c | 3 ++- src/rsrv/caservertask.c | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/rsrv/camessage.c b/src/rsrv/camessage.c index 74dc96030..af1bfe168 100644 --- a/src/rsrv/camessage.c +++ b/src/rsrv/camessage.c @@ -2101,8 +2101,13 @@ int camessage (struct client *client, struct message_buffer *recv) tmp_postsize = ntohs (mp->m_postsize); msgsize = tmp_postsize + sizeof(*mp); - if (msgsize > bytes_left) + if (msgsize > bytes_left) { + if ( msgsize > recv->cnt ) { + log_header ( "rsrv: CA message received was too large", client, mp, nmsg ); + return RSRV_ERROR; + } return RSRV_OK; + } /* Have complete message (header + content) * -> convert the header elements diff --git a/src/rsrv/camsgtask.c b/src/rsrv/camsgtask.c index 8e2c25395..9bec1084e 100644 --- a/src/rsrv/camsgtask.c +++ b/src/rsrv/camsgtask.c @@ -64,7 +64,8 @@ void camsgtask (struct client *client) (int)(sizeof(client->recv.buf)-client->recv.cnt), 0); if (nchars==0){ if (CASDEBUG>0) { - errlogPrintf ("CAS: nill message disconnect\n"); + errlogPrintf ( "CAS: nill message disconnect ( %u bytes request )\n", + sizeof (client->recv.buf) - client->recv.cnt ); } break; } diff --git a/src/rsrv/caservertask.c b/src/rsrv/caservertask.c index a6c520f84..94a70ebc1 100644 --- a/src/rsrv/caservertask.c +++ b/src/rsrv/caservertask.c @@ -120,14 +120,14 @@ struct client *create_base_client () client->proto = IPPROTO_UDP; client->minor_version_number = CA_UKN_MINOR_VERSION; - client->send.maxstk = MAX_UDP; + client->send.maxstk = MAX_UDP_SEND; client->lock = semMutexMustCreate(); client->putNotifyLock = semMutexMustCreate(); client->addrqLock = semMutexMustCreate(); client->eventqLock = semMutexMustCreate(); - client->recv.maxstk = ETHERNET_MAX_UDP; + client->recv.maxstk = MAX_UDP_RECV; return client; }