Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > e64b83ceebdf7d1e507336fa8d2ceaa2 > files > 1

spice-xpi-2.2-2.3.el5_6.1.src.rpm

From 66037044e71b346109773caa3dce707d6075a2ff Mon Sep 17 00:00:00 2001
From: Peter Hatina <phatina@redhat.com>
Date: Thu, 24 Mar 2011 14:58:22 +0100
Subject: [PATCH] get/set security issue

---
 SpiceXPI/src/plugin/nsScriptablePeer.cpp |   85 ++++------------
 SpiceXPI/src/plugin/plugin.cpp           |  172 ++++++++++++++++--------------
 SpiceXPI/src/plugin/plugin.h             |   73 +++++++------
 3 files changed, 147 insertions(+), 183 deletions(-)

diff --git a/SpiceXPI/src/plugin/nsScriptablePeer.cpp b/SpiceXPI/src/plugin/nsScriptablePeer.cpp
index c14b5d1..fab367a 100644
--- a/SpiceXPI/src/plugin/nsScriptablePeer.cpp
+++ b/SpiceXPI/src/plugin/nsScriptablePeer.cpp
@@ -300,15 +300,6 @@ AllocateScriptablePluginObject(NPP npp, NPClass *aClass)
   return new ScriptablePluginObject(npp);
 }
 
