Skip to content

fix(obfuscation/redis): fuzzer fixes [APMSP-2670]#1694

Open
Eldolfin wants to merge 12 commits intomainfrom
oscarld/obfuscation-redis-fuzzing-fixes
Open

fix(obfuscation/redis): fuzzer fixes [APMSP-2670]#1694
Eldolfin wants to merge 12 commits intomainfrom
oscarld/obfuscation-redis-fuzzing-fixes

Conversation

@Eldolfin
Copy link
Contributor

@Eldolfin Eldolfin commented Mar 9, 2026

What does this PR do?

Ran a fuzzer to find output difference between this obfuscator and the agent's obfuscator, fixed issues one by one, even the nonsensical edge cases.

Motivation

Reach 100% parity between obfuscation libs.

Additional Notes

How to test the change?

Here are the inputs this PR fixes:
redis: \u000bჸ
redis: ჸ\n\tჸ
redis_quantize: \r\n
redis_quantize: \t
redis_quantize:
redis_quantize: 𖺻
redis_quantize: 􎼈ᛓᾜ􏿞ਝ𯊰𻨘񞌘‭􏿞򞙃\u001b೐񞌘񻚝੨򧪀򧧱򧼌򧪊򧪊򈐍񜡉

Eldolfin added 11 commits March 9, 2026 15:41
Go's strings.ToUpper() handles Unicode (e.g. Cherokee small letters
like ꭺ→Ꭺ), while to_ascii_uppercase() only covers ASCII. Switch to
to_uppercase() to match Go's behavior.

Fixes fuzzing testcase: redis_quantize_fuzzing_3286489773
…pace

Go's QuantizeRedisString uses strings.Trim(rawLine, " ") which only strips
ASCII spaces. Rust's .trim() strips all whitespace including tabs. A tab-only
input should be kept as a command ("\t"), not silently dropped.

Fixes fuzzing testcase: redis_quantize_fuzzing_2812552373
…is_string

Go's QuantizeRedisString uses strings.SplitN(line, " ", 3) to split tokens,
which only splits on ASCII spaces. Rust's split_whitespace() splits on all
whitespace including tabs, causing "\t" to yield no tokens and be dropped.

Switch to split(' ').filter(|s| !s.is_empty()) to match Go's behavior.

Fixes fuzzing testcase: redis_quantize_fuzzing_2812552373
Rust uses Unicode 16.0 which added uppercase mappings for U+16E80–U+16EFF
(Bamum Supplement) that Go 1.25 (Unicode 15.0) doesn't have. Extracted a
go_toupper helper that mirrors Go's unicode.ToUpper: uses to_uppercase() for
single-char mappings but leaves the Bamum range unchanged to match Go.
@Eldolfin Eldolfin requested review from a team as code owners March 9, 2026 15:14
@github-actions
Copy link

github-actions bot commented Mar 9, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/oscarld/obfuscation-redis-fuzzing-fixes

Summary by Rule

Rule Base Branch PR Branch Change

Annotation Counts by File

