VirtualBox

vbox的更動 63197 路徑 trunk/src/VBox/HostServices


忽略:
時間撮記:
2016-8-9 上午09:14:21 (8 年 以前)
作者:
vboxsync
訊息:

VBoxAuthSimple: Fixed warnings and some silly code.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/HostServices/auth/simple/VBoxAuthSimple.cpp

    r60063 r63197  
     1/* $Id$ */
    12/** @file
    2  *
    3  * VirtualBox External Authentication Library:
    4  * Simple Authentication.
     3 * VirtualBox External Authentication Library - Simple Authentication.
    54 */
    65
     
    3837
    3938
    40 static void dprintf(const char *fmt, ...)
     39static void dprintf(const char *pszFormat, ...)
    4140{
    4241#ifdef AUTH_DEBUG_FILE_NAME
    43     va_list va;
    44 
    45     va_start(va, fmt);
    46 
    47     char buffer[1024];
    48 
    49     vsnprintf(buffer, sizeof(buffer), fmt, va);
    50 
    5142    FILE *f = fopen(AUTH_DEBUG_FILE_NAME, "ab");
    5243    if (f)
    5344    {
    54         fprintf(f, "%s", buffer);
     45        va_list va;
     46        va_start(va, pszFormat);
     47        vfprintf(f, pszFormat, va);
     48        va_end(va);
    5549        fclose(f);
    5650    }
    57 
    58     va_end (va);
     51#else
     52    RT_NOREF(pszFormat);
    5953#endif
    6054}
    6155
    6256RT_C_DECLS_BEGIN
    63 DECLEXPORT(AuthResult) AUTHCALL AuthEntry(const char *szCaller,
     57DECLEXPORT(FNAUTHENTRY3) AuthEntry;
     58RT_C_DECLS_END
     59
     60DECLEXPORT(AuthResult) AUTHCALL AuthEntry(const char *pszCaller,
    6461                                          PAUTHUUID pUuid,
    6562                                          AuthGuestJudgement guestJudgement,
    66                                           const char *szUser,
    67                                           const char *szPassword,
    68                                           const char *szDomain,
     63                                          const char *pszUser,
     64                                          const char *pszPassword,
     65                                          const char *pszDomain,
    6966                                          int fLogon,
    7067                                          unsigned clientId)
    7168{
     69    RT_NOREF(pszCaller, guestJudgement, pszDomain, clientId);
     70
    7271    /* default is failed */
    7372    AuthResult result = AuthResultAccessDenied;
     
    8382
    8483    /* the user might contain a domain name, split it */
    85     char *user = strchr((char*)szUser, '\\');
     84    const char *user = strchr(pszUser, '\\');
    8685    if (user)
    8786        user++;
    8887    else
    89         user = (char*)szUser;
     88        user = (char*)pszUser;
    9089
    91     dprintf("VBoxAuth: uuid: %s, user: %s, szPassword: %s\n", uuid, user, szPassword);
     90    dprintf("VBoxAuth: uuid: %s, user: %s, pszPassword: %s\n", uuid, user, pszPassword);
    9291
    9392    ComPtr<IVirtualBoxClient> virtualBoxClient;
     
    9796    rc = virtualBoxClient.createInprocObject(CLSID_VirtualBoxClient);
    9897    if (SUCCEEDED(rc))
     98    {
    9999        rc = virtualBoxClient->COMGETTER(VirtualBox)(virtualBox.asOutParam());
    100     if (SUCCEEDED(rc))
    101     {
    102         Bstr key = BstrFmt("VBoxAuthSimple/users/%s", user);
    103         Bstr password;
     100        if (SUCCEEDED(rc))
     101        {
     102            Bstr key = BstrFmt("VBoxAuthSimple/users/%s", user);
     103            Bstr password;
    104104
    105         /* lookup in VM's extra data? */
    106         if (pUuid)
    107         {
    108             ComPtr<IMachine> machine;
    109             virtualBox->FindMachine(Bstr(uuid).raw(), machine.asOutParam());
    110             if (machine)
    111                 machine->GetExtraData(key.raw(), password.asOutParam());
    112         } else
    113             /* lookup global extra data */
    114             virtualBox->GetExtraData(key.raw(), password.asOutParam());
     105            /* lookup in VM's extra data? */
     106            if (pUuid)
     107            {
     108                ComPtr<IMachine> machine;
     109                virtualBox->FindMachine(Bstr(uuid).raw(), machine.asOutParam());
     110                if (machine)
     111                    machine->GetExtraData(key.raw(), password.asOutParam());
     112            }
     113            else
     114                /* lookup global extra data */
     115                virtualBox->GetExtraData(key.raw(), password.asOutParam());
    115116
    116         if (!password.isEmpty())
    117         {
    118             /* calculate hash */
    119             uint8_t abDigest[RTSHA256_HASH_SIZE];
    120             RTSha256(szPassword, strlen(szPassword), abDigest);
    121             char pszDigest[RTSHA256_DIGEST_LEN + 1];
    122             RTSha256ToString(abDigest, pszDigest, sizeof(pszDigest));
     117            if (!password.isEmpty())
     118            {
     119                /* calculate hash */
     120                uint8_t abDigest[RTSHA256_HASH_SIZE];
     121                RTSha256(pszPassword, strlen(pszPassword), abDigest);
     122                char pszDigest[RTSHA256_DIGEST_LEN + 1];
     123                RTSha256ToString(abDigest, pszDigest, sizeof(pszDigest));
    123124
    124             if (password == pszDigest)
    125                 result = AuthResultAccessGranted;
     125                if (password == pszDigest)
     126                    result = AuthResultAccessGranted;
     127            }
    126128        }
     129        else
     130            dprintf("VBoxAuth: failed to get VirtualBox object reference: %#x\n", rc);
    127131    }
    128132    else
    129         dprintf("VBoxAuth: failed to get VirtualBox object reference: %Rhrc\n", rc);
     133        dprintf("VBoxAuth: failed to get VirtualBoxClient object reference: %#x\n", rc);
    130134
    131135    return result;
    132136}
    133 RT_C_DECLS_END
    134137
    135 /* Verify the function prototype. */
    136 static PAUTHENTRY3 gpfnAuthEntry = AuthEntry;
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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