PJSIP is a free and open source multimedia communication library written in C language implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE. In versions up to and including 2.11.1 when in a dialog set (or forking) scenario, a hash key shared by multiple UAC dialogs can potentially be prematurely freed when one of the dialogs is destroyed . The issue may cause a dialog set to be registered in the hash table multiple times (with different hash keys) leading to undefined behavior such as dialog list collision which eventually leading to endless loop. A patch is available in commit db3235953baa56d2fb0e276ca510fefca751643f which will be included in the next release. There are no known workarounds for this issue.
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory “belongs” to the code that operates on the new pointer.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Pjsip | Teluu | * | 2.11.1 (including) |
Asterisk | Ubuntu | bionic | * |
Asterisk | Ubuntu | focal | * |
Asterisk | Ubuntu | impish | * |
Asterisk | Ubuntu | kinetic | * |
Asterisk | Ubuntu | lunar | * |
Asterisk | Ubuntu | mantic | * |
Asterisk | Ubuntu | oracular | * |
Asterisk | Ubuntu | trusty | * |
Asterisk | Ubuntu | xenial | * |
Pjproject | Ubuntu | bionic | * |
Pjproject | Ubuntu | trusty | * |
Pjproject | Ubuntu | xenial | * |
Ring | Ubuntu | bionic | * |
Ring | Ubuntu | esm-apps/bionic | * |
Ring | Ubuntu | esm-apps/focal | * |
Ring | Ubuntu | focal | * |
Ring | Ubuntu | impish | * |
Ring | Ubuntu | trusty | * |
Ring | Ubuntu | xenial | * |