Where
-Infinity
0
Severity
8.7
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

An unauthenticated client can drain the RTSP server's packet pool with a couple of dozen requests

that carry a Session header the parser cannot convert.

The Session branch returns the raw NetX error code instead of an RTSP status code:

c

/ addons/rtsp/nxrtspserver.c:2754 /

status = nxutilitystringtouint(fieldvalueptr, fieldvaluelength, &sessionid);

if (status)

{

return(status); / NXINVALIDPARAMETERS / NXSIZEERROR / NXOVERFLOW /

}

Every other branch of the same function maps its failure to an RTSP status first. The CSeq branch

eighteen lines earlier does exactly that (line 2736 returns NXRTSPSTATUSCODEBADREQUEST). The

raw code then reaches nxrtspservererrorresponsesend (nxrtspserver.c:1234), which does not

recognise it, takes a path that returns without releasing the response packet it already allocated,

and the block never goes back to the pool.

Six requests with an empty Session header against a 22 packet pool:

valid requests: after request 6: pool available = 21, AFTER = 22 / 22

malformed requests: after request 6: pool available = 16, AFTER = 17 / 22

One block per request, not returned when the client disconnects. Twenty six requests take the pool

to zero and the server starts failing allocations, after which it serves nobody. If the pool is

shared with the rest of the application, as it is in the shipped sample, the rest of the stack

stops with it.

Convert the nxutilitystringtouint failure in the Session branch into

NXRTSPSTATUSCODEBADREQUEST the way the CSeq branch does, and release the response packet on

every exit path of nxrtspservererrorresponsesend.

First published (updated )

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203