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;
}