summaryrefslogtreecommitdiffstats
path: root/rasmgr/rasmgr_localsrv.cc
diff options
context:
space:
mode:
authorPeter Baumann <baumann@floridita.rasdaman>2009-07-28 18:20:32 +0200
committerPeter Baumann <baumann@rasdaman.org>2009-07-28 17:55:00 +0200
commitb80ca404d8ab24ff72ff4197b020363f2d682f77 (patch)
treef179ceec1a5785c72009a6365bc6987f52d5f02d /rasmgr/rasmgr_localsrv.cc
parent01b34fa3871ad50fb68ff163034de51e1f4dd284 (diff)
downloadrasdaman-upstream-b80ca404d8ab24ff72ff4197b020363f2d682f77.tar.gz
rasdaman-upstream-b80ca404d8ab24ff72ff4197b020363f2d682f77.tar.xz
rasdaman-upstream-b80ca404d8ab24ff72ff4197b020363f2d682f77.zip
PB: fixed bug: rasmgr dies when spawning rasserver; reason was: insufficient cmd line buffer
Diffstat (limited to 'rasmgr/rasmgr_localsrv.cc')
-rw-r--r--rasmgr/rasmgr_localsrv.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/rasmgr/rasmgr_localsrv.cc b/rasmgr/rasmgr_localsrv.cc
index 0d16318..ede2286 100644
--- a/rasmgr/rasmgr_localsrv.cc
+++ b/rasmgr/rasmgr_localsrv.cc
@@ -41,6 +41,7 @@ using namespace std;
#include "rasmgr_srv.hh"
#include <signal.h>
#include <time.h>
+#include <linux/limits.h> // ARG_MAX
#include "raslib/rminit.hh"
@@ -107,7 +108,15 @@ LocalServerManager::~LocalServerManager()
bool LocalServerManager::startNewServer(const char* commandline)
{
ENTER( "LocalServerManager::startNewServer: enter. cmdLine=" << commandline );
- char localcomm[300];
+ char localcomm[ARG_MAX];
+
+ if (strlen(commandline) >= ARG_MAX)
+ {
+ VLOG <<"Error: rasserver launch command line too long: " << commandline <<std::endl;
+ LEAVE( "LocalServerManager::startNewServer: leave. cmd line too long, result=false." );
+ return false;
+ }
+
strcpy(localcomm,commandline);
int i;