Changeset 4912 in CLRX


Ignore:
Timestamp:
Aug 20, 2019, 5:03:10 PM (4 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCm: Add next testcases for skipping MsgPack? values - arrays. Cast values to higher values to insure good value.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdbin/ROCmMetadata.cpp

    r4910 r4912  
    15901590            throw ParseException("MsgPack: Can't skip object");
    15911591        size_t size = *dataPtr++;
    1592         size |= (*dataPtr++)<<8;
     1592        size |= uint16_t(*dataPtr++)<<8;
    15931593        if (dataPtr+size>dataEnd)
    15941594            throw ParseException("MsgPack: Can't skip object");
     
    16021602        size_t size = 0;
    16031603        for (cxuint i = 0; i < 32; i+=8)
    1604             size |= (*dataPtr++)<<i;
     1604            size |= uint32_t(*dataPtr++)<<i;
    16051605        if (dataPtr+size>dataEnd)
    16061606            throw ParseException("MsgPack: Can't skip object");
     
    16231623            throw ParseException("MsgPack: Can't skip object");
    16241624        size_t size = *dataPtr++;
    1625         size |= (*dataPtr++)<<8;
    1626         if (dataPtr+size>=dataEnd)
    1627             throw ParseException("MsgPack: Can't skip object");
     1625        size |= uint16_t(*dataPtr++)<<8;
    16281626        if (isMap)
    16291627            size<<=1;
     
    16401638        for (cxuint i = 0; i < 32; i+=8)
    16411639            size |= (*dataPtr++)<<i;
    1642         if (dataPtr+size>=dataEnd)
    1643             throw ParseException("MsgPack: Can't skip object");
    16441640        if (isMap)
    16451641            size<<=1;
     
    16661662                throw ParseException("MsgPack: Can't parse array size");
    16671663            count = *dataPtr++;
    1668             count |= (*dataPtr++)<<8;
     1664            count |= uint16_t(*dataPtr++)<<8;
    16691665        }
    16701666        else if (code == 0xdd)
     
    17731769                throw ParseException("MsgPack: Can't parse map size");
    17741770            count = *dataPtr++;
    1775             count |= (*dataPtr++)<<8;
     1771            count |= uint16_t(*dataPtr++)<<8;
    17761772        }
    17771773        else if (code == 0xdf)
  • CLRadeonExtender/trunk/tests/amdbin/ROCmMsgPack.cpp

    r4911 r4912  
    10691069        tc11[4] = (11232)>>8;
    10701070        for (size_t i = 0; i < tc11.size()-5; i++)
    1071             tc11[i+5] = (i&0x80)&0xff;
     1071            tc11[i+5] = (i^0x80)&0xff;
    10721072        dataPtr = tc11.data();
    10731073        MsgPackMapParser mapParser(dataPtr, dataPtr + tc11.size());
     
    11031103        tc12[6] = ((4511232)>>24);
    11041104        for (size_t i = 0; i < tc12.size()-7; i++)
    1105             tc12[i+7] = (i&0x80)&0xff;
     1105            tc12[i+7] = (i^0x80)&0xff;
    11061106        dataPtr = tc12.data();
    11071107        MsgPackMapParser mapParser(dataPtr, dataPtr + tc12.size());
     
    11391139        mapParser.parseKeyNil();
    11401140        mapParser.skipValue();
    1141         assertValue("MsgPackSkip", "tc9.DataPtr", dataPtr, tc13 + sizeof(tc13));
     1141        assertValue("MsgPackSkip", "tc13.DataPtr", dataPtr, tc13 + sizeof(tc13));
    11421142    }
    11431143    dataPtr = tc13;
     
    11631163        tc14[4] = (11232)>>8;
    11641164        for (size_t i = 0; i < tc14.size()-5; i++)
    1165             tc14[i+5] = (i&0x80)&0xff;
     1165            tc14[i+5] = (i^0x80)&0xff;
    11661166        dataPtr = tc14.data();
    11671167        MsgPackMapParser mapParser(dataPtr, dataPtr + tc14.size());
     
    11971197        tc15[6] = ((4511232)>>24);
    11981198        for (size_t i = 0; i < tc15.size()-7; i++)
    1199             tc15[i+7] = (i&0x80)&0xff;
     1199            tc15[i+7] = (i^0x80)&0xff;
    12001200        dataPtr = tc15.data();
    12011201        MsgPackMapParser mapParser(dataPtr, dataPtr + tc15.size());
     
    12221222    }
    12231223    /* skip arrays */
     1224    const cxbyte tc16[10] = { 0x81, 0xc0, 0x93, 0x12, 0x92, 0xe9, 0xcd, 0x01, 0x27, 0x45 };
     1225    dataPtr = tc16;
     1226    {
     1227        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc16));
     1228        mapParser.parseKeyNil();
     1229        mapParser.skipValue();
     1230        assertValue("MsgPackSkip", "tc16.DataPtr", dataPtr, tc16 + sizeof(tc16));
     1231    }
     1232    const cxbyte tc16_1[12] = { 0x81, 0xc0, 0x93, 0x12, 0xa4, 0x33,
     1233                    0x35, 0x37, 0x4a, 0xcd, 0x01, 0x02 };
     1234    dataPtr = tc16_1;
     1235    {
     1236        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc16_1));
     1237        mapParser.parseKeyNil();
     1238        mapParser.skipValue();
     1239        assertValue("MsgPackSkip", "tc16_1.DataPtr", dataPtr, tc16_1 + sizeof(tc16_1));
     1240    }
     1241    {
     1242        Array<cxbyte> tc17(5 + 11277);
     1243        tc17[0] = 0x81;
     1244        tc17[1] = 0xc0;
     1245        tc17[2] = 0xdc;
     1246        tc17[3] = (11277)&255;
     1247        tc17[4] = (11277)>>8;
     1248        for (size_t i = 0; i < tc17.size()-5; i++)
     1249            tc17[i+5] = i&0x7f;
     1250        dataPtr = tc17.data();
     1251        MsgPackMapParser mapParser(dataPtr, dataPtr + tc17.size());
     1252        mapParser.parseKeyNil();
     1253        mapParser.skipValue();
     1254        const cxbyte* dataEnd = tc17.end();
     1255        assertValue("MsgPackSkip", "tc17.DataPtr", dataPtr, dataEnd);
     1256        {
     1257            dataPtr = tc17.data();
     1258            MsgPackMapParser mapParser(dataPtr, dataPtr + tc17.size()-1);
     1259            mapParser.parseKeyNil();
     1260            assertCLRXException("MsgPackSkip", "tc17_1.DataPtr",
     1261                    "MsgPack: Can't skip object",
     1262                    [&mapParser]() { mapParser.skipValue(); });
     1263        }
     1264        {
     1265            dataPtr = tc17.data();
     1266            MsgPackMapParser mapParser(dataPtr, dataPtr + 4);
     1267            mapParser.parseKeyNil();
     1268            assertCLRXException("MsgPackSkip", "tc17_2.DataPtr",
     1269                    "MsgPack: Can't skip object",
     1270                    [&mapParser]() { mapParser.skipValue(); });
     1271        }
     1272    }
    12241273}
    12251274
Note: See TracChangeset for help on using the changeset viewer.