View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0006669 | unreal | ircd | public | 2026-11-15 01:51 | 2026-11-15 01:51 |
| Reporter | gh0st | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | random |
| Status | new | Resolution | open | ||
| Product Version | 6.2.7.1 | ||||
| Summary | 0006669: [pmlist 3rd-party module] uninitialized 'found' in cmd_closepm(), plus minor issues (noticetarget, TAGMSG, unbounded list) | ||||
| Description | Third-party module: pmlist v2.1.2 by Gottem (third/pmlist). Filing here since there is no separate tracker category; please pass on to the module author. 1. Uninitialized variable: cmd_closepm() declares 'int found;' and reads it before it is ever assigned when nothing matches, so whether the user gets the "No matches" reply is random (undefined behavior in C). The same uninitialized declaration appears a second time in the file. Fix: 'int found = 0;' in both places. Minor issues: 2. With 'noticetarget 1', the text of the blocked message is still shown to the +P user inside the server notice, i.e. it leaks the content it is meant to block. 3. TAGMSG isn't filtered, so typing indicators / reactions (+typing, +draft/react) from non-whitelisted users still reach the +P user. 4. The auto-added whitelist grows without limit until the next PMLIST/OPENPM/CLOSEPM, so a +P user who messages many people slowly grows memory use. | ||||
| Steps To Reproduce | 1. Load third/pmlist. As a +P user with an empty whitelist, run CLOSEPM somenick (a nick that isn't on the list). The 'No matches' reply sometimes appears and sometimes doesn't (depends on stack contents; visible under valgrind/MSan as a read of uninitialized memory). 2. With noticetarget 1: a non-whitelisted user PMs the +P user; the notice the +P user gets contains the blocked text. 3. A non-whitelisted user sends TAGMSG with +typing to the +P user; it is delivered. | ||||
| Additional Information | Suggested fixes: initialize found to 0 (both declarations); drop the message text from the noticetarget notice (just say who tried to PM); apply the same +P check to TAGMSG; cap the auto-added list (e.g. drop the oldest entry past a configurable limit). Reported by gh0st ([email protected]). | ||||
| 3rd party modules | pmlist v2.1.2 (Gottem) | ||||
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-11-15 01:51 | gh0st | New Issue |