Global Metrics
path: .metrics.loc.ploc
old: 483.0
new: 181.0
path: .metrics.loc.blank
old: 39.0
new: 34.0
path: .metrics.loc.sloc
old: 584.0
new: 235.0
path: .metrics.loc.cloc
old: 62.0
new: 20.0
path: .metrics.loc.lloc
old: 180.0
new: 82.0
path: .metrics.cyclomatic.average
old: 2.923076923076923
new: 2.1578947368421053
path: .metrics.cyclomatic.sum
old: 76.0
new: 41.0
path: .metrics.halstead.purity_ratio
old: 0.4854908213591129
new: 0.6137916148721461
path: .metrics.halstead.level
old: 0.00907204142328348
new: 0.017391304347826087
path: .metrics.halstead.N1
old: 1908.0
new: 769.0
path: .metrics.halstead.time
old: 176067.527893701
new: 26608.79601958182
path: .metrics.halstead.vocabulary
old: 239.0
new: 120.0
path: .metrics.halstead.volume
old: 28751.254314241945
new: 8329.710058303874
path: .metrics.halstead.length
old: 3639.0
new: 1206.0
path: .metrics.halstead.N2
old: 1731.0
new: 437.0
path: .metrics.halstead.effort
old: 3169215.5020866175
new: 478958.32835247274
path: .metrics.halstead.difficulty
old: 110.22877358490568
new: 57.5
path: .metrics.halstead.n1
old: 27.0
new: 25.0
path: .metrics.halstead.bugs
old: 7.19194890013212
new: 2.040534294510749
path: .metrics.halstead.estimated_program_length
old: 1766.701098925812
new: 740.2326875358082
path: .metrics.halstead.n2
old: 212.0
new: 95.0
path: .metrics.cognitive.average
old: 3.36
new: 1.5555555555555556
path: .metrics.cognitive.sum
old: 84.0
new: 28.0
path: .metrics.mi.mi_sei
old: -48.19372819352048
new: -11.918781910936904
path: .metrics.mi.mi_visual_studio
old: 0.0
new: 15.310689033447265
path: .metrics.mi.mi_original
old: -3.0578666245126698
new: 26.181278247194825
path: .metrics.nargs.average
old: 3.6
new: 1.6111111111111112
path: .metrics.nargs.sum
old: 90.0
new: 29.0
path: .metrics.nom.functions
old: 25.0
new: 18.0
path: .metrics.nom.total
old: 25.0
new: 18.0
path: .metrics.nexits.average
old: 0.52
new: 1.4444444444444444
path: .metrics.nexits.sum
old: 13.0
new: 26.0
Spaces Data
Minimal test - lines (91, 98)
path: .spaces[5].metrics.mi.mi_original
old: 71.99879695121476
new: 105.63046133429516
path: .spaces[5].metrics.mi.mi_sei
old: 52.76691795201737
new: 77.09897017940607
path: .spaces[5].metrics.mi.mi_visual_studio
old: 42.10455962059342
new: 61.77219961069891
path: .spaces[5].metrics.nexits.average
old: 0.0
new: 2.0
path: .spaces[5].metrics.nexits.sum
old: 0.0
new: 2.0
path: .spaces[5].metrics.cognitive.sum
old: 6.0
new: 3.0
path: .spaces[5].metrics.cognitive.average
old: 6.0
new: 3.0
path: .spaces[5].metrics.loc.sloc
old: 38.0
new: 8.0
path: .spaces[5].metrics.loc.cloc
old: 4.0
new: 0.0
path: .spaces[5].metrics.loc.ploc
old: 34.0
new: 8.0
path: .spaces[5].metrics.loc.lloc
old: 10.0
new: 4.0
path: .spaces[5].metrics.halstead.effort
old: 54610.874631973034
new: 6473.563202945463
path: .spaces[5].metrics.halstead.level
old: 0.03261675315048184
new: 0.05729166666666667
path: .spaces[5].metrics.halstead.n1
old: 19.0
new: 16.0
path: .spaces[5].metrics.halstead.purity_ratio
old: 1.0769315905217087
new: 1.308381382115516
path: .spaces[5].metrics.halstead.N1
old: 156.0
new: 54.0
path: .spaces[5].metrics.halstead.difficulty
old: 30.65909090909091
new: 17.454545454545453
path: .spaces[5].metrics.halstead.length
old: 298.0
new: 78.0
path: .spaces[5].metrics.halstead.volume
old: 1781.2294172029751
new: 370.8812251687505
path: .spaces[5].metrics.halstead.estimated_program_length
old: 320.9256139754692
new: 102.05374780501026
path: .spaces[5].metrics.halstead.n2
old: 44.0
new: 11.0
path: .spaces[5].metrics.halstead.N2
old: 142.0
new: 24.0
path: .spaces[5].metrics.halstead.bugs
old: 0.47980507067303735
new: 0.11578198925696692
path: .spaces[5].metrics.halstead.time
old: 3033.9374795540575
new: 359.6424001636368
path: .spaces[5].metrics.halstead.vocabulary
old: 63.0
new: 27.0
path: .spaces[5].metrics.nargs.sum
old: 5.0
new: 3.0
path: .spaces[5].metrics.nargs.average
old: 5.0
new: 3.0
path: .spaces[5].metrics.cyclomatic.average
old: 5.0
new: 4.0
path: .spaces[5].metrics.cyclomatic.sum
old: 5.0
new: 4.0
Code
static int internal_memcmp(const void *s1, const void *s2, size_t n) {
const uint8_t *t1 = static_cast(s1);
const uint8_t *t2 = static_cast(s2);
for (size_t i = 0; i < n; ++i, ++t1, ++t2)
if (*t1 != *t2)
return *t1 < *t2 ? -1 : 1;
return 0;
}
Minimal test - lines (194, 199)
path: .spaces[16].metrics.halstead.vocabulary
old: 24.0
new: 18.0
path: .spaces[16].metrics.halstead.purity_ratio
old: 1.6
new: 1.0403505627067933
path: .spaces[16].metrics.halstead.level
old: 0.13793103448275862
new: 0.11904761904761904
path: .spaces[16].metrics.halstead.effort
old: 1828.253797162561
new: 1926.505350666348
path: .spaces[16].metrics.halstead.N2
old: 29.0
new: 21.0
path: .spaces[16].metrics.halstead.N1
old: 26.0
new: 34.0
path: .spaces[16].metrics.halstead.n2
old: 16.0
new: 10.0
path: .spaces[16].metrics.halstead.time
old: 101.56965539792006
new: 107.02807503701936
path: .spaces[16].metrics.halstead.bugs
old: 0.04983904761209741
new: 0.05160901357793046
path: .spaces[16].metrics.halstead.difficulty
old: 7.25
new: 8.4
path: .spaces[16].metrics.halstead.estimated_program_length
old: 88.0
new: 57.219280948873624
path: .spaces[16].metrics.halstead.volume
old: 252.1729375396636
new: 229.34587507932716
path: .spaces[16].metrics.mi.mi_visual_studio
old: 63.34880025803458
new: 66.36274513058673
path: .spaces[16].metrics.mi.mi_sei
old: 80.68299783068136
new: 88.11842550983712
path: .spaces[16].metrics.mi.mi_original
old: 108.32644844123914
new: 113.48029417330328
path: .spaces[16].metrics.loc.lloc
old: 1.0
new: 3.0
path: .spaces[16].metrics.loc.sloc
old: 8.0
new: 6.0
path: .spaces[16].metrics.loc.ploc
old: 8.0
new: 6.0
path: .spaces[16].metrics.nargs.sum
old: 4.0
new: 0.0
path: .spaces[16].metrics.nargs.average
old: 4.0
new: 0.0
Code
void *memmem(const void *s1, size_t len1, const void *s2, size_t len2) {
ensureFuzzerInited();
void *result = REAL(memmem)(s1, len1, s2, len2);
__sanitizer_weak_hook_memmem(GET_CALLER_PC(), s1, len1, s2, len2, result);
return result;
}
Minimal test - lines (206, 233)
path: .spaces[17].metrics.cyclomatic.sum
old: 1.0
new: 2.0
path: .spaces[17].metrics.cyclomatic.average
old: 1.0
new: 2.0
path: .spaces[17].metrics.halstead.volume
old: 580.0
new: 1200.7669376550489
path: .spaces[17].metrics.halstead.n2
old: 22.0
new: 36.0
path: .spaces[17].metrics.halstead.bugs
old: 0.13232130952663085
new: 0.21525816192015895
path: .spaces[17].metrics.halstead.N1
old: 56.0
new: 133.0
path: .spaces[17].metrics.halstead.estimated_program_length
old: 131.32677655889415
new: 229.1368500605771
path: .spaces[17].metrics.halstead.length
old: 116.0
new: 215.0
path: .spaces[17].metrics.halstead.N2
old: 60.0
new: 82.0
path: .spaces[17].metrics.halstead.vocabulary
old: 32.0
new: 48.0
path: .spaces[17].metrics.halstead.purity_ratio
old: 1.132127384128398
new: 1.0657527909794284
path: .spaces[17].metrics.halstead.level
old: 0.07333333333333333
new: 0.07317073170731708
path: .spaces[17].metrics.halstead.effort
old: 7909.090909090909
new: 16410.481481285664
path: .spaces[17].metrics.halstead.difficulty
old: 13.636363636363637
new: 13.666666666666666
path: .spaces[17].metrics.halstead.n1
old: 10.0
new: 12.0
path: .spaces[17].metrics.halstead.time
old: 439.3939393939394
new: 911.6934156269812
path: .spaces[17].metrics.loc.lloc
old: 3.0
new: 15.0
path: .spaces[17].metrics.loc.blank
old: 0.0
new: 2.0
path: .spaces[17].metrics.loc.ploc
old: 15.0
new: 26.0
path: .spaces[17].metrics.loc.cloc
old: 3.0
new: 0.0
path: .spaces[17].metrics.loc.sloc
old: 18.0
new: 28.0
path: .spaces[17].metrics.nargs.sum
old: 4.0
new: 0.0
path: .spaces[17].metrics.nargs.average
old: 4.0
new: 0.0
path: .spaces[17].metrics.cognitive.average
old: 0.0
new: 1.0
path: .spaces[17].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[17].metrics.mi.mi_original
old: 90.85823138367174
new: 79.68656505418433
path: .spaces[17].metrics.mi.mi_sei
old: 85.03804356932153
new: 39.466199955943694
path: .spaces[17].metrics.mi.mi_visual_studio
old: 53.13346864542207
new: 46.60033044104347
Code
static void fuzzerInit() {
assert(!FuzzerInitIsRunning);
if (FuzzerInited)
return;
FuzzerInitIsRunning = true;
REAL(bcmp) = reinterpret_cast(
getFuncAddr("bcmp", reinterpret_cast(&bcmp)));
REAL(memcmp) = reinterpret_cast(
getFuncAddr("memcmp", reinterpret_cast(&memcmp)));
REAL(strncmp) = reinterpret_cast(
getFuncAddr("strncmp", reinterpret_cast(&strncmp)));
REAL(strcmp) = reinterpret_cast(
getFuncAddr("strcmp", reinterpret_cast(&strcmp)));
REAL(strncasecmp) = reinterpret_cast(
getFuncAddr("strncasecmp", reinterpret_cast(&strncasecmp)));
REAL(strcasecmp) = reinterpret_cast(
getFuncAddr("strcasecmp", reinterpret_cast(&strcasecmp)));
REAL(strstr) = reinterpret_cast(
getFuncAddr("strstr", reinterpret_cast(&strstr)));
REAL(strcasestr) = reinterpret_cast(
getFuncAddr("strcasestr", reinterpret_cast(&strcasestr)));
REAL(memmem) = reinterpret_cast(
getFuncAddr("memmem", reinterpret_cast(&memmem)));
FuzzerInitIsRunning = false;
FuzzerInited = 1;
}
Minimal test - lines (55, 60)
path: .spaces[1].metrics.halstead.estimated_program_length
old: 43.65148445440323
new: 27.11941547876375
path: .spaces[1].metrics.halstead.time
old: 32.74346403938568
new: 9.801722919472342
path: .spaces[1].metrics.halstead.n2
old: 7.0
new: 5.0
path: .spaces[1].metrics.halstead.n1
old: 8.0
new: 6.0
path: .spaces[1].metrics.halstead.bugs
old: 0.023432043450054736
new: 0.010485650136965346
path: .spaces[1].metrics.halstead.difficulty
old: 6.285714285714286
new: 3.0
path: .spaces[1].metrics.halstead.purity_ratio
old: 1.8188118522668013
new: 1.5952597340449264
path: .spaces[1].metrics.halstead.volume
old: 93.76537429460444
new: 58.81033751683405
path: .spaces[1].metrics.halstead.length
old: 24.0
new: 17.0
path: .spaces[1].metrics.halstead.level
old: 0.1590909090909091
new: 0.3333333333333333
path: .spaces[1].metrics.halstead.effort
old: 589.3823527089422
new: 176.43101255050215
path: .spaces[1].metrics.halstead.N2
old: 11.0
new: 5.0
path: .spaces[1].metrics.halstead.N1
old: 13.0
new: 12.0
path: .spaces[1].metrics.halstead.vocabulary
old: 15.0
new: 11.0
path: .spaces[1].metrics.nargs.average
old: 2.0
new: 0.0
path: .spaces[1].metrics.nargs.sum
old: 2.0
new: 0.0
path: .spaces[1].metrics.nexits.sum
old: 1.0
new: 0.0
path: .spaces[1].metrics.nexits.average
old: 1.0
new: 0.0
path: .spaces[1].metrics.mi.mi_visual_studio
old: 75.6493237283014
new: 70.36669288373412
path: .spaces[1].metrics.mi.mi_sei
old: 111.02849403130712
new: 98.09801858957128
path: .spaces[1].metrics.mi.mi_original
old: 129.3603435753954
new: 120.32704483118532
path: .spaces[1].metrics.loc.lloc
old: 1.0
new: 3.0
path: .spaces[1].metrics.loc.ploc
old: 3.0
new: 6.0
path: .spaces[1].metrics.loc.sloc
old: 3.0
new: 6.0
path: .spaces[1].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[1].metrics.cognitive.average
old: 0.0
new: 1.0
path: .spaces[1].metrics.cyclomatic.sum
old: 1.0
new: 2.0
path: .spaces[1].metrics.cyclomatic.average
old: 1.0
new: 2.0
Code
static void ensureFuzzerInited() {
assert(!FuzzerInitIsRunning);
if (!FuzzerInited) {
fuzzerInit();
}
}
Minimal test - lines (140, 146)
path: .spaces[9].metrics.nargs.sum
old: 5.0
new: 3.0
path: .spaces[9].metrics.nargs.average
old: 5.0
new: 3.0
path: .spaces[9].metrics.nexits.sum
old: 0.0
new: 2.0
path: .spaces[9].metrics.nexits.average
old: 0.0
new: 2.0
path: .spaces[9].metrics.cognitive.average
old: 9.0
new: 1.0
path: .spaces[9].metrics.cognitive.sum
old: 9.0
new: 1.0
path: .spaces[9].metrics.halstead.n2
old: 44.0
new: 12.0
path: .spaces[9].metrics.halstead.length
old: 341.0
new: 57.0
path: .spaces[9].metrics.halstead.vocabulary
old: 63.0
new: 22.0
path: .spaces[9].metrics.halstead.N1
old: 175.0
new: 33.0
path: .spaces[9].metrics.halstead.bugs
old: 0.5825100273798132
new: 0.062084280859812054
path: .spaces[9].metrics.halstead.purity_ratio
old: 0.941130832772637
new: 1.3375233501320614
path: .spaces[9].metrics.halstead.difficulty
old: 35.84090909090909
new: 10.0
path: .spaces[9].metrics.halstead.N2
old: 166.0
new: 24.0
path: .spaces[9].metrics.halstead.effort
old: 73052.82090503511
new: 2541.8760226232594
path: .spaces[9].metrics.halstead.level
old: 0.027901077996195307
new: 0.1
path: .spaces[9].metrics.halstead.n1
old: 19.0
new: 10.0
path: .spaces[9].metrics.halstead.estimated_program_length
old: 320.9256139754692
new: 76.2388309575275
path: .spaces[9].metrics.halstead.volume
old: 2038.2524539134715
new: 254.18760226232595
path: .spaces[9].metrics.halstead.time
old: 4058.4900502797286
new: 141.21533459018107
path: .spaces[9].metrics.mi.mi_original
old: 68.20279936361267
new: 110.21827813821852
path: .spaces[9].metrics.mi.mi_visual_studio
old: 39.88467799041676
new: 64.45513341416287
path: .spaces[9].metrics.mi.mi_sei
old: 45.25945584416269
new: 83.51415101212447
path: .spaces[9].metrics.cyclomatic.average
old: 5.0
new: 2.0
path: .spaces[9].metrics.cyclomatic.sum
old: 5.0
new: 2.0
path: .spaces[9].metrics.loc.ploc
old: 42.0
new: 7.0
path: .spaces[9].metrics.loc.lloc
old: 10.0
new: 4.0
path: .spaces[9].metrics.loc.sloc
old: 46.0
new: 7.0
path: .spaces[9].metrics.loc.cloc
old: 4.0
new: 0.0
Code
ATTRIBUTE_INTERFACE int memcmp(const void *s1, const void *s2, size_t n) {
if (!FuzzerInited)
return internal_memcmp(s1, s2, n);
int result = REAL(memcmp)(s1, s2, n);
__sanitizer_weak_hook_memcmp(GET_CALLER_PC(), s1, s2, n, result);
return result;
}
Minimal test - lines (87, 89)
path: .spaces[4].metrics.mi.mi_visual_studio
old: 75.577701946166
new: 76.07901260725062
path: .spaces[4].metrics.mi.mi_original
old: 129.23787032794388
new: 130.09511155839854
path: .spaces[4].metrics.mi.mi_sei
old: 110.85180248456726
new: 112.08854015658976
path: .spaces[4].metrics.halstead.purity_ratio
old: 2.0
new: 1.5982390663059165
path: .spaces[4].metrics.halstead.bugs
old: 0.020434918197161412
new: 0.017485065986883357
path: .spaces[4].metrics.halstead.estimated_program_length
old: 48.0
new: 35.161259458730164
path: .spaces[4].metrics.halstead.effort
old: 480.0
new: 379.9118110624854
path: .spaces[4].metrics.halstead.n1
old: 8.0
new: 7.0
path: .spaces[4].metrics.halstead.level
old: 0.2
new: 0.21428571428571427
path: .spaces[4].metrics.halstead.difficulty
old: 5.0
new: 4.666666666666667
path: .spaces[4].metrics.halstead.vocabulary
old: 16.0
new: 13.0
path: .spaces[4].metrics.halstead.n2
old: 8.0
new: 6.0
path: .spaces[4].metrics.halstead.length
old: 24.0
new: 22.0
path: .spaces[4].metrics.halstead.N2
old: 10.0
new: 8.0
path: .spaces[4].metrics.halstead.volume
old: 96.0
new: 81.40967379910403
path: .spaces[4].metrics.halstead.time
old: 26.666666666666668
new: 21.106211725693637
path: .spaces[4].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[4].metrics.nexits.average
old: 0.0
new: 1.0
Code
static int internal_strcmp(const char *s1, const char *s2) {
return internal_strcmp_strncmp(s1, s2, false, 0);
}
Minimal test - lines (32, 48)
path: .spaces[0].metrics.cyclomatic.average
old: 1.0
new: 3.0
path: .spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 3.0
path: .spaces[0].metrics.loc.lloc
old: 1.0
new: 5.0
path: .spaces[0].metrics.loc.sloc
old: 5.0
new: 17.0
path: .spaces[0].metrics.loc.blank
old: 0.0
new: 1.0
path: .spaces[0].metrics.loc.cloc
old: 0.0
new: 7.0
path: .spaces[0].metrics.loc.ploc
old: 5.0
new: 9.0
path: .spaces[0].metrics.cognitive.average
old: 0.0
new: 3.0
path: .spaces[0].metrics.cognitive.sum
old: 0.0
new: 3.0
path: .spaces[0].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[0].metrics.nexits.average
old: 0.0
new: 1.0
path: .spaces[0].metrics.mi.mi_original
old: 118.54136499405637
new: 96.19233968177709
path: .spaces[0].metrics.mi.mi_visual_studio
old: 69.3224356690388
new: 56.25283022326144
path: .spaces[0].metrics.mi.mi_sei
old: 95.42000728452535
new: 105.29425435187628
path: .spaces[0].metrics.nargs.sum
old: 4.0
new: 0.0
path: .spaces[0].metrics.nargs.average
old: 4.0
new: 0.0
path: .spaces[0].metrics.halstead.n2
old: 12.0
new: 9.0
path: .spaces[0].metrics.halstead.vocabulary
old: 19.0
new: 22.0
path: .spaces[0].metrics.halstead.effort
old: 758.2550611496799
new: 2956.6031631565284
path: .spaces[0].metrics.halstead.estimated_program_length
old: 62.6710344630571
new: 76.63504134881501
path: .spaces[0].metrics.halstead.n1
old: 7.0
new: 13.0
path: .spaces[0].metrics.halstead.volume
old: 152.92539048396907
new: 227.43101255050215
path: .spaces[0].metrics.halstead.time
old: 42.12528117498222
new: 164.2557312864738
path: .spaces[0].metrics.halstead.length
old: 36.0
new: 51.0
path: .spaces[0].metrics.halstead.bugs
old: 0.02771760004787753
new: 0.06866584519599156
path: .spaces[0].metrics.halstead.N2
old: 17.0
new: 18.0
path: .spaces[0].metrics.halstead.level
old: 0.20168067226890757
new: 0.07692307692307693
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.7408620684182528
new: 1.502647869584608
path: .spaces[0].metrics.halstead.N1
old: 19.0
new: 33.0
path: .spaces[0].metrics.halstead.difficulty
old: 4.958333333333333
new: 13.0
Code
static void *getFuncAddr(const char *name, uintptr_t wrapper_addr) {
void *addr = dlsym(RTLD_NEXT, name);
if (!addr) {
// If the lookup using RTLD_NEXT failed, the sanitizer runtime library is
// later in the library search order than the DSO that we are trying to
// intercept, which means that we cannot intercept this function. We still
// want the address of the real definition, though, so look it up using
// RTLD_DEFAULT.
addr = dlsym(RTLD_DEFAULT, name);
// In case `name' is not loaded, dlsym ends up finding the actual wrapper.
// We don't want to intercept the wrapper and have it point to itself.
if (reinterpret_cast(addr) == wrapper_addr)
addr = nullptr;
}
return addr;
}
Minimal test - lines (164, 169)
path: .spaces[12].metrics.cognitive.sum
old: 21.0
new: 0.0
path: .spaces[12].metrics.cognitive.average
old: 21.0
new: 0.0
path: .spaces[12].metrics.halstead.n1
old: 21.0
new: 8.0
path: .spaces[12].metrics.halstead.vocabulary
old: 85.0
new: 19.0
path: .spaces[12].metrics.halstead.purity_ratio
old: 0.6097806221233726
new: 1.32029250648958
path: .spaces[12].metrics.halstead.effort
old: 299757.449776656
new: 1452.0188591407164
path: .spaces[12].metrics.halstead.difficulty
old: 59.8828125
new: 7.272727272727272
path: .spaces[12].metrics.halstead.N1
old: 416.0
new: 27.0
path: .spaces[12].metrics.halstead.estimated_program_length
old: 476.238665878354
new: 62.05374780501027
path: .spaces[12].metrics.halstead.level
old: 0.01669928245270711
new: 0.1375
path: .spaces[12].metrics.halstead.time
old: 16653.191654258666
new: 80.66771439670646
path: .spaces[12].metrics.halstead.n2
old: 64.0
new: 11.0
path: .spaces[12].metrics.halstead.N2
old: 365.0
new: 20.0
path: .spaces[12].metrics.halstead.volume
old: 5005.734321123545
new: 199.6525931318485
path: .spaces[12].metrics.halstead.length
old: 781.0
new: 47.0
path: .spaces[12].metrics.halstead.bugs
old: 1.4929963138571327
new: 0.042742532444261454
path: .spaces[12].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[12].metrics.nexits.average
old: 0.0
new: 1.0
path: .spaces[12].metrics.loc.ploc
old: 102.0
new: 6.0
path: .spaces[12].metrics.loc.blank
old: 9.0
new: 0.0
path: .spaces[12].metrics.loc.sloc
old: 123.0
new: 6.0
path: .spaces[12].metrics.loc.cloc
old: 12.0
new: 0.0
path: .spaces[12].metrics.loc.lloc
old: 68.0
new: 3.0
path: .spaces[12].metrics.nargs.sum
old: 6.0
new: 3.0
path: .spaces[12].metrics.nargs.average
old: 6.0
new: 3.0
path: .spaces[12].metrics.mi.mi_sei
old: 13.97772002213837
new: 89.15859788879419
path: .spaces[12].metrics.mi.mi_original
old: 44.83724857079514
new: 114.20128672507374
path: .spaces[12].metrics.mi.mi_visual_studio
old: 26.2206131992954
new: 66.78437820179751
path: .spaces[12].metrics.cyclomatic.average
old: 17.0
new: 1.0
path: .spaces[12].metrics.cyclomatic.sum
old: 17.0
new: 1.0
Code
ATTRIBUTE_INTERFACE int strncasecmp(const char *s1, const char *s2, size_t n) {
ensureFuzzerInited();
int result = REAL(strncasecmp)(s1, s2, n);
__sanitizer_weak_hook_strncasecmp(GET_CALLER_PC(), s1, s2, n, result);
return result;
}
Minimal test - lines (107, 118)
path: .spaces[7].metrics.nargs.sum
old: 5.0
new: 0.0
path: .spaces[7].metrics.nargs.average
old: 5.0
new: 0.0
path: .spaces[7].metrics.cognitive.sum
old: 8.0
new: 4.0
path: .spaces[7].metrics.cognitive.average
old: 8.0
new: 4.0
path: .spaces[7].metrics.halstead.n1
old: 15.0
new: 17.0
path: .spaces[7].metrics.halstead.level
old: 0.04736842105263158
new: 0.046218487394957986
path: .spaces[7].metrics.halstead.purity_ratio
old: 1.0871239621659383
new: 1.3966313780034552
path: .spaces[7].metrics.halstead.effort
old: 19580.103708489987
new: 8009.053300147967
path: .spaces[7].metrics.halstead.n2
old: 27.0
new: 11.0
path: .spaces[7].metrics.halstead.difficulty
old: 21.11111111111111
new: 21.636363636363637
path: .spaces[7].metrics.halstead.length
old: 172.0
new: 77.0
path: .spaces[7].metrics.halstead.estimated_program_length
old: 186.98532149254143
new: 107.54061610626604
path: .spaces[7].metrics.halstead.time
old: 1087.7835393605549
new: 444.94740556377593
path: .spaces[7].metrics.halstead.vocabulary
old: 42.0
new: 28.0
path: .spaces[7].metrics.halstead.volume
old: 927.4785967179467
new: 370.16632899843546
path: .spaces[7].metrics.halstead.bugs
old: 0.24215237735137016
new: 0.1334339065939943
path: .spaces[7].metrics.halstead.N2
old: 76.0
new: 28.0
path: .spaces[7].metrics.halstead.N1
old: 96.0
new: 49.0
path: .spaces[7].metrics.nexits.average
old: 0.0
new: 3.0
path: .spaces[7].metrics.nexits.sum
old: 0.0
new: 3.0
path: .spaces[7].metrics.cyclomatic.sum
old: 5.0
new: 4.0
path: .spaces[7].metrics.cyclomatic.average
old: 5.0
new: 4.0
path: .spaces[7].metrics.mi.mi_sei
old: 43.36224479464671
new: 89.2597941599015
path: .spaces[7].metrics.mi.mi_original
old: 82.17536910405282
new: 99.0719595726423
path: .spaces[7].metrics.mi.mi_visual_studio
old: 48.05577140587884
new: 57.936818463533506
path: .spaces[7].metrics.loc.cloc
old: 0.0
new: 1.0
path: .spaces[7].metrics.loc.lloc
old: 10.0
new: 6.0
path: .spaces[7].metrics.loc.sloc
old: 25.0
new: 12.0
path: .spaces[7].metrics.loc.ploc
old: 25.0
new: 11.0
Code
static char *internal_strstr(const char *haystack, const char *needle) {
// This is O(N^2), but we are not using it in hot places.
size_t len1 = internal_strlen(haystack);
size_t len2 = internal_strlen(needle);
if (len1 < len2)
return nullptr;
for (size_t pos = 0; pos <= len1 - len2; pos++) {
if (internal_memcmp(haystack + pos, needle, len2) == 0)
return const_cast(haystack) + pos;
}
return nullptr;
}
Minimal test - lines (171, 176)
path: .spaces[13].metrics.loc.sloc
old: 4.0
new: 6.0
path: .spaces[13].metrics.loc.lloc
old: 1.0
new: 3.0
path: .spaces[13].metrics.loc.ploc
old: 4.0
new: 6.0
path: .spaces[13].metrics.mi.mi_visual_studio
old: 72.34844187342469
new: 67.33114244159044
path: .spaces[13].metrics.mi.mi_original
old: 123.71583560355624
new: 115.13625357511968
path: .spaces[13].metrics.mi.mi_sei
old: 102.88519037207652
new: 90.50746992675109
path: .spaces[13].metrics.halstead.difficulty
old: 5.333333333333333
new: 6.8
path: .spaces[13].metrics.halstead.estimated_program_length
old: 44.039100017307746
new: 57.219280948873624
path: .spaces[13].metrics.halstead.time
old: 33.570319191895415
new: 63.01220002179494
path: .spaces[13].metrics.halstead.bugs
old: 0.023824880395284295
new: 0.03625296323782281
path: .spaces[13].metrics.halstead.effort
old: 604.2657454541175
new: 1134.2196003923088
path: .spaces[13].metrics.halstead.n1
old: 6.0
new: 8.0
path: .spaces[13].metrics.halstead.vocabulary
old: 15.0
new: 18.0
path: .spaces[13].metrics.halstead.N2
old: 16.0
new: 17.0
path: .spaces[13].metrics.halstead.length
old: 29.0
new: 40.0
path: .spaces[13].metrics.halstead.level
old: 0.1875
new: 0.14705882352941177
path: .spaces[13].metrics.halstead.N1
old: 13.0
new: 23.0
path: .spaces[13].metrics.halstead.volume
old: 113.29982727264704
new: 166.7970000576925
path: .spaces[13].metrics.halstead.purity_ratio
old: 1.5185896557692329
new: 1.4304820237218403
path: .spaces[13].metrics.halstead.n2
old: 9.0
new: 10.0
Code
ATTRIBUTE_INTERFACE int strcasecmp(const char *s1, const char *s2) {
ensureFuzzerInited();
int result = REAL(strcasecmp)(s1, s2);
__sanitizer_weak_hook_strcasecmp(GET_CALLER_PC(), s1, s2, result);
return result;
}
Minimal test - lines (186, 191)
path: .spaces[15].metrics.nargs.average
old: 4.0
new: 0.0
path: .spaces[15].metrics.nargs.sum
old: 4.0
new: 0.0
path: .spaces[15].metrics.loc.sloc
old: 8.0
new: 6.0
path: .spaces[15].metrics.loc.lloc
old: 1.0
new: 3.0
path: .spaces[15].metrics.loc.ploc
old: 8.0
new: 6.0
path: .spaces[15].metrics.halstead.purity_ratio
old: 1.6
new: 1.3623638321160387
path: .spaces[15].metrics.halstead.volume
old: 252.1729375396636
new: 175.1368500605771
path: .spaces[15].metrics.halstead.bugs
old: 0.04983904761209741
new: 0.03745154254488141
path: .spaces[15].metrics.halstead.vocabulary
old: 24.0
new: 18.0
path: .spaces[15].metrics.halstead.effort
old: 1828.253797162561
new: 1190.9305804119242
path: .spaces[15].metrics.halstead.N2
old: 29.0
new: 17.0
path: .spaces[15].metrics.halstead.estimated_program_length
old: 88.0
new: 57.219280948873624
path: .spaces[15].metrics.halstead.time
old: 101.56965539792006
new: 66.16281002288468
path: .spaces[15].metrics.halstead.length
old: 55.0
new: 42.0
path: .spaces[15].metrics.halstead.level
old: 0.13793103448275862
new: 0.14705882352941177
path: .spaces[15].metrics.halstead.difficulty
old: 7.25
new: 6.8
path: .spaces[15].metrics.halstead.N1
old: 26.0
new: 25.0
path: .spaces[15].metrics.halstead.n2
old: 16.0
new: 10.0
path: .spaces[15].metrics.mi.mi_visual_studio
old: 63.34880025803458
new: 67.18277469089978
path: .spaces[15].metrics.mi.mi_original
old: 108.32644844123914
new: 114.88254472143862
path: .spaces[15].metrics.mi.mi_sei
old: 80.68299783068136
new: 90.1414454217158
Code
ATTRIBUTE_INTERFACE char *strcasestr(const char *s1, const char *s2) {
ensureFuzzerInited();
char *result = REAL(strcasestr)(s1, s2);
__sanitizer_weak_hook_strcasestr(GET_CALLER_PC(), s1, s2, result);
return result;
}
Minimal test - lines (100, 105)
path: .spaces[6].metrics.mi.mi_sei
old: 56.319891558803675
new: 95.111382182126
path: .spaces[6].metrics.mi.mi_original
old: 80.78851263726344
new: 118.25686622600696
path: .spaces[6].metrics.mi.mi_visual_studio
old: 47.2447442323178
new: 69.15606212047192
path: .spaces[6].metrics.nexits.average
old: 0.0
new: 1.0
path: .spaces[6].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[6].metrics.nargs.sum
old: 5.0
new: 1.0
path: .spaces[6].metrics.nargs.average
old: 5.0
new: 1.0
path: .spaces[6].metrics.halstead.difficulty
old: 20.4
new: 10.0
path: .spaces[6].metrics.halstead.vocabulary
old: 52.0
new: 14.0
path: .spaces[6].metrics.halstead.N1
old: 104.0
new: 15.0
path: .spaces[6].metrics.halstead.N2
old: 84.0
new: 8.0
path: .spaces[6].metrics.halstead.length
old: 188.0
new: 23.0
path: .spaces[6].metrics.halstead.estimated_program_length
old: 249.01177389432956
new: 41.219280948873624
path: .spaces[6].metrics.halstead.level
old: 0.04901960784313726
new: 0.1
path: .spaces[6].metrics.halstead.n2
old: 35.0
new: 4.0
path: .spaces[6].metrics.halstead.volume
old: 1071.6826670105252
new: 87.56916320732489
path: .spaces[6].metrics.halstead.bugs
old: 0.26062115272505854
new: 0.03051028129713424
path: .spaces[6].metrics.halstead.purity_ratio
old: 1.3245307122038807
new: 1.7921426499510271
path: .spaces[6].metrics.halstead.effort
old: 21862.326407014712
new: 875.6916320732489
path: .spaces[6].metrics.halstead.n1
old: 17.0
new: 10.0
path: .spaces[6].metrics.halstead.time
old: 1214.573689278595
new: 48.6495351151805
path: .spaces[6].metrics.cognitive.average
old: 6.0
new: 1.0
path: .spaces[6].metrics.cognitive.sum
old: 6.0
new: 1.0
path: .spaces[6].metrics.cyclomatic.average
old: 5.0
new: 2.0
path: .spaces[6].metrics.cyclomatic.sum
old: 5.0
new: 2.0
path: .spaces[6].metrics.loc.ploc
old: 25.0
new: 6.0
path: .spaces[6].metrics.loc.cloc
old: 1.0
new: 0.0
path: .spaces[6].metrics.loc.lloc
old: 10.0
new: 3.0
path: .spaces[6].metrics.loc.sloc
old: 26.0
new: 6.0
Code
static size_t internal_strlen(const char *s) {
size_t i = 0;
while (s[i])
i++;
return i;
}
Minimal test - lines (178, 184)
path: .spaces[14].metrics.mi.mi_original
old: 123.71583560355624
new: 110.97847968946098
path: .spaces[14].metrics.mi.mi_visual_studio
old: 72.34844187342469
new: 64.89969572483098
path: .spaces[14].metrics.mi.mi_sei
old: 102.88519037207652
new: 84.61089002017809
path: .spaces[14].metrics.nexits.sum
old: 1.0
new: 2.0
path: .spaces[14].metrics.nexits.average
old: 1.0
new: 2.0
path: .spaces[14].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[14].metrics.cognitive.average
old: 0.0
new: 1.0
path: .spaces[14].metrics.nargs.average
old: 2.0
new: 0.0
path: .spaces[14].metrics.nargs.sum
old: 2.0
new: 0.0
path: .spaces[14].metrics.loc.lloc
old: 1.0
new: 4.0
path: .spaces[14].metrics.loc.sloc
old: 4.0
new: 7.0
path: .spaces[14].metrics.loc.ploc
old: 4.0
new: 7.0
path: .spaces[14].metrics.cyclomatic.sum
old: 1.0
new: 2.0
path: .spaces[14].metrics.cyclomatic.average
old: 1.0
new: 2.0
path: .spaces[14].metrics.halstead.level
old: 0.1875
new: 0.11
path: .spaces[14].metrics.halstead.difficulty
old: 5.333333333333333
new: 9.090909090909092
path: .spaces[14].metrics.halstead.purity_ratio
old: 1.5185896557692329
new: 1.425460575077678
path: .spaces[14].metrics.halstead.vocabulary
old: 15.0
new: 21.0
path: .spaces[14].metrics.halstead.effort
old: 604.2657454541175
new: 1996.5079194448915
path: .spaces[14].metrics.halstead.time
old: 33.570319191895415
new: 110.91710663582732
path: .spaces[14].metrics.halstead.bugs
old: 0.023824880395284295
new: 0.05285175787953142
path: .spaces[14].metrics.halstead.estimated_program_length
old: 44.039100017307746
new: 71.27302875388389
path: .spaces[14].metrics.halstead.n1
old: 6.0
new: 10.0
path: .spaces[14].metrics.halstead.N2
old: 16.0
new: 20.0
path: .spaces[14].metrics.halstead.volume
old: 113.29982727264704
new: 219.61587113893805
path: .spaces[14].metrics.halstead.n2
old: 9.0
new: 11.0
path: .spaces[14].metrics.halstead.N1
old: 13.0
new: 30.0
path: .spaces[14].metrics.halstead.length
old: 29.0
new: 50.0
Code
ATTRIBUTE_INTERFACE char *strstr(const char *s1, const char *s2) {
if (!FuzzerInited)
return internal_strstr(s1, s2);
char *result = REAL(strstr)(s1, s2);
__sanitizer_weak_hook_strstr(GET_CALLER_PC(), s1, s2, result);
return result;
}
Minimal test - lines (62, 81)
path: .spaces[2].metrics.cognitive.average
old: 0.0
new: 10.0
path: .spaces[2].metrics.cognitive.sum
old: 0.0
new: 10.0
path: .spaces[2].metrics.halstead.effort
old: 225.85263754543283
new: 7525.619809076999
path: .spaces[2].metrics.halstead.length
old: 18.0
new: 81.0
path: .spaces[2].metrics.halstead.n2
old: 6.0
new: 12.0
path: .spaces[2].metrics.halstead.N2
old: 7.0
new: 27.0
path: .spaces[2].metrics.halstead.vocabulary
old: 12.0
new: 29.0
path: .spaces[2].metrics.halstead.level
old: 0.2857142857142857
new: 0.05228758169934641
path: .spaces[2].metrics.halstead.time
old: 12.547368752524044
new: 418.08998939316666
path: .spaces[2].metrics.halstead.n1
old: 6.0
new: 17.0
path: .spaces[2].metrics.halstead.volume
old: 64.5293250129808
new: 393.4964606053333
path: .spaces[2].metrics.halstead.N1
old: 11.0
new: 54.0
path: .spaces[2].metrics.halstead.estimated_program_length
old: 31.019550008653873
new: 112.50641830990963
path: .spaces[2].metrics.halstead.bugs
old: 0.01236219309991004
new: 0.12800892822588603
path: .spaces[2].metrics.halstead.purity_ratio
old: 1.723308333814104
new: 1.388968127282835
path: .spaces[2].metrics.halstead.difficulty
old: 3.5
new: 19.125
path: .spaces[2].metrics.loc.ploc
old: 3.0
new: 20.0
path: .spaces[2].metrics.loc.sloc
old: 3.0
new: 20.0
path: .spaces[2].metrics.loc.lloc
old: 1.0
new: 12.0
path: .spaces[2].metrics.nargs.average
old: 1.0
new: 4.0
path: .spaces[2].metrics.nargs.sum
old: 1.0
new: 4.0
path: .spaces[2].metrics.nexits.average
old: 1.0
new: 2.0
path: .spaces[2].metrics.nexits.sum
old: 1.0
new: 2.0
path: .spaces[2].metrics.cyclomatic.average
old: 1.0
new: 7.0
path: .spaces[2].metrics.cyclomatic.sum
old: 1.0
new: 7.0
path: .spaces[2].metrics.mi.mi_visual_studio
old: 76.78564801753932
new: 52.50804818009092
path: .spaces[2].metrics.mi.mi_sei
old: 113.83181573424925
new: 54.54968924847934
path: .spaces[2].metrics.mi.mi_original
old: 131.30345810999222
new: 89.78876238795546
Code
static int internal_strcmp_strncmp(const char *s1, const char *s2, bool strncmp,
size_t n) {
size_t i = 0;
while (true) {
if (strncmp) {
if (i == n)
break;
i++;
}
unsigned c1 = *s1;
unsigned c2 = *s2;
if (c1 != c2)
return (c1 < c2) ? -1 : 1;
if (c1 == 0)
break;
s1++;
s2++;
}
return 0;
}
Minimal test - lines (148, 154)
path: .spaces[10].metrics.cyclomatic.sum
old: 5.0
new: 2.0
path: .spaces[10].metrics.cyclomatic.average
old: 5.0
new: 2.0
path: .spaces[10].metrics.mi.mi_visual_studio
old: 44.38327739816419
new: 64.45513341416287
path: .spaces[10].metrics.mi.mi_original
old: 75.89540435086077
new: 110.21827813821852
path: .spaces[10].metrics.mi.mi_sei
old: 59.98151370976413
new: 83.51415101212447
path: .spaces[10].metrics.cognitive.sum
old: 6.0
new: 1.0
path: .spaces[10].metrics.cognitive.average
old: 6.0
new: 1.0
path: .spaces[10].metrics.halstead.level
old: 0.044117647058823525
new: 0.1
path: .spaces[10].metrics.halstead.vocabulary
old: 56.0
new: 22.0
path: .spaces[10].metrics.halstead.time
old: 1645.417227916321
new: 141.21533459018107
path: .spaces[10].metrics.halstead.N1
old: 121.0
new: 33.0
path: .spaces[10].metrics.halstead.N2
old: 104.0
new: 24.0
path: .spaces[10].metrics.halstead.difficulty
old: 22.666666666666668
new: 10.0
path: .spaces[10].metrics.halstead.length
old: 225.0
new: 57.0
path: .spaces[10].metrics.halstead.estimated_program_length
old: 275.61755483688347
new: 76.2388309575275
path: .spaces[10].metrics.halstead.volume
old: 1306.6548574629608
new: 254.18760226232595
path: .spaces[10].metrics.halstead.purity_ratio
old: 1.224966910386149
new: 1.3375233501320614
path: .spaces[10].metrics.halstead.effort
old: 29617.51010249378
new: 2541.8760226232594
path: .spaces[10].metrics.halstead.n1
old: 17.0
new: 10.0
path: .spaces[10].metrics.halstead.bugs
old: 0.31908846793421475
new: 0.062084280859812054
path: .spaces[10].metrics.halstead.n2
old: 39.0
new: 12.0
path: .spaces[10].metrics.nargs.average
old: 5.0
new: 3.0
path: .spaces[10].metrics.nargs.sum
old: 5.0
new: 3.0
path: .spaces[10].metrics.loc.sloc
old: 33.0
new: 7.0
path: .spaces[10].metrics.loc.lloc
old: 8.0
new: 4.0
path: .spaces[10].metrics.loc.cloc
old: 4.0
new: 0.0
path: .spaces[10].metrics.loc.ploc
old: 29.0
new: 7.0
path: .spaces[10].metrics.nexits.average
old: 0.0
new: 2.0
path: .spaces[10].metrics.nexits.sum
old: 0.0
new: 2.0
Code
ATTRIBUTE_INTERFACE int strncmp(const char *s1, const char *s2, size_t n) {
if (!FuzzerInited)
return internal_strncmp(s1, s2, n);
int result = REAL(strncmp)(s1, s2, n);
__sanitizer_weak_hook_strncmp(GET_CALLER_PC(), s1, s2, n, result);
return result;
}
Minimal test - lines (132, 138)
path: .spaces[8].metrics.cognitive.average
old: 0.0
new: 1.0
path: .spaces[8].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[8].metrics.loc.lloc
old: 1.0
new: 4.0
path: .spaces[8].metrics.loc.ploc
old: 4.0
new: 7.0
path: .spaces[8].metrics.loc.sloc
old: 4.0
new: 7.0
path: .spaces[8].metrics.halstead.volume
old: 118.41407098051496
new: 254.18760226232595
path: .spaces[8].metrics.halstead.time
old: 34.9485973379992
new: 141.21533459018107
path: .spaces[8].metrics.halstead.N1
old: 15.0
new: 33.0
path: .spaces[8].metrics.halstead.n2
old: 8.0
new: 12.0
path: .spaces[8].metrics.halstead.difficulty
old: 5.3125
new: 10.0
path: .spaces[8].metrics.halstead.vocabulary
old: 13.0
new: 22.0
path: .spaces[8].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: 76.2388309575275
path: .spaces[8].metrics.halstead.effort
old: 629.0747520839857
new: 2541.8760226232594
path: .spaces[8].metrics.halstead.level
old: 0.18823529411764703
new: 0.1
path: .spaces[8].metrics.halstead.purity_ratio
old: 1.1128012648261505
new: 1.3375233501320614
path: .spaces[8].metrics.halstead.n1
old: 5.0
new: 10.0
path: .spaces[8].metrics.halstead.length
old: 32.0
new: 57.0
path: .spaces[8].metrics.halstead.N2
old: 17.0
new: 24.0
path: .spaces[8].metrics.halstead.bugs
old: 0.02447260771427677
new: 0.062084280859812054
path: .spaces[8].metrics.nargs.sum
old: 2.0
new: 3.0
path: .spaces[8].metrics.nargs.average
old: 2.0
new: 3.0
path: .spaces[8].metrics.cyclomatic.sum
old: 1.0
new: 2.0
path: .spaces[8].metrics.cyclomatic.average
old: 1.0
new: 2.0
path: .spaces[8].metrics.mi.mi_visual_studio
old: 72.21418482314874
new: 64.45513341416287
path: .spaces[8].metrics.mi.mi_original
old: 123.48625604758436
new: 110.21827813821852
path: .spaces[8].metrics.mi.mi_sei
old: 102.55397708518645
new: 83.51415101212447
path: .spaces[8].metrics.nexits.sum
old: 1.0
new: 2.0
path: .spaces[8].metrics.nexits.average
old: 1.0
new: 2.0
Code
ATTRIBUTE_INTERFACE int bcmp(const char *s1, const char *s2, size_t n) {
if (!FuzzerInited)
return internal_memcmp(s1, s2, n);
int result = REAL(bcmp)(s1, s2, n);
__sanitizer_weak_hook_memcmp(GET_CALLER_PC(), s1, s2, n, result);
return result;
}
Minimal test - lines (83, 85)
path: .spaces[3].metrics.nargs.average
old: 2.0
new: 3.0
path: .spaces[3].metrics.nargs.sum
old: 2.0
new: 3.0
path: .spaces[3].metrics.mi.mi_original
old: 129.23787032794388
new: 129.43037802654715
path: .spaces[3].metrics.mi.mi_visual_studio
old: 75.577701946166
new: 75.69027954768839
path: .spaces[3].metrics.mi.mi_sei
old: 110.85180248456726
new: 111.12953238667517
path: .spaces[3].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[3].metrics.nexits.average
old: 0.0
new: 1.0
path: .spaces[3].metrics.halstead.volume
old: 96.0
new: 92.5109929535273
path: .spaces[3].metrics.halstead.N1
old: 14.0
new: 16.0
path: .spaces[3].metrics.halstead.n1
old: 8.0
new: 7.0
path: .spaces[3].metrics.halstead.time
old: 26.666666666666668
new: 26.9823729447788
path: .spaces[3].metrics.halstead.N2
old: 10.0
new: 9.0
path: .spaces[3].metrics.halstead.estimated_program_length
old: 48.0
new: 35.161259458730164
path: .spaces[3].metrics.halstead.effort
old: 480.0
new: 485.6827130060184
path: .spaces[3].metrics.halstead.difficulty
old: 5.0
new: 5.25
path: .spaces[3].metrics.halstead.bugs
old: 0.020434918197161412
new: 0.020595887416029066
path: .spaces[3].metrics.halstead.vocabulary
old: 16.0
new: 13.0
path: .spaces[3].metrics.halstead.purity_ratio
old: 2.0
new: 1.4064503783492066
path: .spaces[3].metrics.halstead.level
old: 0.2
new: 0.1904761904761905
path: .spaces[3].metrics.halstead.length
old: 24.0
new: 25.0
path: .spaces[3].metrics.halstead.n2
old: 8.0
new: 6.0
Code
static int internal_strncmp(const char *s1, const char *s2, size_t n) {
return internal_strcmp_strncmp(s1, s2, true, n);
}
Minimal test - lines (156, 162)
path: .spaces[11].metrics.halstead.difficulty
old: 27.693548387096776
new: 9.090909090909092
path: .spaces[11].metrics.halstead.length
old: 223.0
new: 48.0
path: .spaces[11].metrics.halstead.volume
old: 1245.4466376608175
new: 210.83123629338053
path: .spaces[11].metrics.halstead.estimated_program_length
old: 223.0669539232489
new: 71.27302875388389
path: .spaces[11].metrics.halstead.vocabulary
old: 48.0
new: 21.0
path: .spaces[11].metrics.halstead.N1
old: 122.0
new: 28.0
path: .spaces[11].metrics.halstead.N2
old: 101.0
new: 20.0
path: .spaces[11].metrics.halstead.effort
old: 34490.836723606844
new: 1916.647602667096
path: .spaces[11].metrics.halstead.n1
old: 17.0
new: 10.0
path: .spaces[11].metrics.halstead.purity_ratio
old: 1.000300241808291
new: 1.4848547657059143
path: .spaces[11].metrics.halstead.n2
old: 31.0
new: 11.0
path: .spaces[11].metrics.halstead.time
old: 1916.1575957559355
new: 106.48042237039422
path: .spaces[11].metrics.halstead.level
old: 0.0361094933022714
new: 0.11
path: .spaces[11].metrics.halstead.bugs
old: 0.35319501507157436
new: 0.05143281075911171
path: .spaces[11].metrics.cognitive.average
old: 6.0
new: 1.0
path: .spaces[11].metrics.cognitive.sum
old: 6.0
new: 1.0
path: .spaces[11].metrics.nargs.average
old: 5.0
new: 2.0
path: .spaces[11].metrics.nargs.sum
old: 5.0
new: 2.0
path: .spaces[11].metrics.loc.lloc
old: 14.0
new: 4.0
path: .spaces[11].metrics.loc.ploc
old: 28.0
new: 7.0
path: .spaces[11].metrics.loc.sloc
old: 28.0
new: 7.0
path: .spaces[11].metrics.cyclomatic.average
old: 5.0
new: 2.0
path: .spaces[11].metrics.cyclomatic.sum
old: 5.0
new: 2.0
path: .spaces[11].metrics.mi.mi_sei
old: 38.502123294223296
new: 84.91713720325663
path: .spaces[11].metrics.mi.mi_visual_studio
old: 46.08572490576348
new: 65.02383278419083
path: .spaces[11].metrics.mi.mi_original
old: 78.80658958885554
new: 111.19075406096631
path: .spaces[11].metrics.nexits.sum
old: 0.0
new: 2.0
path: .spaces[11].metrics.nexits.average
old: 0.0
new: 2.0
Code
ATTRIBUTE_INTERFACE int strcmp(const char *s1, const char *s2) {
if (!FuzzerInited)
return internal_strcmp(s1, s2);
int result = REAL(strcmp)(s1, s2);
__sanitizer_weak_hook_strcmp(GET_CALLER_PC(), s1, s2, result);
return result;
}