<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git, branch claude/adoring-pasteur-kbaFa</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/?h=claude%2Fadoring-pasteur-kbaFa</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/?h=claude%2Fadoring-pasteur-kbaFa'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-06-12T09:59:01Z</updated>
<entry>
<title>midi: document that midi2_ump_word_count() must never return 0</title>
<updated>2026-06-12T09:59:01Z</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-06-12T09:59:01Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=c09278987ad49ce8d2a4cb345659a6d5ea10903d'/>
<id>urn:sha1:c09278987ad49ce8d2a4cb345659a6d5ea10903d</id>
<content type='text'>
The midi2_device/midi2_host tx packing loops advance by this count and
no longer carry an explicit == 0 guard (removed in a749fe0).
</content>
</entry>
<entry>
<title>midi2: drop unreachable pkt_bytes==0 guard in tx packing loops</title>
<updated>2026-06-12T09:57:23Z</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-06-12T09:57:23Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a749fe06e174a66d441e91ff1977c41e419cd09a'/>
<id>urn:sha1:a749fe06e174a66d441e91ff1977c41e419cd09a</id>
<content type='text'>
midi2_ump_word_count() is total over the 4-bit message type (every case
returns 1..4 words) and callers mask mt with 0x0F, so pkt_bytes can never
be 0. Remove the dead break (flagged by PVS V547) instead of suppressing.

Verified: pico examples rebuild, ceedling test:all 60/60 (incl.
test_midi2_device/test_midi2_host), PVS re-run on both TUs is clean.
</content>
</entry>
<entry>
<title>bare_api: cast config-descriptor buffer via uintptr_t instead of suppressing V641</title>
<updated>2026-06-12T09:15:43Z</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-06-12T09:15:43Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=881abf881c964108e6329326aa32c677c7f7291b'/>
<id>urn:sha1:881abf881c964108e6329326aa32c677c7f7291b</id>
<content type='text'>
temp_buf is a uint16_t[128] reused to hold the GET_DESCRIPTOR(Configuration)
wire-format blob; casting it to tusb_desc_configuration_t* to read the 9-byte
header tripped PVS V641 (buffer size not a multiple of the element size).
Route the cast through uintptr_t so the (correct) header read no longer trips
the size-ratio heuristic, dropping the inline //-V641 suppression.

Verified: pico examples rebuild; single-TU PVS re-run on bare_api/main.c is
clean (no V641, no MISRA pointer/integer-cast finding).
</content>
</entry>
<entry>
<title>usbd: use _usbd_rhport directly instead of rewriting the rhport parameter</title>
<updated>2026-06-12T02:46:03Z</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-06-12T02:46:03Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=cf2f60526c2d38078e0e638f513fad85a801d379'/>
<id>urn:sha1:cf2f60526c2d38078e0e638f513fad85a801d379</id>
<content type='text'>
Replace the `rhport = _usbd_rhport;` parameter-rewrite pattern in the
9 usbd_edpt_*/usbd_sof_enable functions with `(void) rhport;` and pass
_usbd_rhport directly to the dcd_* calls, matching the existing style of
usbd_edpt_claim/release/busy/stalled. This resolves PVS-Studio V763
(parameter always rewritten before use) properly, so drop the global
//-V::763 suppression from .pvsconfig.

Verified: pico examples rebuild, ceedling test:all 60/60, CI-exact PVS
re-run reports zero TinyUSB-owned findings with the suppression removed.
</content>
</entry>
<entry>
<title>clean up PVS-Studio static-analysis findings for raspberry_pi_pico</title>
<updated>2026-06-11T23:34:30Z</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-06-11T23:34:30Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=72f4d52aafaf582a29428863a72c454a9ae5e916'/>
<id>urn:sha1:72f4d52aafaf582a29428863a72c454a9ae5e916</id>
<content type='text'>
Resolves all TinyUSB-owned alerts reported by the CI PVS-Studio job
(static_analysis.yml, run with --security-related-issues) on the
raspberry_pi_pico board: 0 remaining in src/ and examples/.

Genuine fixes:
- ncm_device: validate wNdpIndex against sizeof(nth16_t), not the pointer
  size sizeof(nth16) (4 bytes) — the latter under-checks the NTB header
  (V568).
- tusb: drop the redundant `ff_buf != NULL &amp;&amp; ff_bufsize &gt; 0` guard in
  tu_edpt_stream_init(); the early return already guarantees it (V560).
