You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by sh...@apache.org on 2009/07/13 23:27:18 UTC

svn commit: r793716 - in /qpid/trunk/qpid/cpp/src: qpid/broker/Broker.cpp qpid/broker/Broker.h qpid/broker/posix/BrokerDefaults.cpp qpid/broker/windows/BrokerDefaults.cpp windows/QpiddBroker.cpp

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-subscribe@qpid.apache.org