VirtualBox

Changeset 95846 in vbox


Ignore:
Timestamp:
Jul 26, 2022 10:29:39 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
152571
Message:

IPRT/RTSystemQueryOSInfo-win.cpp: Use RTStrCat instead of strcat because we don't have a nocrt impl of it yet (lazy bird). bugref:10261

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/win/RTSystemQueryOSInfo-win.cpp

    r93115 r95846  
    9595{
    9696    BOOL (WINAPI *pfnGetProductInfo)(DWORD, DWORD, DWORD, DWORD, PDWORD);
    97     pfnGetProductInfo = (BOOL (WINAPI *)(DWORD, DWORD, DWORD, DWORD, PDWORD))GetProcAddress(GetModuleHandle("kernel32.dll"), "GetProductInfo");
     97    pfnGetProductInfo = (BOOL (WINAPI *)(DWORD, DWORD, DWORD, DWORD, PDWORD))GetProcAddress(GetModuleHandle("kernel32.dll"),
     98                                                                                            "GetProductInfo");
    9899    if (pfnGetProductInfo)
    99100    {
     
    108109
    109110/**
    110  * Appends the product type if available.
     111 * Appends the product type if available (Vista & 2003 only for some reason).
    111112 *
    112113 * @param   pszTmp      The buffer. Assumes it's big enough.
    113114 */
    114 static void rtSystemWinAppendProductType(char *pszTmp)
     115static void rtSystemWinAppendProductType(char *pszTmp, size_t cbTmp)
    115116{
    116117    RTWINPRODTYPE enmVistaType = rtSystemWinGetProductInfo(6, 0, 0, 0);
    117118    switch (enmVistaType)
    118119    {
    119         case kRTWinProdType_BUSINESS:                        strcat(pszTmp, " Business Edition"); break;
    120         case kRTWinProdType_BUSINESS_N:                      strcat(pszTmp, " Business Edition"); break;
    121         case kRTWinProdType_CLUSTER_SERVER:                  strcat(pszTmp, " Cluster Server Edition"); break;
    122         case kRTWinProdType_DATACENTER_SERVER:               strcat(pszTmp, " Server Datacenter Edition (full installation)"); break;
    123         case kRTWinProdType_DATACENTER_SERVER_CORE:          strcat(pszTmp, " Server Datacenter Edition (core installation)"); break;
    124         case kRTWinProdType_ENTERPRISE:                      strcat(pszTmp, " Enterprise Edition"); break;
    125         case kRTWinProdType_ENTERPRISE_N:                    strcat(pszTmp, " Enterprise Edition"); break;
    126         case kRTWinProdType_ENTERPRISE_SERVER:               strcat(pszTmp, " Server Enterprise Edition (full installation)"); break;
    127         case kRTWinProdType_ENTERPRISE_SERVER_CORE:          strcat(pszTmp, " Server Enterprise Edition (core installation)"); break;
    128         case kRTWinProdType_ENTERPRISE_SERVER_IA64:          strcat(pszTmp, " Server Enterprise Edition for Itanium-based Systems"); break;
    129         case kRTWinProdType_HOME_BASIC:                      strcat(pszTmp, " Home Basic Edition"); break;
    130         case kRTWinProdType_HOME_BASIC_N:                    strcat(pszTmp, " Home Basic Edition"); break;
    131         case kRTWinProdType_HOME_PREMIUM:                    strcat(pszTmp, " Home Premium Edition"); break;
    132         case kRTWinProdType_HOME_PREMIUM_N:                  strcat(pszTmp, " Home Premium Edition"); break;
    133         case kRTWinProdType_HOME_SERVER:                     strcat(pszTmp, " Home Server Edition"); break;
    134         case kRTWinProdType_SERVER_FOR_SMALLBUSINESS:        strcat(pszTmp, " Server for Small Business Edition"); break;
    135         case kRTWinProdType_SMALLBUSINESS_SERVER:            strcat(pszTmp, " Small Business Server"); break;
    136         case kRTWinProdType_SMALLBUSINESS_SERVER_PREMIUM:    strcat(pszTmp, " Small Business Server Premium Edition"); break;
    137         case kRTWinProdType_STANDARD_SERVER:                 strcat(pszTmp, " Server Standard Edition (full installation)"); break;
    138         case kRTWinProdType_STANDARD_SERVER_CORE:            strcat(pszTmp, " Server Standard Edition (core installation)"); break;
    139         case kRTWinProdType_STARTER:                         strcat(pszTmp, " Starter Edition"); break;
    140         case kRTWinProdType_STORAGE_ENTERPRISE_SERVER:       strcat(pszTmp, " Storage Server Enterprise Edition"); break;
    141         case kRTWinProdType_STORAGE_EXPRESS_SERVER:          strcat(pszTmp, " Storage Server Express Edition"); break;
    142         case kRTWinProdType_STORAGE_STANDARD_SERVER:         strcat(pszTmp, " Storage Server Standard Edition"); break;
    143         case kRTWinProdType_STORAGE_WORKGROUP_SERVER:        strcat(pszTmp, " Storage Server Workgroup Edition"); break;
    144         case kRTWinProdType_ULTIMATE:                        strcat(pszTmp, " Ultimate Edition"); break;
    145         case kRTWinProdType_ULTIMATE_N:                      strcat(pszTmp, " Ultimate Edition"); break;
    146         case kRTWinProdType_WEB_SERVER:                      strcat(pszTmp, " Web Server Edition (full installation)"); break;
    147         case kRTWinProdType_WEB_SERVER_CORE:                 strcat(pszTmp, " Web Server Edition (core installation)"); break;
    148         case kRTWinProdType_UNDEFINED:                       break;
     120        case kRTWinProdType_BUSINESS:                       RTStrCat(pszTmp, cbTmp, " Business Edition"); break;
     121        case kRTWinProdType_BUSINESS_N:                     RTStrCat(pszTmp, cbTmp, " Business Edition"); break;
     122        case kRTWinProdType_CLUSTER_SERVER:                 RTStrCat(pszTmp, cbTmp, " Cluster Server Edition"); break;
     123        case kRTWinProdType_DATACENTER_SERVER:              RTStrCat(pszTmp, cbTmp, " Server Datacenter Edition (full installation)"); break;
     124        case kRTWinProdType_DATACENTER_SERVER_CORE:         RTStrCat(pszTmp, cbTmp, " Server Datacenter Edition (core installation)"); break;
     125        case kRTWinProdType_ENTERPRISE:                     RTStrCat(pszTmp, cbTmp, " Enterprise Edition"); break;
     126        case kRTWinProdType_ENTERPRISE_N:                   RTStrCat(pszTmp, cbTmp, " Enterprise Edition"); break;
     127        case kRTWinProdType_ENTERPRISE_SERVER:              RTStrCat(pszTmp, cbTmp, " Server Enterprise Edition (full installation)"); break;
     128        case kRTWinProdType_ENTERPRISE_SERVER_CORE:         RTStrCat(pszTmp, cbTmp, " Server Enterprise Edition (core installation)"); break;
     129        case kRTWinProdType_ENTERPRISE_SERVER_IA64:         RTStrCat(pszTmp, cbTmp, " Server Enterprise Edition for Itanium-based Systems"); break;
     130        case kRTWinProdType_HOME_BASIC:                     RTStrCat(pszTmp, cbTmp, " Home Basic Edition"); break;
     131        case kRTWinProdType_HOME_BASIC_N:                   RTStrCat(pszTmp, cbTmp, " Home Basic Edition"); break;
     132        case kRTWinProdType_HOME_PREMIUM:                   RTStrCat(pszTmp, cbTmp, " Home Premium Edition"); break;
     133        case kRTWinProdType_HOME_PREMIUM_N:                 RTStrCat(pszTmp, cbTmp, " Home Premium Edition"); break;
     134        case kRTWinProdType_HOME_SERVER:                    RTStrCat(pszTmp, cbTmp, " Home Server Edition"); break;
     135        case kRTWinProdType_SERVER_FOR_SMALLBUSINESS:       RTStrCat(pszTmp, cbTmp, " Server for Small Business Edition"); break;
     136        case kRTWinProdType_SMALLBUSINESS_SERVER:           RTStrCat(pszTmp, cbTmp, " Small Business Server"); break;
     137        case kRTWinProdType_SMALLBUSINESS_SERVER_PREMIUM:   RTStrCat(pszTmp, cbTmp, " Small Business Server Premium Edition"); break;
     138        case kRTWinProdType_STANDARD_SERVER:                RTStrCat(pszTmp, cbTmp, " Server Standard Edition (full installation)"); break;
     139        case kRTWinProdType_STANDARD_SERVER_CORE:           RTStrCat(pszTmp, cbTmp, " Server Standard Edition (core installation)"); break;
     140        case kRTWinProdType_STARTER:                        RTStrCat(pszTmp, cbTmp, " Starter Edition"); break;
     141        case kRTWinProdType_STORAGE_ENTERPRISE_SERVER:      RTStrCat(pszTmp, cbTmp, " Storage Server Enterprise Edition"); break;
     142        case kRTWinProdType_STORAGE_EXPRESS_SERVER:         RTStrCat(pszTmp, cbTmp, " Storage Server Express Edition"); break;
     143        case kRTWinProdType_STORAGE_STANDARD_SERVER:        RTStrCat(pszTmp, cbTmp, " Storage Server Standard Edition"); break;
     144        case kRTWinProdType_STORAGE_WORKGROUP_SERVER:       RTStrCat(pszTmp, cbTmp, " Storage Server Workgroup Edition"); break;
     145        case kRTWinProdType_ULTIMATE:                       RTStrCat(pszTmp, cbTmp, " Ultimate Edition"); break;
     146        case kRTWinProdType_ULTIMATE_N:                     RTStrCat(pszTmp, cbTmp, " Ultimate Edition"); break;
     147        case kRTWinProdType_WEB_SERVER:                     RTStrCat(pszTmp, cbTmp, " Web Server Edition (full installation)"); break;
     148        case kRTWinProdType_WEB_SERVER_CORE:                RTStrCat(pszTmp, cbTmp, " Web Server Edition (core installation)"); break;
     149        case kRTWinProdType_UNDEFINED:                      break;
    149150    }
    150151}
     
    201202                    strcpy(szTmp, "Windows XP");
    202203                    if (g_WinOsInfoEx.wSuiteMask & VER_SUITE_PERSONAL)
    203                         strcat(szTmp, " Home");
     204                        RTStrCat(szTmp, sizeof(szTmp), " Home");
    204205                    if (    g_WinOsInfoEx.wProductType == VER_NT_WORKSTATION
    205206                        && !(g_WinOsInfoEx.wSuiteMask & VER_SUITE_PERSONAL))
    206                         strcat(szTmp, " Professional");
     207                        RTStrCat(szTmp, sizeof(szTmp), " Professional");
    207208#if 0 /** @todo fixme */
    208209                    if (GetSystemMetrics(SM_MEDIACENTER))
    209                         strcat(szTmp, " Media Center");
     210                        RTStrCat(szTmp, sizeof(szTmp), " Media Center");
    210211#endif
    211212                    break;
     
    215216                {
    216217                    strcpy(szTmp, "Windows Vista");
    217                     rtSystemWinAppendProductType(szTmp);
     218                    rtSystemWinAppendProductType(szTmp, sizeof(szTmp));
    218219                    break;
    219220                }
Note: See TracChangeset for help on using the changeset viewer.

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