VirtualBox

Changeset 3387 in vbox for trunk/src/VBox/Main/glue


Ignore:
Timestamp:
Jul 3, 2007 11:36:37 AM (17 years ago)
Author:
vboxsync
Message:

Main: com::GetVBoxUserHomeDirectory() now takes char * instead of Utf8Str because on XPCOM platforms, this function may be called before XPCOM has been initialized, when Utf8Str functionality is not yet available (because it uses XPCOM memory management).

Location:
trunk/src/VBox/Main/glue
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/glue/com.cpp

    r3191 r3387  
    133133}
    134134
    135 int GetVBoxUserHomeDirectory (Utf8Str &aDir)
     135int GetVBoxUserHomeDirectory (char *aDir, size_t aDirLen)
    136136{
     137    AssertReturn (aDir, VERR_INVALID_POINTER);
     138    AssertReturn (aDirLen > 0, VERR_BUFFER_OVERFLOW);
     139
    137140    /* start with null */
    138     aDir.setNull();
     141    *aDir = 0;
    139142
    140143    const char *VBoxUserHome = RTEnvGet ("VBOX_USER_HOME");
     
    152155            vrc = RTPathAbs (VBoxUserHomeUtf8, path, sizeof (path));
    153156            if (RT_SUCCESS (vrc))
    154                 aDir = path;
     157            {
     158                if (aDirLen < strlen (path) + 1)
     159                    vrc = VERR_BUFFER_OVERFLOW;
     160                else
     161                    strcpy (aDir, path);
     162            }
    155163            RTStrFree (VBoxUserHomeUtf8);
    156164        }
     
    161169        vrc = RTPathUserHome (path, sizeof (path));
    162170        if (RT_SUCCESS (vrc))
    163             aDir = Utf8StrFmt ("%s%c%s", path, RTPATH_DELIMITER,
    164                                VBOX_USER_HOME_SUFFIX);
     171        {
     172            size_t len =
     173                RTStrPrintf (aDir, aDirLen, "%s%c%s",
     174                             path, RTPATH_DELIMITER, VBOX_USER_HOME_SUFFIX);
     175            if (len != strlen (path) + 1 + strlen (VBOX_USER_HOME_SUFFIX))
     176                vrc = VERR_BUFFER_OVERFLOW;
     177        }
    165178    }
    166179
  • trunk/src/VBox/Main/glue/initterm.cpp

    r2981 r3387  
    184184
    185185        /* prepare paths for registry files */
    186         Utf8Str homeDir;
    187         int vrc = GetVBoxUserHomeDirectory (homeDir);
     186        char homeDir [RTPATH_MAX];
     187        int vrc = GetVBoxUserHomeDirectory (homeDir, sizeof (homeDir));
    188188        if (RT_SUCCESS (vrc))
    189189        {
    190             Utf8Str compReg = Utf8StrFmt ("%s%c%s", homeDir.raw(),
    191                                           RTPATH_DELIMITER, "compreg.dat");
    192             Utf8Str xptiDat = Utf8StrFmt ("%s%c%s", homeDir.raw(),
    193                                           RTPATH_DELIMITER, "xpti.dat");
     190            char compReg [RTPATH_MAX];
     191            char xptiDat [RTPATH_MAX];
     192
     193            RTStrPrintf (compReg, sizeof (compReg), "%s%c%s",
     194                         homeDir, RTPATH_DELIMITER, "compreg.dat");
     195            RTStrPrintf (xptiDat, sizeof (xptiDat), "%s%c%s",
     196                         homeDir, RTPATH_DELIMITER, "xpti.dat");
     197
    194198            dsProv = new DirectoryServiceProvider();
    195199            if (dsProv)
     
    230234            if (RT_SUCCESS (vrc))
    231235            {
    232                 nsCOMPtr<nsILocalFile> file;
     236                nsCOMPtr <nsILocalFile> file;
    233237                rc = NS_NewNativeLocalFile (nsEmbedCString (appDirCP),
    234238                                            PR_FALSE, getter_AddRefs (file));
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette