- Timestamp:
- Jun 21, 2010 8:35:09 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/cpp/ministring.h
r30318 r30320 328 328 329 329 /** 330 * Returns true if the member string has no length. 331 * This is true for instances created from both NULL and "" input strings. 330 * Returns @c true if the member string has no length. 331 * 332 * This is @c true for instances created from both NULL and "" input 333 * strings. 332 334 * 333 335 * This states nothing about how much memory might be allocated. 334 336 * 335 * @returns true if empty,false if not.337 * @returns @c true if empty, @c false if not. 336 338 */ 337 339 bool isEmpty() const 338 340 { 339 341 return length() == 0; 342 } 343 344 /** 345 * Returns @c false if the member string has no length. 346 * 347 * This is @c false for instances created from both NULL and "" input 348 * strings. 349 * 350 * This states nothing about how much memory might be allocated. 351 * 352 * @returns @c false if empty, @c true if not. 353 */ 354 bool isNotEmpty() const 355 { 356 return length() != 0; 340 357 } 341 358 -
trunk/include/iprt/string.h
r28800 r30320 1195 1195 RTDECL(int) RTStrNLenEx(const char *pszString, size_t cchMax, size_t *pcch); 1196 1196 1197 RT_C_DECLS_END 1198 1199 /** The maximum size argument of a memchr call. */ 1200 #define RTSTR_MEMCHR_MAX (~(size_t)0x10000) 1201 1202 /** 1203 * Find the zero terminator in a string with a limited length. 1204 * 1205 * @returns Pointer to the zero terminator. 1206 * @returns NULL if the zero terminator was not found. 1207 * 1208 * @param pszString The string. 1209 * @param cchMax The max string length. RTSTR_MAX is fine. 1210 */ 1211 #if defined(__cplusplus) && !defined(DOXYGEN_RUNNING) 1212 DECLINLINE(char const *) RTStrEnd(char const *pszString, size_t cchMax) 1213 { 1214 /* Avoid potential issues with memchr seen in glibc. */ 1215 if (cchMax > RTSTR_MEMCHR_MAX) 1216 { 1217 char const *pszRet = (char const *)memchr(pszString, '\0', RTSTR_MEMCHR_MAX); 1218 if (RT_LIKELY(pszRet)) 1219 return pszRet; 1220 pszString += RTSTR_MEMCHR_MAX; 1221 cchMax -= RTSTR_MEMCHR_MAX; 1222 } 1223 return (char const *)memchr(pszString, '\0', cchMax); 1224 } 1225 1226 DECLINLINE(char *) RTStrEnd(char *pszString, size_t cchMax) 1227 #else 1228 DECLINLINE(char *) RTStrEnd(const char *pszString, size_t cchMax) 1229 #endif 1230 { 1231 /* Avoid potential issues with memchr seen in glibc. */ 1232 if (cchMax > RTSTR_MEMCHR_MAX) 1233 { 1234 char *pszRet = (char *)memchr(pszString, '\0', RTSTR_MEMCHR_MAX); 1235 if (RT_LIKELY(pszRet)) 1236 return pszRet; 1237 pszString += RTSTR_MEMCHR_MAX; 1238 cchMax -= RTSTR_MEMCHR_MAX; 1239 } 1240 return (char *)memchr(pszString, '\0', cchMax); 1241 } 1242 1243 RT_C_DECLS_BEGIN 1244 1197 1245 /** 1198 1246 * Matches a simple string pattern. -
trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestProp.cpp
r28800 r30320 329 329 { 330 330 /* Validate / skip 'Name'. */ 331 char *pszFlags = (char *)memchr(pvBuf, '\0', cbBuf) + 1;331 char *pszFlags = RTStrEnd((char *)pvBuf, cbBuf) + 1; 332 332 AssertPtrReturn(pszFlags, VERR_TOO_MUCH_DATA); 333 333 if (ppszValue) … … 337 337 { 338 338 /* Validate 'Flags'. */ 339 void *pvEos = memchr(pszFlags, '\0', cbBuf - (pszFlags - (char *)pvBuf));340 AssertPtrReturn(p vEos, VERR_TOO_MUCH_DATA);339 char *pszEos = RTStrEnd(pszFlags, cbBuf - (pszFlags - (char *)pvBuf)); 340 AssertPtrReturn(pszEos, VERR_TOO_MUCH_DATA); 341 341 *ppszFlags = pszFlags; 342 342 } … … 685 685 686 686 char *pszName = pchNext; 687 char *pszValue = pchNext = (char *)memchr(pchNext, '\0', pchEnd - pchNext) + 1;687 char *pszValue = pchNext = RTStrEnd(pchNext, pchEnd - pchNext) + 1; 688 688 AssertPtrReturn(pchNext, VERR_PARSE_ERROR); /* 0x1 is also an invalid pointer :) */ 689 689 690 char *pszTimestamp = pchNext = (char *)memchr(pchNext, '\0', pchEnd - pchNext) + 1;690 char *pszTimestamp = pchNext = RTStrEnd(pchNext, pchEnd - pchNext) + 1; 691 691 AssertPtrReturn(pchNext, VERR_PARSE_ERROR); 692 692 693 char *pszFlags = pchNext = (char *)memchr(pchNext, '\0', pchEnd - pchNext) + 1;693 char *pszFlags = pchNext = RTStrEnd(pchNext, pchEnd - pchNext) + 1; 694 694 AssertPtrReturn(pchNext, VERR_PARSE_ERROR); 695 695 … … 701 701 if (*pszName != '\0') 702 702 { 703 pchNext = (char *)memchr(pchNext, '\0', pchEnd - pchNext) + 1;703 pchNext = RTStrEnd(pchNext, pchEnd - pchNext) + 1; 704 704 AssertPtrReturn(pchNext, VERR_PARSE_ERROR); 705 705 … … 880 880 { 881 881 /* Validate / skip 'Name'. */ 882 char *pszValue = (char *)memchr(pvBuf, '\0', cbBuf) + 1;882 char *pszValue = RTStrEnd((char *)pvBuf, cbBuf) + 1; 883 883 AssertPtrReturn(pszValue, VERR_TOO_MUCH_DATA); 884 884 if (ppszName) … … 886 886 887 887 /* Validate / skip 'Value'. */ 888 char *pszFlags = (char *)memchr(pszValue, '\0', 889 cbBuf - (pszValue - (char *)pvBuf)) + 1; 888 char *pszFlags = RTStrEnd(pszValue, cbBuf - (pszValue - (char *)pvBuf)) + 1; 890 889 AssertPtrReturn(pszFlags, VERR_TOO_MUCH_DATA); 891 890 if (ppszValue) … … 895 894 { 896 895 /* Validate 'Flags'. */ 897 void *pvEos = memchr(pszFlags, '\0', cbBuf - (pszFlags - (char *)pvBuf));898 AssertPtrReturn(p vEos, VERR_TOO_MUCH_DATA);896 char *pszEos = RTStrEnd(pszFlags, cbBuf - (pszFlags - (char *)pvBuf)); 897 AssertPtrReturn(pszEos, VERR_TOO_MUCH_DATA); 899 898 *ppszFlags = pszFlags; 900 899 } -
trunk/src/VBox/Devices/Network/SrvIntNetR0.cpp
r30111 r30320 5289 5289 5290 5290 AssertPtrReturn(pszNetwork, VERR_INVALID_PARAMETER); 5291 const char *pszNetworkEnd = (const char *)memchr(pszNetwork, '\0', INTNET_MAX_NETWORK_NAME);5291 const char *pszNetworkEnd = RTStrEnd(pszNetwork, INTNET_MAX_NETWORK_NAME); 5292 5292 AssertReturn(pszNetworkEnd, VERR_INVALID_PARAMETER); 5293 5293 size_t cchNetwork = pszNetworkEnd - pszNetwork; … … 5297 5297 { 5298 5298 AssertPtrReturn(pszTrunk, VERR_INVALID_PARAMETER); 5299 const char *pszTrunkEnd = (const char *)memchr(pszTrunk, '\0', INTNET_MAX_TRUNK_NAME);5299 const char *pszTrunkEnd = RTStrEnd(pszTrunk, INTNET_MAX_TRUNK_NAME); 5300 5300 AssertReturn(pszTrunkEnd, VERR_INVALID_PARAMETER); 5301 5301 } -
trunk/src/VBox/HostDrivers/Support/SUPDrv.c
r29978 r30320 1218 1218 REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageBits < pReq->u.In.cbImageWithTabs); 1219 1219 REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.szName[0]); 1220 REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, memchr(pReq->u.In.szName, '\0', sizeof(pReq->u.In.szName)));1220 REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, RTStrEnd(pReq->u.In.szName, sizeof(pReq->u.In.szName))); 1221 1221 REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, !supdrvCheckInvalidChar(pReq->u.In.szName, ";:()[]{}/\\|&*%#@!~`\"'")); 1222 REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, memchr(pReq->u.In.szFilename, '\0', sizeof(pReq->u.In.szFilename)));1222 REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, RTStrEnd(pReq->u.In.szFilename, sizeof(pReq->u.In.szFilename))); 1223 1223 1224 1224 /* execute */ … … 1256 1256 REQ_CHECK_EXPR_FMT(paSyms[i].offName < pReq->u.In.cbStrTab, 1257 1257 ("SUP_IOCTL_LDR_LOAD: sym #%ld: name off %#lx (max=%#lx)\n", (long)i, (long)paSyms[i].offName, (long)pReq->u.In.cbImageWithTabs)); 1258 REQ_CHECK_EXPR_FMT( memchr(&pReq->u.In.abImage[pReq->u.In.offStrTab + paSyms[i].offName], '\0', pReq->u.In.cbStrTab - paSyms[i].offName),1258 REQ_CHECK_EXPR_FMT(RTStrEnd(&pReq->u.In.abImage[pReq->u.In.offStrTab + paSyms[i].offName], pReq->u.In.cbStrTab - paSyms[i].offName), 1259 1259 ("SUP_IOCTL_LDR_LOAD: sym #%ld: unterminated name! (%#lx / %#lx)\n", (long)i, (long)paSyms[i].offName, (long)pReq->u.In.cbImageWithTabs)); 1260 1260 } … … 1282 1282 PSUPLDRGETSYMBOL pReq = (PSUPLDRGETSYMBOL)pReqHdr; 1283 1283 REQ_CHECK_SIZES(SUP_IOCTL_LDR_GET_SYMBOL); 1284 REQ_CHECK_EXPR(SUP_IOCTL_LDR_GET_SYMBOL, memchr(pReq->u.In.szSymbol, '\0', sizeof(pReq->u.In.szSymbol)));1284 REQ_CHECK_EXPR(SUP_IOCTL_LDR_GET_SYMBOL, RTStrEnd(pReq->u.In.szSymbol, sizeof(pReq->u.In.szSymbol))); 1285 1285 1286 1286 /* execute */ … … 1493 1493 REQ_CHECK_SIZES_EX(SUP_IOCTL_CALL_SERVICE, SUP_IOCTL_CALL_SERVICE_SIZE_IN(pSrvReq->cbReq), SUP_IOCTL_CALL_SERVICE_SIZE_OUT(pSrvReq->cbReq)); 1494 1494 } 1495 REQ_CHECK_EXPR(SUP_IOCTL_CALL_SERVICE, memchr(pReq->u.In.szName, '\0', sizeof(pReq->u.In.szName)));1495 REQ_CHECK_EXPR(SUP_IOCTL_CALL_SERVICE, RTStrEnd(pReq->u.In.szName, sizeof(pReq->u.In.szName))); 1496 1496 1497 1497 /* execute */ … … 3287 3287 AssertPtrReturn(pFactory, VERR_INVALID_POINTER); 3288 3288 AssertPtrReturn(pFactory->pfnQueryFactoryInterface, VERR_INVALID_POINTER); 3289 psz = (const char *)memchr(pFactory->szName, '\0', sizeof(pFactory->szName));3289 psz = RTStrEnd(pFactory->szName, sizeof(pFactory->szName)); 3290 3290 AssertReturn(psz, VERR_INVALID_PARAMETER); 3291 3291 … … 3426 3426 3427 3427 AssertPtrReturn(pszName, VERR_INVALID_POINTER); 3428 pszEnd = memchr(pszName, '\0', RT_SIZEOFMEMB(SUPDRVFACTORY, szName));3428 pszEnd = RTStrEnd(pszName, RT_SIZEOFMEMB(SUPDRVFACTORY, szName)); 3429 3429 AssertReturn(pszEnd, VERR_INVALID_PARAMETER); 3430 3430 cchName = pszEnd - pszName; 3431 3431 3432 3432 AssertPtrReturn(pszInterfaceUuid, VERR_INVALID_POINTER); 3433 pszEnd = memchr(pszInterfaceUuid, '\0', RTUUID_STR_LENGTH);3433 pszEnd = RTStrEnd(pszInterfaceUuid, RTUUID_STR_LENGTH); 3434 3434 AssertReturn(pszEnd, VERR_INVALID_PARAMETER); 3435 3435 … … 4139 4139 */ 4140 4140 AssertPtrReturn(pszSymbol, VERR_INVALID_POINTER); 4141 pszEnd = (char *)memchr(pszSymbol, '\0', 512);4141 pszEnd = RTStrEnd(pszSymbol, 512); 4142 4142 AssertReturn(pszEnd, VERR_INVALID_PARAMETER); 4143 4143 cbSymbol = pszEnd - pszSymbol + 1; … … 4146 4146 { 4147 4147 AssertPtrReturn(pszModule, VERR_INVALID_POINTER); 4148 pszEnd = (char *)memchr(pszModule, '\0', 64);4148 pszEnd = RTStrEnd(pszModule, 64); 4149 4149 AssertReturn(pszEnd, VERR_INVALID_PARAMETER); 4150 4150 } -
trunk/src/VBox/HostDrivers/VBoxNetAdp/darwin/VBoxNetAdp-darwin.cpp
r28800 r30320 365 365 case IOCBASECMD(VBOXNETADP_CTL_REMOVE): 366 366 { 367 if (! memchr(pReq->szName, '\0', RT_MIN(cbReq, sizeof(pReq->szName))))367 if (!RTStrEnd(pReq->szName, RT_MIN(cbReq, sizeof(pReq->szName)))) 368 368 return EINVAL; 369 369 -
trunk/src/VBox/HostDrivers/VBoxNetAdp/freebsd/VBoxNetAdp-freebsd.c
r29713 r30320 170 170 171 171 case VBOXNETADP_CTL_REMOVE: 172 if (! memchr(pReq->szName, '\0', RT_MIN(sizeof(pReq->szName), IOCPARM_LEN(iCmd))))172 if (!RTStrEnd(pReq->szName, RT_MIN(sizeof(pReq->szName), IOCPARM_LEN(iCmd)))) 173 173 return EINVAL; 174 174 -
trunk/src/VBox/Runtime/common/path/RTPathAppend.cpp
r28800 r30320 107 107 RTDECL(int) RTPathAppend(char *pszPath, size_t cbPathDst, const char *pszAppend) 108 108 { 109 char *pszPathEnd = (char *)memchr(pszPath, '\0', cbPathDst);109 char *pszPathEnd = RTStrEnd(pszPath, cbPathDst); 110 110 AssertReturn(pszPathEnd, VERR_INVALID_PARAMETER); 111 111 -
trunk/src/VBox/Runtime/common/string/RTStrCopyEx.cpp
r28800 r30320 35 35 RTDECL(int) RTStrCopyEx(char *pszDst, size_t cbDst, const char *pszSrc, size_t cchMaxSrc) 36 36 { 37 const char *pszSrcEol = (const char *)memchr(pszSrc, '\0', cchMaxSrc);37 const char *pszSrcEol = RTStrEnd(pszSrc, cchMaxSrc); 38 38 size_t cchSrc = pszSrcEol ? (size_t)(pszSrcEol - pszSrc) : cchMaxSrc; 39 39 if (RT_LIKELY(cchSrc < cbDst)) -
trunk/src/VBox/Runtime/common/string/RTStrNLen.cpp
r28800 r30320 35 35 RTDECL(size_t) RTStrNLen(const char *pszString, size_t cchMax) 36 36 { 37 const char *pchEnd = (const char *)memchr(pszString, '\0', cchMax);37 const char *pchEnd = RTStrEnd(pszString, cchMax); 38 38 return pchEnd ? pchEnd - pszString : cchMax; 39 39 } -
trunk/src/VBox/Runtime/common/string/RTStrNLenEx.cpp
r28800 r30320 34 34 RTDECL(int) RTStrNLenEx(const char *pszString, size_t cchMax, size_t *pcch) 35 35 { 36 const char *pchEnd = (const char *)memchr(pszString, '\0', cchMax);36 const char *pchEnd = RTStrEnd(pszString, cchMax); 37 37 if (!pchEnd) 38 38 { -
trunk/src/VBox/Runtime/common/string/strcache.cpp
r28800 r30320 153 153 AssertPtr(pchString); 154 154 AssertReturn(cchString < _1G, NULL); 155 Assert(! memchr(pchString, '\0', cchString));155 Assert(!RTStrEnd(pchString, cchString)); 156 156 157 157 return (const char *)RTMemPoolDupEx((RTMEMPOOL)hStrCache, pchString, cchString, 1); -
trunk/src/VBox/Runtime/common/string/stringalloc.cpp
r28800 r30320 132 132 { 133 133 AssertPtr(pszString); 134 char *pszEnd = (char *)memchr(pszString, '\0', cchMax);135 size_t cch = pszEnd ? (uintptr_t)pszEnd - (uintptr_t)pszString : cchMax;136 char *pszDst = (char *)RTMemAlloc(cch + 1);134 char const *pszEnd = RTStrEnd(pszString, cchMax); 135 size_t cch = pszEnd ? (uintptr_t)pszEnd - (uintptr_t)pszString : cchMax; 136 char *pszDst = (char *)RTMemAlloc(cch + 1); 137 137 if (pszDst) 138 138 { … … 262 262 { 263 263 AssertPtrReturn(pszOld, VERR_OUT_OF_RANGE); 264 char *pszZero = (char *)memchr(pszOld, '\0', cchNew + 63); 264 AssertPtrReturn(cchNew < ~(size_t)64, VERR_OUT_OF_RANGE); 265 char *pszZero = RTStrEnd(pszOld, cchNew + 63); 265 266 AssertReturn(!pszZero || (size_t)(pszZero - pszOld) >= cchNew, VERR_OUT_OF_RANGE); 266 267 pszOld[cchNew] = '\0'; -
trunk/src/VBox/Runtime/generic/strcache-stubs-generic.cpp
r30253 r30320 64 64 AssertPtr(pchString); 65 65 AssertReturn(cchString < _1G, NULL); 66 Assert(! memchr(pchString, '\0', cchString));66 Assert(!RTStrEnd(pchString, cchString)); 67 67 68 68 return (const char *)RTMemPoolDupEx((RTMEMPOOL)hStrCache, pchString, cchString, 1); -
trunk/src/VBox/Runtime/testcase/tstNoCrt-1.cpp
r30255 r30320 5 5 6 6 /* 7 * Copyright (C) 2008 Oracle Corporation7 * Copyright (C) 2008-2010 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 427 427 pv = RT_NOCRT(memchr)(&s_szTest1[0x00], 'f', sizeof(s_szTest1)); CHECK_PV(&s_szTest1[0xf]); 428 428 pv = RT_NOCRT(memchr)(&s_szTest1[0x0f], 'f', sizeof(s_szTest1)); CHECK_PV(&s_szTest1[0xf]); 429 pv = RT_NOCRT(memchr)(&s_szTest1[0x03], 0, sizeof(s_szTest1)); CHECK_PV(&s_szTest1[0x10]); 430 pv = RT_NOCRT(memchr)(&s_szTest1[0x10], 0, sizeof(s_szTest1)); CHECK_PV(&s_szTest1[0x10]); 429 pv = RT_NOCRT(memchr)(&s_szTest1[0x03], 0, sizeof(s_szTest1)); CHECK_PV(&s_szTest1[0x10]); 430 pv = RT_NOCRT(memchr)(&s_szTest1[0x10], 0, sizeof(s_szTest1)); CHECK_PV(&s_szTest1[0x10]); 431 pv = RT_NOCRT(memchr)(&s_szTest1, 0, ~(size_t)0); CHECK_PV(&s_szTest1[0x10]); 432 pv = RT_NOCRT(memchr)(&s_szTest1, 0, ~(size_t)1); CHECK_PV(&s_szTest1[0x10]); 433 pv = RT_NOCRT(memchr)(&s_szTest1, 0, ~(size_t)16); CHECK_PV(&s_szTest1[0x10]); 431 434 for (unsigned i = 0; i < sizeof(s_szTest1); i++) 432 435 for (unsigned j = 0; j <= i; j++) -
trunk/src/VBox/Runtime/testcase/tstRTSystemQueryDmi.cpp
r29560 r30320 74 74 RTTestIFailed("level=%d; unterminated buffer on VERR_NOT_SUPPORTED\n", i); 75 75 else if (RT_SUCCESS(rc) || rc == VERR_BUFFER_OVERFLOW) 76 RTTESTI_CHECK( memchr(szInfo, '\0', sizeof(szInfo)) != NULL);76 RTTESTI_CHECK(RTStrEnd(szInfo, sizeof(szInfo)) != NULL); 77 77 else if (rc != VERR_NOT_SUPPORTED && rc != VERR_ACCESS_DENIED) 78 78 RTTestIFailed("level=%d unexpected rc=%Rrc\n", i, rc); … … 109 109 110 110 /* check for zero terminator. */ 111 if (! memchr(szInfo, '\0', cch))111 if (!RTStrEnd(szInfo, cch)) 112 112 RTTestIFailed("level=%d, rc=%Rrc, cch=%zu: Buffer not terminated!\n", i, rc, cch); 113 113 } -
trunk/src/VBox/Runtime/testcase/tstRTSystemQueryOsInfo.cpp
r28800 r30320 77 77 RTTestIFailed("level=%d; unterminated buffer on VERR_NOT_SUPPORTED\n", i); 78 78 else if (RT_SUCCESS(rc) || rc == VERR_BUFFER_OVERFLOW) 79 RTTESTI_CHECK( memchr(szInfo, '\0', sizeof(szInfo)) != NULL);79 RTTESTI_CHECK(RTStrEnd(szInfo, sizeof(szInfo)) != NULL); 80 80 else if (rc != VERR_NOT_SUPPORTED) 81 81 RTTestIFailed("level=%d unexpected rc=%Rrc\n", i, rc); … … 112 112 113 113 /* check for zero terminator. */ 114 if (! memchr(szInfo, '\0', cch))114 if (!RTStrEnd(szInfo, cch)) 115 115 RTTestIFailed("level=%d, rc=%Rrc, cch=%zu: Buffer not terminated!\n", i, rc, cch); 116 116 } -
trunk/src/VBox/Runtime/testcase/tstUtf8.cpp
r30318 r30320 844 844 845 845 RTTestSubDone(hTest); 846 } 847 848 849 /** 850 * Tests RTStrEnd 851 */ 852 static void testStrEnd(RTTEST hTest) 853 { 854 RTTestSub(hTest, "RTStrEnd"); 855 856 static char const s_szEmpty[1] = ""; 857 RTTESTI_CHECK(RTStrEnd(s_szEmpty, 0) == NULL); 858 RTTESTI_CHECK(RTStrEnd(s_szEmpty, 1) == &s_szEmpty[0]); 859 for (size_t i = 0; i < _1M; i++) 860 RTTESTI_CHECK(RTStrEnd(s_szEmpty, ~i) == &s_szEmpty[0]); 861 846 862 } 847 863 … … 1222 1238 test3(hTest); 1223 1239 TstRTStrXCmp(hTest); 1240 testStrEnd(hTest); 1224 1241 testStrStr(hTest); 1225 1242 testMinistring(hTest); -
trunk/src/VBox/VMM/DBGFMem.cpp
r28800 r30320 244 244 * This may look a bit reckless with the rc but, it should be fine. 245 245 */ 246 if (! memchr(pszBuf, '\0', cchBuf))246 if (!RTStrEnd(pszBuf, cchBuf)) 247 247 { 248 248 pszBuf[cchBuf - 1] = '\0'; -
trunk/src/VBox/VMM/DBGFOS.cpp
r28800 r30320 143 143 AssertReturn(pReg->cbData < _2G, VERR_INVALID_PARAMETER); 144 144 AssertReturn(pReg->szName[0], VERR_INVALID_NAME); 145 AssertReturn( memchr(&pReg->szName[0], '\0', sizeof(pReg->szName)), VERR_INVALID_NAME);145 AssertReturn(RTStrEnd(&pReg->szName[0], sizeof(pReg->szName)), VERR_INVALID_NAME); 146 146 AssertPtrReturn(pReg->pfnConstruct, VERR_INVALID_POINTER); 147 147 AssertPtrNullReturn(pReg->pfnDestruct, VERR_INVALID_POINTER); … … 229 229 AssertReturn(pReg->u32Magic == DBGFOSREG_MAGIC, VERR_INVALID_MAGIC); 230 230 AssertReturn(pReg->u32EndMagic == DBGFOSREG_MAGIC, VERR_INVALID_MAGIC); 231 AssertReturn( memchr(&pReg->szName[0], '\0', sizeof(pReg->szName)), VERR_INVALID_NAME);231 AssertReturn(RTStrEnd(&pReg->szName[0], sizeof(pReg->szName)), VERR_INVALID_NAME); 232 232 233 233 DBGF_OS_READ_LOCK(pVM); -
trunk/src/VBox/VMM/PDMDriver.cpp
r30217 r30320 263 263 VERR_PDM_UNKNOWN_DRVREG_VERSION); 264 264 AssertReturn(pReg->szName[0], VERR_PDM_INVALID_DRIVER_REGISTRATION); 265 AssertMsgReturn( memchr(pReg->szName, '\0', sizeof(pReg->szName)),265 AssertMsgReturn(RTStrEnd(pReg->szName, sizeof(pReg->szName)), 266 266 (".*s\n", sizeof(pReg->szName), pReg->szName), 267 267 VERR_PDM_INVALID_DRIVER_REGISTRATION); 268 268 AssertMsgReturn( !(pReg->fFlags & PDM_DRVREG_FLAGS_R0) 269 269 || ( pReg->szR0Mod[0] 270 && memchr(pReg->szR0Mod, '\0', sizeof(pReg->szR0Mod))),270 && RTStrEnd(pReg->szR0Mod, sizeof(pReg->szR0Mod))), 271 271 ("%s: %.*s\n", pReg->szName, sizeof(pReg->szR0Mod), pReg->szR0Mod), 272 272 VERR_PDM_INVALID_DRIVER_REGISTRATION); 273 273 AssertMsgReturn( !(pReg->fFlags & PDM_DRVREG_FLAGS_RC) 274 274 || ( pReg->szRCMod[0] 275 && memchr(pReg->szRCMod, '\0', sizeof(pReg->szRCMod))),275 && RTStrEnd(pReg->szRCMod, sizeof(pReg->szRCMod))), 276 276 ("%s: %.*s\n", pReg->szName, sizeof(pReg->szRCMod), pReg->szRCMod), 277 277 VERR_PDM_INVALID_DRIVER_REGISTRATION); -
trunk/src/VBox/VMM/VMMAll/VMAll.cpp
r28800 r30320 242 242 AssertPtr(pszErrorId); 243 243 Assert(*pszErrorId); 244 Assert( memchr(pszErrorId, '\0', 128) != NULL);244 Assert(RTStrEnd(pszErrorId, 128) != NULL); 245 245 AssertPtr(pszFormat); 246 Assert( memchr(pszFormat, '\0', 512) != NULL);246 Assert(RTStrEnd(pszFormat, 512) != NULL); 247 247 248 248 #ifdef IN_RING3 -
trunk/src/bldprogs/scm.cpp
r29907 r30320 724 724 bool ScmStreamIsText(PSCMSTREAM pStream) 725 725 { 726 if ( memchr(pStream->pch, '\0', pStream->cb))726 if (RTStrEnd(pStream->pch, pStream->cb)) 727 727 return false; 728 728 if (!pStream->cb)
Note:
See TracChangeset
for help on using the changeset viewer.