VirtualBox

Ignore:
Timestamp:
Jun 30, 2020 10:46:26 AM (5 years ago)
Author:
vboxsync
Message:

DnD/URIObject: Validate paths when rebasing them + additional logging.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/DragAndDrop/DnDURIObject.cpp

    r85004 r85005  
    414414            if (pszPathNew)
    415415            {
    416                 char *pszPathURI = RTUriCreate("file" /* pszScheme */, "/" /* pszAuthority */,
    417                                                pszPathNew /* pszPath */,
    418                                                NULL /* pszQuery */, NULL /* pszFragment */);
    419                 if (pszPathURI)
     416                rc = DnDPathValidate(pszPathNew, false /* fMustExist */);
     417                if (RT_SUCCESS(rc))
    420418                {
    421                     LogFlowFunc(("Rebasing \"%s\" to \"%s\"\n", strPathAbs.c_str(), pszPathURI));
    422 
    423                     strPathAbs = RTCString(pszPathURI) + "\r\n";
    424                     RTStrFree(pszPathURI);
     419                    char *pszPathURI = RTUriCreate("file" /* pszScheme */, "/" /* pszAuthority */,
     420                                                   pszPathNew /* pszPath */,
     421                                                   NULL /* pszQuery */, NULL /* pszFragment */);
     422                    if (pszPathURI)
     423                    {
     424                        LogFlowFunc(("Rebasing \"%s\" to \"%s\"\n", strPathAbs.c_str(), pszPathURI));
     425
     426                        strPathAbs = RTCString(pszPathURI) + "\r\n";
     427                        RTStrFree(pszPathURI);
     428                    }
     429                    else
     430                        rc = VERR_INVALID_PARAMETER;
    425431                }
    426432                else
    427                     rc = VERR_INVALID_PARAMETER;
     433                    LogRel(("DnD: Path validation for '%s' failed with %Rrc\n", pszPathNew, rc));
    428434
    429435                RTStrFree(pszPathNew);
     
    437443    else
    438444        rc = VERR_NO_MEMORY;
     445
     446    if (RT_FAILURE(rc))
     447        LogRel(("DnD: Rebasing absolute path '%s' (baseOld=%s, baseNew=%s) failed with %Rrc\n",
     448                strPathAbs.c_str(), strBaseOld.c_str(), strBaseNew.c_str(), rc));
    439449
    440450    return rc;
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