File Base Branch PR Branch Change

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 28 28 No change (0%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 59 59 No change (0%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-crashtracker 0 12 ⚠️ +12 (N/A)
libdd-data-pipeline 5 5 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 1 No change (0%)
libdd-profiling 13 13 No change (0%)
libdd-telemetry 19 19 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 9 9 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 208 220 ⚠️ +12 (+5.8%)

About This Report

This report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality.

@pr-commenter
Copy link

pr-commenter bot commented Mar 9, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-09 16:18:37

Comparing candidate commit e571d6b in PR branch oscarld/obfuscation-redis-fuzzing-fixes with baseline commit 79f879e in branch main.

Found 0 performance improvements and 1 performance regressions! Performance is the same for 56 metrics, 2 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

scenario:sql/obfuscate_sql_string

  • 🟥 execution_time [+3.892µs; +3.953µs] or [+4.554%; +4.626%]

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 89.124µs 89.377µs ± 0.174µs 89.364µs ± 0.077µs 89.438µs 89.566µs 90.203µs 90.798µs 1.61% 3.914 26.204 0.19% 0.012µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [89.353µs; 89.401µs] or [-0.027%; +0.027%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.175µs 3.242µs ± 1.434µs 3.014µs ± 0.026µs 3.042µs 3.696µs 14.189µs 14.752µs 389.41% 7.284 54.461 44.11% 0.101µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [3.044µs; 3.441µs] or [-6.129%; +6.129%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 34.699µs 35.200µs ± 0.820µs 34.842µs ± 0.054µs 34.923µs 36.861µs 36.899µs 39.400µs 13.08% 1.997 3.352 2.32% 0.058µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [35.086µs; 35.313µs] or [-0.323%; +0.323%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 185.355µs 185.795µs ± 0.221µs 185.765µs ± 0.170µs 185.965µs 186.190µs 186.270µs 186.343µs 0.31% 0.305 -0.621 0.12% 0.016µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5366459.414op/s 5382278.508op/s ± 6395.817op/s 5383156.963op/s ± 4917.591op/s 5387131.745op/s 5391537.497op/s 5394314.709op/s 5395040.366op/s 0.22% -0.300 -0.624 0.12% 452.253op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.880µs 17.963µs ± 0.037µs 17.956µs ± 0.022µs 17.984µs 18.028µs 18.093µs 18.179µs 1.24% 1.527 5.462 0.21% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55008424.610op/s 55669434.561op/s ± 115455.900op/s 55691873.284op/s ± 68801.900op/s 55748841.631op/s 55805835.088op/s 55869170.445op/s 55927701.931op/s 0.42% -1.495 5.268 0.21% 8163.965op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.303µs 10.367µs ± 0.046µs 10.355µs ± 0.018µs 10.382µs 10.452µs 10.541µs 10.632µs 2.68% 2.095 6.462 0.45% 0.003µs 1 200
normalization/normalize_name/normalize_name/good throughput 94055410.843op/s 96457914.330op/s ± 427110.445op/s 96575015.012op/s ± 164326.078op/s 96691829.303op/s 96924271.038op/s 96988285.757op/s 97060763.001op/s 0.50% -2.041 6.106 0.44% 30201.269op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [185.765µs; 185.826µs] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5381392.109op/s; 5383164.907op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.958µs; 17.968µs] or [-0.029%; +0.029%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55653433.484op/s; 55685435.639op/s] or [-0.029%; +0.029%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.361µs; 10.374µs] or [-0.062%; +0.062%] None None None
normalization/normalize_name/normalize_name/good throughput [96398720.930op/s; 96517107.730op/s] or [-0.061%; +0.061%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.312µs 2.387µs ± 0.019µs 2.388µs ± 0.004µs 2.392µs 2.411µs 2.418µs 2.419µs 1.28% -2.072 5.535 0.78% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.384µs; 2.389µs] or [-0.109%; +0.109%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 144.712µs 146.902µs ± 1.855µs 146.658µs ± 0.611µs 147.284µs 148.563µs 154.690µs 164.751µs 12.34% 5.881 47.707 1.26% 0.131µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [146.645µs; 147.159µs] or [-0.175%; +0.175%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 188.212ns 190.779ns ± 1.925ns 190.658ns ± 1.605ns 191.938ns 194.421ns 195.767ns 197.690ns 3.69% 0.685 0.207 1.01% 0.136ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [190.512ns; 191.046ns] or [-0.140%; +0.140%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 10.630ms 10.660ms ± 0.014ms 10.659ms ± 0.008ms 10.667ms 10.681ms 10.707ms 10.743ms 0.79% 1.452 6.012 0.13% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [10.658ms; 10.662ms] or [-0.019%; +0.019%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 161.004µs 161.641µs ± 0.388µs 161.559µs ± 0.143µs 161.744µs 162.175µs 162.712µs 165.198µs 2.25% 4.631 35.609 0.24% 0.027µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [161.587µs; 161.695µs] or [-0.033%; +0.033%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.939µs 4.999µs ± 0.039µs 4.976µs ± 0.024µs 5.038µs 5.057µs 5.061µs 5.063µs 1.76% 0.292 -1.532 0.78% 0.003µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [4.994µs; 5.005µs] or [-0.108%; +0.108%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 533.967µs 534.778µs ± 0.618µs 534.732µs ± 0.273µs 534.987µs 535.390µs 535.703µs 541.657µs 1.30% 6.978 74.977 0.12% 0.044µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1846186.192op/s 1869937.933op/s ± 2143.321op/s 1870097.320op/s ± 955.368op/s 1871067.697op/s 1871988.834op/s 1872686.901op/s 1872774.703op/s 0.14% -6.881 73.535 0.11% 151.556op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 380.691µs 381.404µs ± 0.436µs 381.268µs ± 0.256µs 381.659µs 382.225µs 382.550µs 382.707µs 0.38% 0.805 -0.080 0.11% 0.031µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2612964.416op/s 2621896.690op/s ± 2995.979op/s 2622828.334op/s ± 1760.169op/s 2624078.107op/s 2625725.592op/s 2626280.040op/s 2626799.015op/s 0.15% -0.801 -0.089 0.11% 211.848op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 190.094µs 190.447µs ± 0.172µs 190.430µs ± 0.114µs 190.555µs 190.718µs 190.869µs 191.057µs 0.33% 0.431 0.223 0.09% 0.012µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5234026.757op/s 5250803.273op/s ± 4727.069op/s 5251267.424op/s ± 3153.912op/s 5253840.305op/s 5258181.427op/s 5260147.713op/s 5260565.238op/s 0.18% -0.426 0.214 0.09% 334.254op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 37.466µs 37.657µs ± 0.067µs 37.657µs ± 0.046µs 37.700µs 37.770µs 37.798µs 37.841µs 0.49% -0.053 -0.098 0.18% 0.005µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26426088.590op/s 26555568.481op/s ± 47197.139op/s 26555273.617op/s ± 32230.179op/s 26590085.115op/s 26630453.902op/s 26660135.509op/s 26691214.110op/s 0.51% 0.063 -0.093 0.18% 3337.342op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.776µs 45.893µs ± 0.108µs 45.887µs ± 0.035µs 45.918µs 45.963µs 46.025µs 47.250µs 2.97% 9.876 121.376 0.24% 0.008µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21164140.609op/s 21790166.762op/s ± 50296.196op/s 21792461.439op/s ± 16384.567op/s 21812385.013op/s 21830079.344op/s 21844783.363op/s 21845455.538op/s 0.24% -9.694 118.357 0.23% 3556.478op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [534.692µs; 534.863µs] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1869640.889op/s; 1870234.977op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [381.343µs; 381.464µs] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2621481.476op/s; 2622311.904op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.423µs; 190.471µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5250148.147op/s; 5251458.399op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.648µs; 37.666µs] or [-0.025%; +0.025%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26549027.412op/s; 26562109.551op/s] or [-0.025%; +0.025%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.877µs; 45.908µs] or [-0.033%; +0.033%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21783196.193op/s; 21797137.331op/s] or [-0.032%; +0.032%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 716.155µs 717.754µs ± 0.753µs 717.690µs ± 0.385µs 718.151µs 718.669µs 719.130µs 724.345µs 0.93% 3.329 27.832 0.10% 0.053µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [717.650µs; 717.858µs] or [-0.015%; +0.015%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 17.826µs 25.744µs ± 9.320µs 18.215µs ± 0.207µs 34.009µs 41.903µs 43.607µs 63.951µs 251.10% 0.870 0.308 36.11% 0.659µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [24.452µs; 27.036µs] or [-5.017%; +5.017%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 48.176ms 48.472ms ± 1.290ms 48.295ms ± 0.066ms 48.371ms 48.517ms 55.141ms 60.713ms 25.71% 8.415 71.690 2.65% 0.091ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [48.294ms; 48.651ms] or [-0.369%; +0.369%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2597 execution_time 3.261ms 3.289ms ± 0.017ms 3.286ms ± 0.007ms 3.294ms 3.325ms 3.341ms 3.392ms 3.24% 2.220 8.149 0.51% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2597 execution_time [3.287ms; 3.292ms] or [-0.071%; +0.071%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.892µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.914µs 3.918µs 3.920µs 3.925µs 0.32% -0.974 11.010 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 254772854.451op/s 255560098.718op/s ± 198070.473op/s 255582390.373op/s ± 105491.916op/s 255680283.609op/s 255788409.910op/s 255874322.422op/s 256930101.442op/s 0.53% 1.002 11.188 0.08% 14005.697op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.028µs 79.668µs ± 0.404µs 79.590µs ± 0.310µs 79.973µs 80.416µs 80.603µs 80.850µs 1.58% 0.559 -0.467 0.51% 0.029µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12368599.581op/s 12552435.342op/s ± 63514.372op/s 12564378.187op/s ± 48862.920op/s 12606233.152op/s 12637578.155op/s 12649507.380op/s 12653773.476op/s 0.71% -0.540 -0.499 0.50% 4491.144op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 72.415µs 72.925µs ± 0.301µs 72.881µs ± 0.191µs 73.105µs 73.437µs 73.863µs 74.097µs 1.67% 0.987 1.190 0.41% 0.021µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13495815.066op/s 13713039.297op/s ± 56301.527op/s 13721048.145op/s ± 36093.519op/s 13756208.901op/s 13787189.883op/s 13797650.157op/s 13809244.937op/s 0.64% -0.960 1.103 0.41% 3981.119op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.892µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.916µs 3.918µs 3.918µs 0.16% -1.694 12.072 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255210268.399op/s 255620372.690op/s ± 178948.430op/s 255621817.322op/s ± 118665.780op/s 255727422.602op/s 255852932.385op/s 255908073.919op/s 256916594.782op/s 0.51% 1.718 12.272 0.07% 12653.565op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.191µs 69.642µs ± 0.276µs 69.590µs ± 0.174µs 69.817µs 70.165µs 70.377µs 70.897µs 1.88% 1.002 1.601 0.39% 0.019µs 1 200
credit_card/is_card_number/378282246310005 throughput 14105053.459op/s 14359426.269op/s ± 56599.732op/s 14369852.767op/s ± 35965.744op/s 14401392.277op/s 14434082.262op/s 14449344.875op/s 14452684.370op/s 0.58% -0.972 1.475 0.39% 4002.205op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 52.151µs 52.217µs ± 0.032µs 52.212µs ± 0.023µs 52.238µs 52.275µs 52.308µs 52.333µs 0.23% 0.634 0.512 0.06% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19108504.658op/s 19150939.707op/s ± 11880.148op/s 19152578.217op/s ± 8260.422op/s 19159299.899op/s 19168104.083op/s 19171633.427op/s 19175122.196op/s 0.12% -0.630 0.503 0.06% 840.053op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.030µs 6.039µs ± 0.012µs 6.037µs ± 0.003µs 6.040µs 6.063µs 6.077µs 6.152µs 1.89% 5.435 41.925 0.19% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 162556769.788op/s 165581888.323op/s ± 320037.939op/s 165637099.345op/s ± 86930.525op/s 165730614.600op/s 165811096.754op/s 165844435.911op/s 165849944.935op/s 0.13% -5.352 40.725 0.19% 22630.100op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.891µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.914µs 3.917µs 3.919µs 3.920µs 0.18% -1.889 13.600 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255103058.842op/s 255569771.238op/s ± 192082.254op/s 255551562.876op/s ± 117701.725op/s 255693652.407op/s 255821063.487op/s 255883957.027op/s 256998329.863op/s 0.57% 1.917 13.838 0.07% 13582.266op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.135µs 64.455µs ± 0.138µs 64.456µs ± 0.095µs 64.532µs 64.661µs 64.819µs 64.961µs 0.78% 0.511 0.644 0.21% 0.010µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15393862.329op/s 15514728.864op/s ± 33065.378op/s 15514390.898op/s ± 22800.784op/s 15540889.063op/s 15561407.865op/s 15581415.378op/s 15591993.511op/s 0.50% -0.496 0.613 0.21% 2338.075op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 57.857µs 58.307µs ± 0.232µs 58.318µs ± 0.101µs 58.414µs 58.690µs 58.946µs 59.228µs 1.56% 0.585 1.439 0.40% 0.016µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 16883841.997op/s 17150742.895op/s ± 67960.139op/s 17147481.745op/s ± 29557.986op/s 17185532.428op/s 17259231.640op/s 17281689.670op/s 17283924.222op/s 0.80% -0.549 1.349 0.40% 4805.508op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.892µs 3.913µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.917µs 3.919µs 3.919µs 0.17% -1.509 10.850 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255169681.849op/s 255582010.565op/s ± 187042.804op/s 255595092.575op/s ± 116333.679op/s 255699102.582op/s 255819248.610op/s 255887395.605op/s 256905129.439op/s 0.51% 1.532 11.040 0.07% 13225.924op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 54.584µs 54.958µs ± 0.248µs 54.929µs ± 0.167µs 55.079µs 55.442µs 55.613µs 55.830µs 1.64% 0.888 0.465 0.45% 0.018µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17911626.397op/s 18196086.547op/s ± 81679.444op/s 18205225.810op/s ± 55394.393op/s 18263093.051op/s 18296612.610op/s 18310513.147op/s 18320433.031op/s 0.63% -0.865 0.404 0.45% 5775.609op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 52.147µs 52.229µs ± 0.038µs 52.225µs ± 0.026µs 52.252µs 52.303µs 52.338µs 52.369µs 0.27% 0.818 0.963 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19095249.192op/s 19146513.260op/s ± 13951.971op/s 19147744.848op/s ± 9390.264op/s 19156803.802op/s 19165766.109op/s 19169923.675op/s 19176491.539op/s 0.15% -0.813 0.950 0.07% 986.553op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.029µs 6.039µs ± 0.012µs 6.036µs ± 0.003µs 6.039µs 6.072µs 6.083µs 6.103µs 1.11% 3.040 9.235 0.19% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 163859756.617op/s 165589307.409op/s ± 314562.199op/s 165671032.420op/s ± 72326.043op/s 165737953.993op/s 165798162.478op/s 165841789.442op/s 165868107.327op/s 0.12% -3.029 9.152 0.19% 22242.906op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.913µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ throughput [255532648.056op/s; 255587549.381op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.612µs; 79.724µs] or [-0.070%; +0.070%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12543632.861op/s; 12561237.823op/s] or [-0.070%; +0.070%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [72.883µs; 72.966µs] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13705236.447op/s; 13720842.148op/s] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255595572.159op/s; 255645173.221op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [69.604µs; 69.680µs] or [-0.055%; +0.055%] None None None
credit_card/is_card_number/378282246310005 throughput [14351582.090op/s; 14367270.447op/s] or [-0.055%; +0.055%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [52.212µs; 52.221µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19149293.233op/s; 19152586.182op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.038µs; 6.041µs] or [-0.027%; +0.027%] None None None
credit_card/is_card_number/x371413321323331 throughput [165537534.142op/s; 165626242.503op/s] or [-0.027%; +0.027%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.912µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [255543150.485op/s; 255596391.991op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.436µs; 64.474µs] or [-0.030%; +0.030%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15510146.321op/s; 15519311.408op/s] or [-0.030%; +0.030%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [58.275µs; 58.340µs] or [-0.055%; +0.055%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17141324.273op/s; 17160161.516op/s] or [-0.055%; +0.055%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.912µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255556088.231op/s; 255607932.899op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [54.924µs; 54.992µs] or [-0.062%; +0.062%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [18184766.562op/s; 18207406.533op/s] or [-0.062%; +0.062%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [52.224µs; 52.234µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19144579.651op/s; 19148446.869op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.037µs; 6.041µs] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [165545712.113op/s; 165632902.704op/s] or [-0.026%; +0.026%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 239.992ns 249.606ns ± 12.402ns 244.015ns ± 2.766ns 251.600ns 283.499ns 286.833ns 288.072ns 18.05% 1.828 2.274 4.96% 0.877ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [247.887ns; 251.325ns] or [-0.689%; +0.689%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 13.928ms 13.978ms ± 0.029ms 13.973ms ± 0.014ms 13.988ms 14.020ms 14.087ms 14.187ms 1.53% 2.728 13.803 0.21% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [13.974ms; 13.982ms] or [-0.029%; +0.029%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e571d6b 1773072085 oscarld/obfuscation-redis-fuzzing-fixes
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 4.169ms 4.176ms ± 0.008ms 4.175ms ± 0.002ms 4.177ms 4.179ms 4.184ms 4.280ms 2.52% 11.277 144.633 0.19% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [4.174ms; 4.177ms] or [-0.027%; +0.027%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link

codecov-commenter commented Mar 9, 2026

Codecov Report

❌ Patch coverage is 92.30769% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.03%. Comparing base (04394ec) to head (e571d6b).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1694      +/-   ##
==========================================
- Coverage   71.33%   71.03%   -0.30%     
==========================================
  Files         427      427              
  Lines       62960    62973      +13     
==========================================
- Hits        44914    44735     -179     
- Misses      18046    18238     +192     
Components Coverage Δ
libdd-crashtracker 62.45% <ø> (-0.50%) ⬇️
libdd-crashtracker-ffi 17.49% <ø> (+0.92%) ⬆️
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 88.02% <ø> (ø)
libdd-data-pipeline-ffi 75.72% <ø> (ø)
libdd-common 79.73% <ø> (ø)
libdd-common-ffi 73.40% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.35% <ø> (ø)
libdd-profiling 81.60% <ø> (+0.01%) ⬆️
libdd-profiling-ffi 63.65% <ø> (ø)
datadog-sidecar 32.47% <ø> (-2.02%) ⬇️
datdog-sidecar-ffi 7.73% <ø> (-8.82%) ⬇️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 94.74% <92.30%> (+0.04%) ⬆️
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 89.08% <ø> (ø)
datadog-tracer-flare 88.95% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link

github-actions bot commented Mar 9, 2026

📚 Documentation Check Results

⚠️ 520 documentation warning(s) found

📦 libdd-trace-obfuscation - 520 warning(s)


Updated: 2026-03-09 16:03:14 UTC | Commit: d538119 | missing-docs job results

@github-actions
Copy link

github-actions bot commented Mar 9, 2026

🔒 Cargo Deny Results

No issues found!

📦 libdd-trace-obfuscation - ✅ No issues


Updated: 2026-03-09 16:06:40 UTC | Commit: d538119 | dependency-check job results

@dd-octo-sts
Copy link
Contributor

dd-octo-sts bot commented Mar 9, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.70 MB 8.70 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 98.65 MB 98.65 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.29 MB 11.29 MB 0% (0 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 114.30 MB 114.30 MB 0% (0 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.17 MB 27.17 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.03 MB 186.04 MB +0% (+8.00 KB) 👌
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 917.20 MB 917.20 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.93 MB 9.93 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.76 MB 24.76 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.43 MB 51.43 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.97 MB 22.97 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.24 MB 190.24 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 900.85 MB 900.85 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.53 MB 7.53 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.52 MB 26.52 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.07 MB 47.07 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 86.54 MB 86.54 MB 0% (0 B) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.23 MB 10.23 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 107.16 MB 107.16 MB 0% (0 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.98 MB 11.98 MB 0% (0 B) 👌

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to achieve parity between this library’s Redis obfuscation/quantization behavior and the Datadog Agent’s Go implementation, based on fuzzer-discovered edge cases.

Changes:

  • Adjust Redis tokenization whitespace handling to better match Go (notably spaces vs tabs between commands).
  • Update Redis query quantization to match Go’s newline splitting, trimming, and Unicode uppercasing behavior.
  • Tweak Redis obfuscation finalization to avoid emitting an extra trailing newline for whitespace-only trailing tokens; add a couple fuzz-derived tests.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
libdd-trace-obfuscation/src/redis_tokenizer.rs Changes command boundary whitespace handling to treat tabs differently (Go parity).
libdd-trace-obfuscation/src/redis.rs Aligns quantization splitting/trimming/uppercasing with Go behavior; adjusts obfuscation end-of-input handling; adds fuzz regression tests.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Eldolfin Eldolfin changed the title fix(obfuscation): redis parity fixes [APMSP-2670] fix(obfuscation/redis): fuzzer fixes [APMSP-2670] Mar 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants