Changeset 26838 in vbox for trunk/src/VBox/Runtime
- Timestamp:
- Feb 26, 2010 12:38:30 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 58113
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstRTSystemQueryDmi.cpp
r26608 r26838 50 50 * Simple stuff. 51 51 */ 52 char szInfo[ 256];52 char szInfo[_4K]; 53 53 54 54 rc = RTSystemQueryDmiString(RTSYSDMISTR_PRODUCT_NAME, szInfo, sizeof(szInfo)); … … 71 71 memset(szInfo, ' ', sizeof(szInfo)); 72 72 rc = RTSystemQueryDmiString((RTSYSDMISTR)i, szInfo, sizeof(szInfo)); 73 if ( rc == VERR_NOT_SUPPORTED73 if ( (rc == VERR_NOT_SUPPORTED || rc == VERR_ACCESS_DENIED) 74 74 && szInfo[0] != '\0') 75 75 RTTestIFailed("level=%d; unterminated buffer on VERR_NOT_SUPPORTED\n", i); 76 else if (RT_SUCCESS(rc) || rc == VERR_BUFFER_OVERFLOW || rc == VERR_ACCESS_DENIED)76 else if (RT_SUCCESS(rc) || rc == VERR_BUFFER_OVERFLOW) 77 77 RTTESTI_CHECK(memchr(szInfo, '\0', sizeof(szInfo)) != NULL); 78 else if (rc != VERR_NOT_SUPPORTED )78 else if (rc != VERR_NOT_SUPPORTED && rc != VERR_ACCESS_DENIED) 79 79 RTTestIFailed("level=%d unexpected rc=%Rrc\n", i, rc); 80 80 } … … 87 87 for (int i = RTSYSDMISTR_INVALID + 1; i < RTSYSDMISTR_END; i++) 88 88 { 89 rc = VERR_BUFFER_OVERFLOW; 90 for (size_t cch = 0; cch < sizeof(szInfo) && rc == VERR_BUFFER_OVERFLOW; cch++) 89 RTTESTI_CHECK_RC(RTSystemQueryDmiString((RTSYSDMISTR)i, szInfo, 0), VERR_INVALID_PARAMETER); 90 91 /* Get the length of the info and check that we get overflow errors for 92 everything less that it. */ 93 rc = RTSystemQueryDmiString((RTSYSDMISTR)i, szInfo, sizeof(szInfo)); 94 if (RT_FAILURE(rc)) 95 continue; 96 size_t const cchInfo = strlen(szInfo); 97 98 for (size_t cch = 1; cch < sizeof(szInfo) && cch < cchInfo; cch++) 91 99 { 92 100 memset(szInfo, 0x7f, sizeof(szInfo)); 93 rc = RTSystemQueryDmiString((RTSYSDMISTR)i, szInfo, cch);101 RTTESTI_CHECK_RC(RTSystemQueryDmiString((RTSYSDMISTR)i, szInfo, cch), VERR_BUFFER_OVERFLOW); 94 102 95 103 /* check the padding. */ … … 102 110 103 111 /* check for zero terminator. */ 104 if ( ( rc == VERR_BUFFER_OVERFLOW 105 || rc == VERR_NOT_SUPPORTED 106 || RT_SUCCESS(rc)) 107 && cch > 0 108 && !memchr(szInfo, '\0', cch)) 112 if (!memchr(szInfo, '\0', cch)) 109 113 RTTestIFailed("level=%d, rc=%Rrc, cch=%zu: Buffer not terminated!\n", i, rc, cch); 110 114 } 115 116 /* Check that the exact length works. */ 117 rc = RTSystemQueryDmiString((RTSYSDMISTR)i, szInfo, cchInfo + 1); 118 if (rc != VINF_SUCCESS) 119 RTTestIFailed("level=%d: rc=%Rrc when specifying exactly right buffer length (%zu)\n", i, rc, cchInfo + 1); 111 120 } 112 121
Note:
See TracChangeset
for help on using the changeset viewer.