- midi_host: bounds-check idx in tuh_midi_itf_get_info() instead of the
  always-true `&amp;_midi_host[idx]` pointer (V560).
- examples: fully initialize resolutions_per_format / frame_num /
  interval_ms arrays instead of leaving trailing elements implicitly zero
  (V1009).

False positives suppressed at the cause:
- usbd/usbh: hide the weak dcd_deinit()/hcd_deinit() stubs from the
  analyzer with #ifndef PVS_STUDIO. PVS analyzes one TU at a time and
  binds the call to the always-false weak stub (it cannot model the
  linker selecting the port's strong definition), then reports the
  cleanup loop after TU_ASSERT(...deinit()) as unreachable (V779).

False positives suppressed locally (inline //-V or .pvsconfig):
- .pvsconfig: V501 (HID descriptor macros), V763 (rhport override),
  V785 (audio function-index switch), V1044 (hardware poll loops).
- inline //-V for config-dependent or intentional constructs: V512,
  V514-style contiguous clears, V547, V557, V560, V614, V619, V641,
  V1008, V1037, V1048, V1086.

Verified: all examples build for raspberry_pi_pico; ceedling test:all
passes (60/60); re-run of the CI-exact PVS invocation reports zero
TinyUSB-owned findings.
</content>
</entry>
<entry>
<title>Merge pull request #3695 from hathach/claude/adoring-pasteur-kbaFa</title>
<updated>2026-06-11T16:19:17Z</updated>
<author>
<name>Ha Thach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-06-11T16:19:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=5014146fef1aac07362ee35c0c361b8475f7636d'/>
<id>urn:sha1:5014146fef1aac07362ee35c0c361b8475f7636d</id>
<content type='text'>
Add pvs skill to run PVS-Studio analysis for a board</content>
</entry>
<entry>
<title>pvs skill: harden credentials parsing; note compile DB is exported by default</title>
<updated>2026-06-11T14:56:16Z</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-06-11T14:56:16Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=dd31ba4530f1904b0d2d83fa6b008502354fb400'/>
<id>urn:sha1:dd31ba4530f1904b0d2d83fa6b008502354fb400</id>
<content type='text'>
- Parse PVS_STUDIO_CREDENTIALS into two quoted fields (no glob/word-split).
- AGENTS.md: examples build sets CMAKE_EXPORT_COMPILE_COMMANDS ON already.

Addresses Copilot review on #3695.
</content>
</entry>
<entry>
<title>pvs skill: mirror CI --security-related-issues flag and ignore SARIF output</title>
<updated>2026-06-11T14:53:24Z</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-06-11T14:53:24Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=65b2aeb6a92a4681ec495a4d89565862dfaa55cf'/>
<id>urn:sha1:65b2aeb6a92a4681ec495a4d89565862dfaa55cf</id>
<content type='text'>
- Add --security-related-issues to run_pvs.sh and AGENTS.md analyze commands
  so local runs reproduce the CI SAST classification (static_analysis.yml).
- Ignore *.sarif so a successful run leaves the worktree clean.

Addresses Codex review on #3695.
</content>
</entry>
<entry>
<title>Merge pull request #3693 from hathach/claude/review-model-opus</title>
<updated>2026-06-11T14:18:10Z</updated>
<author>
<name>Ha Thach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-06-11T14:18:10Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=848216a6a278f98ba5b977219adac5eabb07e0c4'/>
<id>urn:sha1:848216a6a278f98ba5b977219adac5eabb07e0c4</id>
<content type='text'>
ci(claude-review): run auto review on Opus (claude-opus-4-8)</content>
</entry>
<entry>
<title>ci(claude-review): run auto review on Opus (claude-opus-4-8)</title>
<updated>2026-06-11T14:13:32Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-06-11T14:13:32Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=b643e8108570b3a8d10dc446ca36954b90ac497a'/>
<id>urn:sha1:b643e8108570b3a8d10dc446ca36954b90ac497a</id>
<content type='text'>
The review action currently runs on the default Sonnet 4.6. On PR #3643
(musb EP0 race) it posted "No issues found" while an Opus pass on the
same diff surfaced substantive questions (ISR-boundary RXRDY lifetime,
regression scope of the DATA-state split). Pin the reviewer to
claude-opus-4-8 for higher-signal reviews; subagents keep their cheaper
default models.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
