Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp	(revision 30047)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp	(revision 30048)
@@ -156,5 +156,5 @@
  * Errors are ignored.
  */
-static void VBoxServiceVMInfoWriteFixedProperties(void)
+static void vboxserviceVMInfoWriteFixedProperties(void)
 {
     /*
@@ -213,5 +213,5 @@
  * Provide information about active users.
  */
-int VBoxServiceVMInfoWriteUsers()
+static int vboxserviceVMInfoWriteUsers(void)
 {
     int rc;
@@ -222,9 +222,13 @@
 # ifndef TARGET_NT4
     rc = VBoxServiceVMInfoWinWriteUsers(&pszUserList, &cUsersInList);
-# endif /* TARGET_NT4 */
+# else
+    rc = VERR_NOT_IMPLEMENTED;
+# endif
 #elif defined(RT_OS_FREEBSD)
-        /** @todo FreeBSD: Port logged on user info retrival. */
+    /** @todo FreeBSD: Port logged on user info retrival. */
+    rc = VERR_NOT_IMPLEMENTED;
 #elif defined(RT_OS_OS2)
-        /** @todo OS/2: Port logged on (LAN/local/whatever) user info retrival. */
+    /** @todo OS/2: Port logged on (LAN/local/whatever) user info retrival. */
+    rc = VERR_NOT_IMPLEMENTED;
 #else
     rc = utmpname(UTMP_FILE);
@@ -236,5 +240,8 @@
     {
         VBoxServiceError("VMInfo/Users: Could not set UTMP file! Error: %ld\n", errno);
-    }
+        rc = VERR_GENERAL_FAILURE;
+    }
+    else
+        rc = VINF_SUCCESS;
     setutent();
     utmp *ut_user;
@@ -250,13 +257,16 @@
             {
                 rc = RTStrAAppend(&pszUserList, ",");
-                AssertRCReturn(rc, rc);
+                AssertRCBreakStmt(rc, RTStrFree(pszUserList));
             }
             rc = RTStrAAppend(&pszUserList, ut_user->ut_user);
-            AssertRCReturn(rc, rc);
+            AssertRCBreakStmt(rc, RTStrFree(pszUserList));
             cUsersInList++;
         }
     }
     endutent();
-#endif /* !RT_OS_WINDOWS */
+#endif
+    Assert(RT_FAILURE(rc) || cUsersInList == 0 || (pszUserList && *pszUserList));
+    if (RT_FAILURE(rc))
+        cUsersInList = 0;
 
     if (pszUserList && cUsersInList > 0)
@@ -267,8 +277,9 @@
     if (g_cVMInfoLoggedInUsers != cUsersInList)
     {
-        VBoxServicePropCacheUpdate(&g_VMInfoPropCache, "/VirtualBox/GuestInfo/OS/NoLoggedInUsers", cUsersInList == 0 ? "true" : "false");
+        VBoxServicePropCacheUpdate(&g_VMInfoPropCache, "/VirtualBox/GuestInfo/OS/NoLoggedInUsers",
+                                   cUsersInList == 0 ? "true" : "false");
         g_cVMInfoLoggedInUsers = cUsersInList;
     }
-    if (pszUserList)
+    if (RT_SUCCESS(rc) && pszUserList)
         RTStrFree(pszUserList);
     return VINF_SUCCESS;
@@ -279,8 +290,8 @@
  * Provide information about the guest network.
  */
-int VBoxServiceVMInfoWriteNetwork()
-{
-    int cIfacesReport = 0;
-    char szPropPath [FILENAME_MAX];
+static int vboxserviceVMInfoWriteNetwork(void)
+{
+    int  cIfacesReport = 0;
+    char szPropPath[256];
 
 #ifdef RT_OS_WINDOWS
@@ -289,5 +300,5 @@
 # ifndef TARGET_NT4
     ULONG cbAdpInfo = sizeof(*pAdpInfo);
-    pAdpInfo = (IP_ADAPTER_INFO*)RTMemAlloc(cbAdpInfo);
+    pAdpInfo = (IP_ADAPTER_INFO *)RTMemAlloc(cbAdpInfo);
     if (!pAdpInfo)
     {
@@ -521,18 +532,18 @@
             return RTErrConvertFromErrno(errno);
         }
- #if defined(RT_OS_OS2) || defined(RT_OS_SOLARIS)
+# if defined(RT_OS_OS2) || defined(RT_OS_SOLARIS)
         pAddress = (sockaddr_in *)&ifrequest[i].ifr_addr;
- #else
+# else
         pAddress = (sockaddr_in *)&ifrequest[i].ifr_netmask;
- #endif
+# endif
 
         RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%d/V4/Netmask", cIfacesReport);
         VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
 
- #if defined(RT_OS_SOLARIS)
+# if defined(RT_OS_SOLARIS)
         if (ioctl(sd, SIOCGENADDR, &ifrequest[i]) < 0)
- #else
+# else
         if (ioctl(sd, SIOCGIFHWADDR, &ifrequest[i]) < 0)
- #endif
+# endif
         {
             VBoxServiceError("VMInfo/Network: Failed to ioctl(SIOCGIFHWADDR) on socket: Error %d\n", errno);
@@ -542,9 +553,9 @@
 
         char szMac[32];
- #if defined(RT_OS_SOLARIS)
+# if defined(RT_OS_SOLARIS)
         uint8_t *pu8Mac = (uint8_t*)&ifrequest[i].ifr_enaddr[0];
- #else
+# else
         uint8_t *pu8Mac = (uint8_t*)&ifrequest[i].ifr_hwaddr.sa_data[0];
- #endif
+# endif
         RTStrPrintf(szMac, sizeof(szMac), "%02X%02X%02X%02X%02X%02X",
                     pu8Mac[0], pu8Mac[1], pu8Mac[2], pu8Mac[3],  pu8Mac[4], pu8Mac[5]);
@@ -591,5 +602,5 @@
     WSADATA wsaData;
     if (WSAStartup(MAKEWORD(2, 2), &wsaData))
-        VBoxServiceError("VMInfo/Users: WSAStartup failed! Error: %Rrc\n", RTErrConvertFromWin32(WSAGetLastError()));
+        VBoxServiceError("VMInfo/Network: WSAStartup failed! Error: %Rrc\n", RTErrConvertFromWin32(WSAGetLastError()));
 #endif /* RT_OS_WINDOWS */
 
@@ -597,5 +608,5 @@
      * Write the fixed properties first.
      */
-    VBoxServiceVMInfoWriteFixedProperties();
+    vboxserviceVMInfoWriteFixedProperties();
 
     /*
@@ -604,9 +615,9 @@
     for (;;)
     {
-        rc = VBoxServiceVMInfoWriteUsers();
+        rc = vboxserviceVMInfoWriteUsers();
         if (RT_FAILURE(rc))
             break;
 
-        rc = VBoxServiceVMInfoWriteNetwork();
+        rc = vboxserviceVMInfoWriteNetwork();
         if (RT_FAILURE(rc))
             break;
