From dfc7584869a55b0dca46a41a8396f94cd3212612 Mon Sep 17 00:00:00 2001
From: Peter Baumann
Date: Wed, 1 Sep 2010 15:44:30 +0200
Subject: avoid buffer oflo in rasserver invocation, use ARG_MAX consistently
(also in place of self-defined MAX_CMD_LEN)
---
rasmgr/rasmgr_srv.cc | 6 +++---
rasmgr/rasmgr_srv.hh | 9 +++------
2 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/rasmgr/rasmgr_srv.cc b/rasmgr/rasmgr_srv.cc
index 91c593c..057a39d 100644
--- a/rasmgr/rasmgr_srv.cc
+++ b/rasmgr/rasmgr_srv.cc
@@ -407,7 +407,7 @@ int RasServer::startServer()
sTypeString= serverType==SERVERTYPE_FLAG_RNP ? "--rnp" : sTypeString;
const char *rasmgrHost = ptrServerHost->useLocalHost() ? "localhost" : config.getHostName();
- char command[MAX_CMD_LEN+1];
+ char command[ARG_MAX+1];
const char *SPRINTF_FORMAT = "%s %s %s --rsn %s %s --lport %ld --mgr %s --mgrport %ld --connect %s %s";
// check for buffer oflo
unsigned int commandLen =
@@ -418,9 +418,9 @@ int RasServer::startServer()
+ 4 // aka strlen(config.getListenPort())
+ strlen(ptrDatabaseHost->getConnectionString())
+ strlen(extraParam);
- if (commandLen > MAX_CMD_LEN)
+ if (commandLen > ARG_MAX)
{
- TALK( "RasServer::startServer(): fatal error: command line can host " << MAX_CMD_LEN << " bytes, but needs " << commandLen << "." );
+ TALK( "RasServer::startServer(): fatal error: command line can host " << ARG_MAX << " bytes, but needs " << commandLen << "." );
std::cout<<"Error: rasserver command line too long, cannot launch. Disappointedly aborting server start." <rpc prognum; 'h' ->TCP/IP port
- char extraParam[MAX_CMD_LEN];
+ char extraParam[ARG_MAX];
- char executableName[MAX_CMD_LEN];
+ char executableName[ARG_MAX];
DatabaseHost *ptrDatabaseHost;
//char connStr[100];
--
cgit