Changes between Version 4 and Version 5 of Ticket #2063


Ignore:
Timestamp:
Nov 15, 2017 11:20:07 AM (6 years ago)
Author:
ming
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #2063

    • Property Summary changed from Add more documentation in PJSIP's parser to prevent stack buffer overflow to Add more documentation throughout PJSIP to prevent stack buffer overflow
  • Ticket #2063 – Description

    v4 v5  
    1 This ticket will add more documentation in the description of the APIs in pjsip's sip_parser.c, in particular the requirement that the buffer must be NULL terminated and the size parameter must not include the NULL terminator. 
     1This ticket will add more documentation in the description of the library's functions, such as the APIs in pjsip's sip_parser, sdp parser, and xml parser. In particular, the doc will clearly state about the requirement that the buffer must be NULL terminated and the size parameter must not include the NULL terminator. 
    22 
    33Also in the ticket: 
    4 - Modify the spec of pjlib-util's scanner. Originally, the spec said that the scanner will add the NULL terminator right AFTER the end of the buffer, however it turns out that the current implementation didn't do that, probably for a good reason, i.e. to avoid buffer overwrite. So, we change the spec instead, to require that the input buffer passed to the scanner needs to be NULL terminated by app. 
     4- Modify the spec of pjlib-util's scanner. Originally, the spec said that the scanner will add the NULL terminator right AFTER the end of the buffer, however it turns out that the current implementation doesn't do that, probably for a few good reasons, i.e. to avoid buffer overwrite, prevent writing to a read-only buffer, and avoid synchronization issue (when more than one thread process the same buffer) . So, we change the spec instead, to require that the input buffer passed to the scanner to be NULL terminated by app. 
     5- There are a few instances in the library where we don't pass NULL terminated buffer to the scanner. This is intentional and should be safe because: 
     6  * The buffer should be part of a bigger, NULL-terminated buffer (for example, when parsing each line in the SDP). 
     7  * We can take advantage of another character as the sentinel (such as newline). 
    58- Add robustness check in sip_multipart to prevent buffer overflow