VirtualBox

Changeset 79200 in vbox


Ignore:
Timestamp:
Jun 18, 2019 8:53:44 AM (5 years ago)
Author:
vboxsync
Message:

iprt/file.h,createtemp-generic.cpp: nits

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/file.h

    r77830 r79200  
    982982 * platform-by-platform basis as platform support is added.
    983983 * @see RTPathIsSecure for the current list of criteria.
     984 *
    984985 * @returns iprt status code.
    985986 * @returns VERR_NOT_SUPPORTED if the interface can not be supported on the
  • trunk/src/VBox/Runtime/generic/createtemp-generic.cpp

    r76553 r79200  
    4040
    4141
    42 static int rtCreateTempValidateTemplate(char *pszTemplate, char **ppszX,
    43                                         unsigned *pcXes)
    44 {
    45     /*
    46      * Validate input and count X'es.
    47      *
    48      * The X'es may be trailing, or they may be a cluster of 3 or more inside
    49      * the file name.
    50      */
     42/**
     43 * The X'es may be trailing, or they may be a cluster of 3 or more inside
     44 * the file name.
     45 */
     46static int rtCreateTempValidateTemplate(char *pszTemplate, char **ppszX, unsigned *pcXes)
     47{
    5148    AssertPtr(pszTemplate);
    5249    AssertPtr(ppszX);
    5350    AssertPtr(pcXes);
     51
    5452    unsigned    cXes = 0;
    5553    char       *pszX = strchr(pszTemplate, '\0');
     
    6664            do
    6765            {
    68                 if (    pszXEnd[-1] == 'X'
    69                     &&  pszXEnd[-2] == 'X'
    70                     &&  pszXEnd[-3] == 'X')
     66                if (   pszXEnd[-1] == 'X'
     67                    && pszXEnd[-2] == 'X'
     68                    && pszXEnd[-3] == 'X')
    7169                {
    7270                    pszX = pszXEnd - 3;
     
    8785
    8886    /* fail if none found. */
    89     if (!cXes)
    90     {
    91         AssertFailed();
    92         return VERR_INVALID_PARAMETER;
    93     }
    9487    *ppszX = pszX;
    9588    *pcXes = cXes;
     89    AssertReturn(cXes > 0, VERR_INVALID_PARAMETER);
    9690    return VINF_SUCCESS;
    9791}
     
    144138RTDECL(int) RTDirCreateTempSecure(char *pszTemplate)
    145139{
    146     size_t cchDir;
    147     char chOld;
    148     int rc;
    149140    /* bool fSafe; */
    150141
    151142    /* Temporarily convert pszTemplate to a path. */
     143    size_t cchDir = 0;
    152144    RTPathParseSimple(pszTemplate, &cchDir, NULL, NULL);
    153     chOld = pszTemplate[cchDir];
     145    char chOld = pszTemplate[cchDir];
    154146    pszTemplate[cchDir] = '\0';
    155147    /** @todo Implement this. */
    156     rc = /* RTPathIsSecure(pszTemplate, &fSafe) */ VERR_NOT_SUPPORTED;
     148    int rc = /* RTPathIsSecure(pszTemplate, &fSafe) */ VERR_NOT_SUPPORTED;
    157149    pszTemplate[cchDir] = chOld;
    158150    if (RT_SUCCESS(rc) /* && fSafe */)
    159151        return RTDirCreateTemp(pszTemplate, 0700);
    160     else
    161     {
    162         *pszTemplate = '\0';
    163         /** @todo Replace VERR_PERMISSION_DENIED.  VERR_INSECURE? */
    164         return RT_FAILURE(rc) ? rc : VERR_PERMISSION_DENIED;
    165     }
     152
     153    *pszTemplate = '\0';
     154    /** @todo Replace VERR_PERMISSION_DENIED.  VERR_INSECURE? */
     155    return RT_FAILURE(rc) ? rc : VERR_PERMISSION_DENIED;
    166156}
    167157RT_EXPORT_SYMBOL(RTDirCreateTempSecure);
     
    172162    char       *pszX = NULL;
    173163    unsigned    cXes = 0;
    174     RTFILE      hFile;
    175164    int rc = rtCreateTempValidateTemplate(pszTemplate, &pszX, &cXes);
    176165    if (RT_FAILURE(rc))
     
    179168        return rc;
    180169    }
     170
    181171    /*
    182172     * Try ten thousand times.
     
    185175    while (i-- > 0)
    186176    {
    187         uint64_t fOpen =   RTFILE_O_WRITE | RTFILE_O_DENY_ALL
    188                          | RTFILE_O_CREATE | RTFILE_O_NOT_CONTENT_INDEXED
    189                          | fMode << RTFILE_O_CREATE_MODE_SHIFT;
     177        uint64_t fOpen = RTFILE_O_WRITE | RTFILE_O_DENY_ALL | RTFILE_O_CREATE | RTFILE_O_NOT_CONTENT_INDEXED
     178                       | fMode << RTFILE_O_CREATE_MODE_SHIFT;
    190179        rtCreateTempFillTemplate(pszX, cXes);
     180        RTFILE hFile = NIL_RTFILE;
    191181        rc = RTFileOpen(&hFile, pszTemplate, fOpen);
    192182        if (RT_SUCCESS(rc))
     
    213203RTDECL(int) RTFileCreateTempSecure(char *pszTemplate)
    214204{
    215     size_t cchDir;
    216     char chOld;
    217     int rc;
    218205    /* bool fSafe; */
    219206
    220207    /* Temporarily convert pszTemplate to a path. */
     208    size_t cchDir = 0;
    221209    RTPathParseSimple(pszTemplate, &cchDir, NULL, NULL);
    222     chOld = pszTemplate[cchDir];
     210    char chOld = pszTemplate[cchDir];
    223211    pszTemplate[cchDir] = '\0';
    224212    /** @todo Implement this. */
    225     rc = /* RTPathIsSecure(pszTemplate, &fSafe) */ VERR_NOT_SUPPORTED;
     213    int rc = /* RTPathIsSecure(pszTemplate, &fSafe) */ VERR_NOT_SUPPORTED;
    226214    pszTemplate[cchDir] = chOld;
    227215    if (RT_SUCCESS(rc) /* && fSafe */)
    228216        return RTFileCreateTemp(pszTemplate, 0600);
    229     else
    230     {
    231         *pszTemplate = '\0';
    232         /** @todo Replace VERR_PERMISSION_DENIED.  VERR_INSECURE? */
    233         return RT_FAILURE(rc) ? rc : VERR_PERMISSION_DENIED;
    234     }
     217
     218    *pszTemplate = '\0';
     219    /** @todo Replace VERR_PERMISSION_DENIED.  VERR_INSECURE? */
     220    return RT_FAILURE(rc) ? rc : VERR_PERMISSION_DENIED;
    235221}
    236222RT_EXPORT_SYMBOL(RTFileCreateTempSecure);
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