Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 636400 | Differences between
and this patch

Collapse All | Expand All

(-)a/Python/pyhash.c (-6 / +8 lines)
Lines 372-378 siphash24(const void *src, Py_ssize_t sr Link Here
372
    PY_UINT64_T k0 = _le64toh(_Py_HashSecret.siphash.k0);
372
    PY_UINT64_T k0 = _le64toh(_Py_HashSecret.siphash.k0);
373
    PY_UINT64_T k1 = _le64toh(_Py_HashSecret.siphash.k1);
373
    PY_UINT64_T k1 = _le64toh(_Py_HashSecret.siphash.k1);
374
    PY_UINT64_T b = (PY_UINT64_T)src_sz << 56;
374
    PY_UINT64_T b = (PY_UINT64_T)src_sz << 56;
375
    const PY_UINT64_T *in = (PY_UINT64_T*)src;
375
    const PY_UINT8_T *in = (PY_UINT8_T*)src;
376
376
377
    PY_UINT64_T v0 = k0 ^ 0x736f6d6570736575ULL;
377
    PY_UINT64_T v0 = k0 ^ 0x736f6d6570736575ULL;
378
    PY_UINT64_T v1 = k1 ^ 0x646f72616e646f6dULL;
378
    PY_UINT64_T v1 = k1 ^ 0x646f72616e646f6dULL;
Lines 381-392 siphash24(const void *src, Py_ssize_t sr Link Here
381
381
382
    PY_UINT64_T t;
382
    PY_UINT64_T t;
383
    PY_UINT8_T *pt;
383
    PY_UINT8_T *pt;
384
    PY_UINT8_T *m;
384
    const PY_UINT8_T *m;
385
385
386
    while (src_sz >= 8) {
386
    while (src_sz >= 8) {
387
        PY_UINT64_T mi = _le64toh(*in);
387
        PY_UINT64_T mi;
388
        in += 1;
388
        memcpy(&mi, in, sizeof(mi));
389
        src_sz -= 8;
389
        mi = _le64toh(mi);
390
        in += sizeof(mi);
391
        src_sz -= sizeof(mi);
390
        v3 ^= mi;
392
        v3 ^= mi;
391
        DOUBLE_ROUND(v0,v1,v2,v3);
393
        DOUBLE_ROUND(v0,v1,v2,v3);
392
        v0 ^= mi;
394
        v0 ^= mi;
Lines 394-400 siphash24(const void *src, Py_ssize_t sr Link Here
394
396
395
    t = 0;
397
    t = 0;
396
    pt = (PY_UINT8_T *)&t;
398
    pt = (PY_UINT8_T *)&t;
397
    m = (PY_UINT8_T *)in;
399
    m = in;
398
    switch (src_sz) {
400
    switch (src_sz) {
399
        case 7: pt[6] = m[6];
401
        case 7: pt[6] = m[6];
400
        case 6: pt[5] = m[5];
402
        case 6: pt[5] = m[5];

Return to bug 636400