Author: shuston Date: Mon Jul 13 21:27:14 2009 New Revision: 793716 URL: http://svn.apache.org/viewvc?rev=793716&view=rev Log: Replace getenv usage with more secure Windows calls - silences compile diagnostics. This involved adding a new method Broker::Options::getHome() implemented separately for Windows and posix BrokerDefaults.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h qpid/trunk/qpid/cpp/src/qpid/broker/posix/BrokerDefaults.cpp qpid/trunk/qpid/cpp/src/qpid/broker/windows/BrokerDefaults.cpp qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp?rev=793716&r1=793715&r2=793716&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp Mon Jul 13 21:27:14 2009 @@ -57,7 +57,6 @@ #include <iostream> #include <memory> -#include <stdlib.h> using qpid::sys::ProtocolFactory; using qpid::sys::Poller; @@ -96,9 +95,9 @@ { int c = sys::SystemInfo::concurrency(); workerThreads=c+1; - char *home = ::getenv("HOME"); + std::string home = getHome(); - if (home == 0) + if (home.length() == 0) dataDir += DEFAULT_DATA_DIR_LOCATION; else dataDir += home; Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h?rev=793716&r1=793715&r2=793716&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h (original) +++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h Mon Jul 13 21:27:14 2009 @@ -111,6 +111,9 @@ bool requireEncrypted; std::string knownHosts; uint32_t maxSessionRate; + + private: + std::string getHome(); }; private: Modified: qpid/trunk/qpid/cpp/src/qpid/broker/posix/BrokerDefaults.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/posix/BrokerDefaults.cpp?rev=793716&r1=793715&r2=793716&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/broker/posix/BrokerDefaults.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/broker/posix/BrokerDefaults.cpp Mon Jul 13 21:27:14 2009 @@ -20,6 +20,7 @@ */ #include "qpid/broker/Broker.h" +#include <stdlib.h> namespace qpid { namespace broker { @@ -27,4 +28,13 @@ const std::string Broker::Options::DEFAULT_DATA_DIR_LOCATION("/tmp"); const std::string Broker::Options::DEFAULT_DATA_DIR_NAME("/.qpidd"); -}} +std::string +Broker::Options::getHome() { + std::string home; + char *home_c = ::getenv("HOME"); + if (home_c != 0) + home += home_c; + return home; +} + +}} // namespace qpid::broker Modified: qpid/trunk/qpid/cpp/src/qpid/broker/windows/BrokerDefaults.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/windows/BrokerDefaults.cpp?rev=793716&r1=793715&r2=793716&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/broker/windows/BrokerDefaults.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/broker/windows/BrokerDefaults.cpp Mon Jul 13 21:27:14 2009 @@ -20,6 +20,7 @@ */ #include "qpid/broker/Broker.h" +#include <stdlib.h> namespace qpid { namespace broker { @@ -27,4 +28,14 @@ const std::string Broker::Options::DEFAULT_DATA_DIR_LOCATION("\\TEMP"); const std::string Broker::Options::DEFAULT_DATA_DIR_NAME("\\QPIDD.DATA"); -}} +std::string +Broker::Options::getHome() { + std::string home; + char home_c[MAX_PATH+1]; + size_t unused; + if (0 == getenv_s (&unused, home_c, sizeof(home_c), "HOME")) + home += home_c; + return home; +} + +}} // namespace qpid::broker Modified: qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp?rev=793716&r1=793715&r2=793716&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp (original) +++ qpid/trunk/qpid/cpp/src/windows/QpiddBroker.cpp Mon Jul 13 21:27:14 2009 @@ -39,6 +39,7 @@ #include "qpid/broker/Broker.h" #include <iostream> +#include <windows.h> using namespace qpid::broker; @@ -145,16 +146,16 @@ quit(false), check(false) //, transport(TCP) { - char *tempDir = ::getenv("TEMP"); - - if (tempDir == 0) - piddir = "C:\\WINDOWS\\TEMP"; + const DWORD pathLen = MAX_PATH + 1; + char tempDir[pathLen]; + if (GetTempPath(pathLen, tempDir) == 0) + piddir = "C:\\WINDOWS\\TEMP\\"; else piddir = tempDir; - piddir += "\\qpidd"; + piddir += "qpidd"; // Only have TCP for now, so don't need this... - // ("transport", optValue(transport, "TRANSPORT"), "The transport for which to return the port") + // ("transport", optValue(transport, "TRANSPORT"), "The transport for which to return the port") addOptions() ("pid-dir", qpid::optValue(piddir, "DIR"), "Directory where port-specific PID file is stored") ("check,c", qpid::optValue(check), "Prints the broker's process ID to stdout and returns 0 if the broker is running, otherwise returns 1") --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org