VirtualBox

Changeset 30320 in vbox for trunk/src/VBox/Runtime/testcase


Ignore:
Timestamp:
Jun 21, 2010 8:35:09 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
62878
Message:

*: Replaced memchr(psz, '\0', cb) with RTStrEnd(psz, cb) and worked around memchr( RTSTR_MAX) issue in RTStrEnd. Here (linux.amd64 / glibc-2.10.1-r1) memchr fails for cb > ~(size_t)11. Since RTSTR_MAX is ~(size_t)0, this behavior breaks several IPRT string APIs.

Location:
trunk/src/VBox/Runtime/testcase
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/testcase/tstNoCrt-1.cpp

    r30255 r30320  
    55
    66/*
    7  * Copyright (C) 2008 Oracle Corporation
     7 * Copyright (C) 2008-2010 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    427427    pv = RT_NOCRT(memchr)(&s_szTest1[0x00], 'f', sizeof(s_szTest1)); CHECK_PV(&s_szTest1[0xf]);
    428428    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]);
    431434    for (unsigned i = 0; i < sizeof(s_szTest1); i++)
    432435        for (unsigned j = 0; j <= i; j++)
  • trunk/src/VBox/Runtime/testcase/tstRTSystemQueryDmi.cpp

    r29560 r30320  
    7474            RTTestIFailed("level=%d; unterminated buffer on VERR_NOT_SUPPORTED\n", i);
    7575        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);
    7777        else if (rc != VERR_NOT_SUPPORTED && rc != VERR_ACCESS_DENIED)
    7878            RTTestIFailed("level=%d unexpected rc=%Rrc\n", i, rc);
     
    109109
    110110            /* check for zero terminator. */
    111             if (!memchr(szInfo, '\0', cch))
     111            if (!RTStrEnd(szInfo, cch))
    112112                RTTestIFailed("level=%d, rc=%Rrc, cch=%zu: Buffer not terminated!\n", i, rc, cch);
    113113        }
  • trunk/src/VBox/Runtime/testcase/tstRTSystemQueryOsInfo.cpp

    r28800 r30320  
    7777            RTTestIFailed("level=%d; unterminated buffer on VERR_NOT_SUPPORTED\n", i);
    7878        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);
    8080        else if (rc != VERR_NOT_SUPPORTED)
    8181            RTTestIFailed("level=%d unexpected rc=%Rrc\n", i, rc);
     
    112112
    113113            /* check for zero terminator. */
    114             if (!memchr(szInfo, '\0', cch))
     114            if (!RTStrEnd(szInfo, cch))
    115115                RTTestIFailed("level=%d, rc=%Rrc, cch=%zu: Buffer not terminated!\n", i, rc, cch);
    116116        }
  • trunk/src/VBox/Runtime/testcase/tstUtf8.cpp

    r30318 r30320  
    844844
    845845    RTTestSubDone(hTest);
     846}
     847
     848
     849/**
     850 * Tests RTStrEnd
     851 */
     852static 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
    846862}
    847863
     
    12221238    test3(hTest);
    12231239    TstRTStrXCmp(hTest);
     1240    testStrEnd(hTest);
    12241241    testStrStr(hTest);
    12251242    testMinistring(hTest);
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