-static char * stringCopy(char *src)
-{
-  char* dest = (char *)NPN_MemAlloc(strlen(src) + 1);
-  if (dest) {    
-    strcpy(dest, src);
-  }
-  return dest;
-}
-
 bool
 ScriptablePluginObject::HasMethod(NPIdentifier name)
 {
@@ -353,99 +344,61 @@ ScriptablePluginObject::GetProperty(NPIdentifier name, NPVariant *result)
     return true;
 
   if (name == hostIP_id) {
-    char *tmp;
-    mPlugin->GetHostIP(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetHostIP(), *result);
   }
   else if (name == port_id) {
-    char *tmp;
-    mPlugin->GetPort(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetPort(), *result);
   }
   else if (name == SecurePort_id) {
-    char *tmp;
-    mPlugin->GetSecurePort(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetSecurePort(), *result);
   }
   else if (name == Password_id) {
-    char *tmp;
-    mPlugin->GetPassword(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetPassword(), *result);
   }
   else if (name == CipherSuite_id) {
-    char *tmp;
-    mPlugin->GetCipherSuite(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetCipherSuite(), *result);
   }
   else if (name == SSLChannels_id) {
-    char *tmp;
-    mPlugin->GetSSLChannels(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetSSLChannels(), *result);
   }
   else if (name == TrustStore_id) {
-    char *tmp;
-    mPlugin->GetTrustStore(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+      STRINGZ_TO_NPVARIANT(mPlugin->GetTrustStore(), *result);
   }
   else if (name == HostSubject_id) {
-    char *tmp;
-    mPlugin->GetHostSubject(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+      STRINGZ_TO_NPVARIANT(mPlugin->GetHostSubject(), *result);
   }
   else if (name == fullScreen_id) {
-    PRBool aFullScreen;
-    mPlugin->GetFullScreen(&aFullScreen);
-    BOOLEAN_TO_NPVARIANT(aFullScreen, *result);
+    BOOLEAN_TO_NPVARIANT(mPlugin->GetFullScreen(), *result);
   }
   else if (name == AdminConsole_id) {
-    PRBool aAdminConsole;
-    mPlugin->GetAdminConsole(&aAdminConsole);
-    BOOLEAN_TO_NPVARIANT(aAdminConsole, *result);
+    BOOLEAN_TO_NPVARIANT(mPlugin->GetAdminConsole(), *result);
   }
   else if (name == Title_id) {
-    char *tmp;
-    mPlugin->GetTitle(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetTitle(), *result);
   }
   else if (name == dynamicMenu_id) {
-    char *tmp;
-    mPlugin->GetDynamicMenu(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetDynamicMenu(), *result);
   }
   else if (name == NumberOfMonitors_id) {
-    char *tmp;
-    mPlugin->GetNumberOfMonitors(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetNumberOfMonitors(), *result);
   }
   else if (name == GuestHostName_id) {
-    char *tmp;
-    mPlugin->GetGuestHostName(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetGuestHostName(), *result);
   }
   else if (name == HotKey_id) {
-    char *tmp;
-    mPlugin->GetHotKeys(&tmp);
-    STRINGZ_TO_NPVARIANT(stringCopy(tmp), *result);
+    STRINGZ_TO_NPVARIANT(mPlugin->GetHotKeys(), *result);
   }
   else if (name == NoTaskMgrExecution_id) {
-    PRBool aNoTaskMgrExecution;
-    mPlugin->GetNoTaskMgrExecution(&aNoTaskMgrExecution);
-    BOOLEAN_TO_NPVARIANT(aNoTaskMgrExecution, *result);
+    BOOLEAN_TO_NPVARIANT(mPlugin->GetNoTaskMgrExecution(), *result);
   }
   else if (name == SendCtrlAltdelete_id) {
-    PRBool aSendCtrlAltdelete;
-    mPlugin->GetSendCtrlAltdelete(&aSendCtrlAltdelete);  
-    BOOLEAN_TO_NPVARIANT(aSendCtrlAltdelete, *result);
+    BOOLEAN_TO_NPVARIANT(mPlugin->GetSendCtrlAltdelete(), *result);
   }
   else if (name == UsbListenPort_id) {    
-    unsigned short port;
-    mPlugin->GetUsbListenPort(&port);
-    INT32_TO_NPVARIANT(port, *result);
+    INT32_TO_NPVARIANT(mPlugin->GetUsbListenPort(), *result);
   }
   else if (name == UsbAutoShare_id) {
-    PRBool tmp;
-    mPlugin->GetUsbAutoShare(&tmp);
-    BOOLEAN_TO_NPVARIANT(tmp, *result);
+    BOOLEAN_TO_NPVARIANT(mPlugin->GetUsbAutoShare(), *result);
   }
   else {
     return false;
diff --git a/SpiceXPI/src/plugin/plugin.cpp b/SpiceXPI/src/plugin/plugin.cpp
index 41c4564..020d865 100644
--- a/SpiceXPI/src/plugin/plugin.cpp
+++ b/SpiceXPI/src/plugin/plugin.cpp
@@ -157,6 +157,17 @@ void NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin)
     delete (nsPluginInstance *)aPlugin;
 }
 
+namespace {
+    char *stringCopy(const std::string &src)
+    {
+      char* dest = (char *) NPN_MemAlloc(src.length() + 1);
+      if (dest) {
+        strcpy(dest, src.c_str());
+      }
+      return dest;
+    }
+}
+
 ////////////////////////////////////////
 //
 // nsPluginInstance class implementation
@@ -202,16 +213,18 @@ NPBool nsPluginInstance::init(NPWindow* aWindow)
 {
     mInitialized = true;
 
-    memset (m_HostIP,0,256);
-    memset (m_Port,0,256);
-    memset (m_Password,0,256);
-    memset (m_SecurePort,0,256);
-    memset (m_CipherSuite,0,256);
-    memset (m_SSLChannels,0,256);
-    memset (m_Title,0,256);
-    memset (m_DynamicMenu,0,256);
-    memset (m_NumberOfMonitors,0,256);
-    memset (m_GuestHostName,0,256);
+    m_host_ip.clear();
+    m_port.clear();
+    m_password.clear();
+    m_secure_port.clear();
+    m_cipher_suite.clear();
+    m_ssl_channels.clear();
+    m_trust_store.clear();
+    m_host_subject.clear();
+    m_title.clear();
+    m_dynamic_menu.clear();
+    m_number_of_monitors.clear();
+    m_guest_host_name.clear();
 
     m_FullScreen = PR_FALSE;
     m_AdminConsole = PR_FALSE;
@@ -245,148 +258,145 @@ NPBool nsPluginInstance::isInitialized()
 }
 
 /* attribute string strHost; */
-void nsPluginInstance::GetHostIP(char * *aHostIP) {
-    strncpy (*aHostIP, m_HostIP, sizeof (*aHostIP));
+char *nsPluginInstance::GetHostIP() const {
+    return stringCopy(m_host_ip);
 }
 void nsPluginInstance::SetHostIP(const char * aHostIP){
-    strncpy(m_HostIP,aHostIP, sizeof (m_HostIP));
+    m_host_ip = aHostIP;
 }
 
 /* attribute string strPort; */
-void nsPluginInstance::GetPort(char * *aPort) {
-    strncpy (*aPort, m_Port, sizeof (*aPort));
+char *nsPluginInstance::GetPort() const {
+    return stringCopy(m_port);
 }
 void nsPluginInstance::SetPort(const char * aPort) {
-    strncpy(m_Port,aPort, sizeof (m_Port));
+    m_port = aPort;
 }
 
 /* attribute ing SecurePort; */
-void nsPluginInstance::GetSecurePort(char * *aSecurePort) {
-    strncpy (*aSecurePort, m_SecurePort, sizeof (*aSecurePort));
+char *nsPluginInstance::GetSecurePort() const {
+    return stringCopy(m_secure_port);
 }
 void nsPluginInstance::SetSecurePort(const char * aSecurePort) {
-    strncpy(m_SecurePort,aSecurePort, sizeof (m_SecurePort));
+    m_secure_port = aSecurePort;
 }
 
 
 /* attribute string strPassword; */
-void nsPluginInstance::GetPassword(char * *aPassword) {
-    strncpy (*aPassword, m_Password, sizeof (*aPassword));
+char *nsPluginInstance::GetPassword() const {
+    return stringCopy(m_password);
 }
 void nsPluginInstance::SetPassword(const char * aPassword) {
-    strncpy(m_Password,aPassword, sizeof (m_Password));
+    m_password = aPassword;
 }
 
 /* attribute ing Port; */
-void nsPluginInstance::GetCipherSuite(char * *aCipherSuite) {
-    strncpy (*aCipherSuite, m_CipherSuite, sizeof (*aCipherSuite));
+char *nsPluginInstance::GetCipherSuite() const {
+    return stringCopy(m_cipher_suite);
 }
 void nsPluginInstance::SetCipherSuite(const char * aCipherSuite) {
-    strncpy(m_CipherSuite,aCipherSuite, sizeof (m_CipherSuite));
+    m_cipher_suite = aCipherSuite;
 }
 
 /* attribute string strPort; */
-void nsPluginInstance::GetSSLChannels(char * *aSSLChannels) {
-    strncpy (*aSSLChannels, m_SSLChannels, sizeof (*aSSLChannels));
+char *nsPluginInstance::GetSSLChannels() const {
+    return stringCopy(m_ssl_channels);
 }
 void nsPluginInstance::SetSSLChannels(const char * aSSLChannels) {
-    strncpy(m_SSLChannels,aSSLChannels, sizeof (m_SSLChannels));
+    m_ssl_channels = aSSLChannels;
 }
 
-/* attribute string strTrustStore; */
-void nsPluginInstance::GetTrustStore(char * *aTrustStore) {
-    strncpy (*aTrustStore, m_TrustStore, sizeof (*aTrustStore));
+//* attribute string TrustStore; */
+char *nsPluginInstance::GetTrustStore() const {
+    return stringCopy(m_trust_store);
 }
 void nsPluginInstance::SetTrustStore(const char * aTrustStore) {
-    strncpy(m_TrustStore,aTrustStore, sizeof (m_TrustStore));
+    m_trust_store = aTrustStore;
 }
 
-/* attribute string HostSubject; */
-void nsPluginInstance::GetHostSubject(char * *aHostSubject) {
-    memcpy (aHostSubject, m_HostSubject, sizeof (m_HostSubject));
+//* attribute string HostSubject; */
+char *nsPluginInstance::GetHostSubject() const {
+    return stringCopy(m_host_subject);
 }
 void nsPluginInstance::SetHostSubject(const char * aHostSubject) {
-    memcpy (m_HostSubject,aHostSubject, 256);//sizeof (m_HostSubject));
+    m_host_subject = aHostSubject;
 }
 
 /* attribute string strFullScreen; */
-void nsPluginInstance::GetFullScreen(PRBool *aFullScreen) {
-    *aFullScreen = m_FullScreen;
+PRBool nsPluginInstance::GetFullScreen() const {
+    return m_FullScreen;
 }
 void nsPluginInstance::SetFullScreen(PRBool aFullScreen) {
     m_FullScreen = aFullScreen;
 }
 
 /* attribute string strTitle; */
-void nsPluginInstance::GetTitle(char * *aTitle) {
-    strncpy (*aTitle, m_Title, sizeof (*aTitle));
+char *nsPluginInstance::GetTitle() const {
+    return stringCopy(m_title);
 }
 void nsPluginInstance::SetTitle(const char * aTitle) {
-    strncpy(m_Title,aTitle, sizeof (m_Title));
+    m_title = aTitle;
 }
 
 /* attribute string strDynamicMenu; */
-void nsPluginInstance::GetDynamicMenu(char * *aDynamicMenu) {
-    strncpy (*aDynamicMenu, m_DynamicMenu, sizeof (*aDynamicMenu));
+char *nsPluginInstance::GetDynamicMenu() const {
+    return stringCopy(m_dynamic_menu);
 }
 void nsPluginInstance::SetDynamicMenu(const char * aDynamicMenu) {
-    strncpy(m_DynamicMenu,aDynamicMenu, sizeof (m_DynamicMenu));
+    m_dynamic_menu = aDynamicMenu;
 }
 
 /* attribute string strNumberOfMonitors; */
-void nsPluginInstance::GetNumberOfMonitors(char * *aNumberOfMonitors) {
-    strncpy (*aNumberOfMonitors, m_NumberOfMonitors, sizeof (*aNumberOfMonitors));
+char *nsPluginInstance::GetNumberOfMonitors() const {
+    return stringCopy(m_number_of_monitors);
 }
 void nsPluginInstance::SetNumberOfMonitors(const char * aNumberOfMonitors) {
-    strncpy(m_NumberOfMonitors,aNumberOfMonitors, sizeof (m_NumberOfMonitors));
+    m_number_of_monitors = aNumberOfMonitors;
 }
 
 /* attribute string strAdminConsole; */
-void nsPluginInstance::GetAdminConsole(PRBool *aAdminConsole) {
-    *aAdminConsole = m_AdminConsole;
+PRBool nsPluginInstance::GetAdminConsole() const {
+    return m_AdminConsole;
 }
 void nsPluginInstance::SetAdminConsole(PRBool aAdminConsole) {
     m_AdminConsole = aAdminConsole;
 }
 
 /* attribute string strGuestHostName; */
-void nsPluginInstance::GetGuestHostName(char * *aGuestHostName) {
-    strncpy (*aGuestHostName, m_GuestHostName, sizeof (*aGuestHostName));
+char *nsPluginInstance::GetGuestHostName() const {
+    return stringCopy(m_guest_host_name);
 }
 void nsPluginInstance::SetGuestHostName(const char * aGuestHostName) {
-    strncpy(m_GuestHostName,aGuestHostName, sizeof (m_GuestHostName));
+    m_guest_host_name = aGuestHostName;
 }
 
 /* attribute string strHotKeys; */
-void nsPluginInstance::GetHotKeys(char * *aHotKeys) {
-    strncpy (*aHotKeys, m_HotKeys, sizeof (*aHotKeys));
+char *nsPluginInstance::GetHotKeys() const {
+    return stringCopy(m_hot_keys);
 }
 void nsPluginInstance::SetHotKeys(const char * aHotKeys) {
-    strncpy(m_HotKeys,aHotKeys, sizeof (m_HotKeys));
+    m_hot_keys = aHotKeys;
 }
 
 /* attribute string strNoTaskMgrExecution; */
-void nsPluginInstance::GetNoTaskMgrExecution(PRBool *aNoTaskMgrExecution) {
-    *aNoTaskMgrExecution = m_NoTaskMgrExecution;
+PRBool nsPluginInstance::GetNoTaskMgrExecution() const {
+    return m_NoTaskMgrExecution;
 }
 void nsPluginInstance::SetNoTaskMgrExecution(PRBool aNoTaskMgrExecution) {
     m_NoTaskMgrExecution = aNoTaskMgrExecution;
-;
 }
 
 /* attribute string strSendCtrlAltdelete; */
-void nsPluginInstance::GetSendCtrlAltdelete(PRBool *aSendCtrlAltdelete) {
-    *aSendCtrlAltdelete = m_SendCtrlAltdelete;
+PRBool nsPluginInstance::GetSendCtrlAltdelete() const {
+    return m_SendCtrlAltdelete;
 }
 void nsPluginInstance::SetSendCtrlAltdelete(PRBool aSendCtrlAltdelete) {
     m_SendCtrlAltdelete = aSendCtrlAltdelete;
 }
 
 /* attribute string UsbListenPort; */
-void nsPluginInstance::GetUsbListenPort(unsigned short *aUsbPort) {
-    if (aUsbPort != NULL) {
-        *aUsbPort = m_UsbPort;
-    }
+unsigned short nsPluginInstance::GetUsbListenPort() const {
+    return m_UsbPort;
 }
 
 void nsPluginInstance::SetUsbListenPort(unsigned short aUsbPort) {
@@ -394,10 +404,8 @@ void nsPluginInstance::SetUsbListenPort(unsigned short aUsbPort) {
 }
 
 /* attribute boolean UsbAutoShare; */
-void nsPluginInstance::GetUsbAutoShare(PRBool *aUsbAutoShare) {
-    if (aUsbAutoShare != NULL) {
-        *aUsbAutoShare = m_UsbAutoShare;
-    }
+PRBool nsPluginInstance::GetUsbAutoShare() const {
+    return m_UsbAutoShare;
 }
 
 void nsPluginInstance::SetUsbAutoShare(PRBool aUsbAutoShare) {
@@ -443,9 +451,9 @@ void nsPluginInstance::Connect() {
             execl (
                 "/usr/libexec/spicec",
                 "/usr/libexec/spicec",
-                m_HostIP, 
-                m_Port, 
-                m_SecurePort,
+                m_host_ip.c_str(), 
+                m_port.c_str(), 
+                m_secure_port.c_str(),
                 "--controller",
                 "--logger-ini",
                 conf_path.c_str(),
@@ -468,17 +476,17 @@ void nsPluginInstance::Connect() {
 
             // Send host
             msg.id = MSG_host;
-            sprintf (msg.szData, "%s", m_HostIP);
+            sprintf (msg.szData, "%s", m_host_ip.c_str());
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // Send port
             msg.id = MSG_port;
-            sprintf (msg.szData, "%s", m_Port);
+            sprintf (msg.szData, "%s", m_port.c_str());
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // Send sport
             msg.id = MSG_sport;
-            sprintf (msg.szData, "%s", m_SecurePort);
+            sprintf (msg.szData, "%s", m_secure_port.c_str());
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // Send FullScreen
@@ -488,22 +496,22 @@ void nsPluginInstance::Connect() {
 
             // Send Password
             msg.id = MSG_password;
-            sprintf (msg.szData, "%s", m_Password);
+            sprintf (msg.szData, "%s", m_password.c_str());
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // Send cipher
             msg.id = MSG_cipher;
-            sprintf (msg.szData, "%s", m_CipherSuite);
+            sprintf (msg.szData, "%s", m_cipher_suite.c_str());
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // Send title
             msg.id = MSG_title;
-            sprintf (msg.szData, "%s", m_Title);
+            sprintf (msg.szData, "%s", m_title.c_str());
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // Send channels
             msg.id = MSG_encrypt_channels;
-            sprintf (msg.szData, "%s", m_SSLChannels);
+            sprintf (msg.szData, "%s", m_ssl_channels.c_str());
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // send TruststoreFilename
@@ -518,7 +526,7 @@ void nsPluginInstance::Connect() {
 			if (fd != -1) {
             	fp = fdopen (fd,"w+");
 				if (fp != NULL) {
-	            	fputs(m_TrustStore, fp);
+	            	fputs(m_trust_store.c_str(), fp);
 					fclose(fp);
 	            	close (fd);
 				} else {
@@ -536,12 +544,12 @@ void nsPluginInstance::Connect() {
 
             // send HostSubject
             msg.id = MSG_host_cert_subject;
-            memcpy (msg.szData, m_HostSubject, sizeof (msg.szData));
+            memcpy (msg.szData, m_host_subject.c_str(), sizeof (msg.szData));
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // Send HotKeys
             msg.id = MSG_hotkeys;
-            sprintf (msg.szData, "%s", m_HotKeys);
+            sprintf (msg.szData, "%s", m_hot_keys.c_str());
             m_external_controller->Write (&msg, sizeof (msg), &nSize);
 
             // Send auto_display_res (AdminConsole)
@@ -688,7 +696,7 @@ void nsPluginInstance::ExecuteUsbCtrl()
         // TBD: Find executable path.
         execl("/usr/bin/usbrdrctrl",
             "/usr/bin/usbrdrctrl",
-            m_GuestHostName,
+            m_guest_host_name.c_str(),
             port,
             "-c",
             conn_name,
diff --git a/SpiceXPI/src/plugin/plugin.h b/SpiceXPI/src/plugin/plugin.h
index c3559c7..f8f4716 100644
--- a/SpiceXPI/src/plugin/plugin.h
+++ b/SpiceXPI/src/plugin/plugin.h
@@ -67,7 +67,7 @@ public:
   void shut();
   NPBool isInitialized();
 
-  NPError	GetValue(NPPVariable variable, void *value);
+  NPError GetValue(NPPVariable variable, void *value);
   NPError SetWindow(NPWindow* aWindow);
 
   // locals
@@ -79,79 +79,82 @@ public:
   void SetUsbFilter(const char * aUsbFilter);
 
   /* attribute ing Host; */
-  void GetHostIP(char * *aHosIPt);
+  char *GetHostIP() const;
   void SetHostIP(const char * aHostIP);
 
   /* attribute ing Port; */
-  void GetPort(char * *aPort);
+  char *GetPort() const;
   void SetPort(const char * aPort);
 
   /* attribute ing Password; */
-  void GetPassword(char * *aPassword);
+  char *GetPassword() const;
   void SetPassword(const char * aPassword);
 
   /* attribute ing SecurePort; */
-  void GetSecurePort(char * *aSecurePort);
+  char *GetSecurePort() const;
   void SetSecurePort(const char * aSecurePort);
 
   /* attribute ing Port; */
-  void GetCipherSuite(char * *aCipherSuite);
+  char *GetCipherSuite() const;
   void SetCipherSuite(const char * aCipherSuite);
 
   /* attribute ing Port; */
-  void GetSSLChannels(char * *aSSLChannels);
+  char *GetSSLChannels() const;
   void SetSSLChannels(const char * aSSLChannels);
 
-  /* attribute ing TrustStore; */
-  void GetTrustStore(char * *aTrustStore);
+
+      /* attribute ing TrustStore; */
+  char *GetTrustStore() const;
   void SetTrustStore(const char * aTrustStore);
 
-  /* attribute ing HostSubject; */
-  void GetHostSubject(char * *aHostSubject);
+
+      /* attribute ing HostSubject; */
+  char *GetHostSubject() const;
   void SetHostSubject(const char * aHostSubject);
 
+
   /* attribute ing FullScreen; */
-  void GetFullScreen(PRBool *aFullScreen);
+  PRBool GetFullScreen() const;
   void SetFullScreen(PRBool aFullScreen);
 
   /* attribute ing Port; */
-  void GetTitle(char * *aTitle);
+  char *GetTitle() const;
   void SetTitle(const char * aTitle);
 
   /* attribute ing Port; */
-  void GetDynamicMenu(char * *aDynamicMenu);
+  char *GetDynamicMenu() const;
   void SetDynamicMenu(const char * aDynamicMenu);
 
   /* attribute ing Port; */
-  void GetNumberOfMonitors(char * *aNumberOfMonitors);
+  char *GetNumberOfMonitors() const;
   void SetNumberOfMonitors(const char * aNumberOfMonitors);
 
   /* attribute ing AdminConsole; */
-  void GetAdminConsole(PRBool *aAdminConsole);
+  PRBool GetAdminConsole() const;
   void SetAdminConsole(PRBool aAdminConsole);
 
   /* attribute ing GuestHostName; */
-  void GetGuestHostName(char * *aGuestHostName);
+  char *GetGuestHostName() const;
   void SetGuestHostName(const char * aGuestHostName);
 
   /* attribute ing HotKeys; */
-  void GetHotKeys(char * *aHotKeys);
+  char *GetHotKeys() const;
   void SetHotKeys(const char * aHotKeys);
 
   /* attribute ing NoTaskMgrExecution; */
-  void GetNoTaskMgrExecution(PRBool *aNoTaskMgrExecution);
+  PRBool GetNoTaskMgrExecution() const;
   void SetNoTaskMgrExecution(PRBool aNoTaskMgrExecution);
 
   /* attribute ing SendCtrlAltdelete; */
-  void GetSendCtrlAltdelete(PRBool *aSendCtrlAltdelete);
+  PRBool GetSendCtrlAltdelete() const;
   void SetSendCtrlAltdelete(PRBool aSendCtrlAltdelete);
 
   /* attribute unsigned short UsbListenPort; */
-  void GetUsbListenPort(unsigned short *aUsbPort);
+  unsigned short GetUsbListenPort() const;
   void SetUsbListenPort(unsigned short aUsbPort);
 
   /* attribute boolean UsbAutoShare; */
-  void GetUsbAutoShare(PRBool *aUsbAutoShare);
+  PRBool GetUsbAutoShare() const;
   void SetUsbAutoShare(PRBool aUsbAutoShare);
 
   NPObject* getScriptablePeer();
@@ -178,21 +181,21 @@ private:
     char m_strPort[256];
     char m_strPassword[256];
     PRBool m_fIPC;
-    char m_HostIP[256];
-    char m_Port[256];
-    char m_Password[256];
-    char m_SecurePort[256];
-    char m_CipherSuite[256];
-    char m_SSLChannels[256];
-    char m_TrustStore[4096];
-    wchar_t m_HostSubject[256];
+    std::string m_host_ip;
+    std::string m_port;
+    std::string m_password;
+    std::string m_secure_port;
+    std::string m_cipher_suite;
+    std::string m_ssl_channels;
+    std::string m_trust_store;
+    std::string m_host_subject;
     PRBool m_FullScreen;
     PRBool m_AdminConsole;
-    char m_Title[256];
-    char m_DynamicMenu[256];
-    char m_NumberOfMonitors[256];
-    char m_GuestHostName[256];
-    char m_HotKeys[256];
+    std::string m_title;
+    std::string m_dynamic_menu;
+    std::string m_number_of_monitors;
+    std::string m_guest_host_name;
+    std::string m_hot_keys;
     PRBool m_NoTaskMgrExecution;
     PRBool m_SendCtrlAltdelete;
     unsigned short m_UsbPort;
-- 
1.7.4.1