]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix chan_sip websocket payload handling
authorPedro Kiefer <pedro@kiefer.com.br>
Thu, 29 Nov 2012 17:17:11 +0000 (17:17 +0000)
committerPedro Kiefer <pedro@kiefer.com.br>
Thu, 29 Nov 2012 17:17:11 +0000 (17:17 +0000)
Websocket by default doesn't return an ast_str for the payload received. When
converting it to an ast_str on chan_sip the last character was being omitted,
because ast_str functions expects that the given length includes the trailing
0x00. payload_len only has the actual string length without counting the
trailing zero.

For most cases this passed unnoticed as most of SIP messages ends with \r\n.

(closes issue ASTERISK-20745)
Reported by: IƱaki Baz Castillo
Review: https://reviewboard.asterisk.org/r/2219/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@376822 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index a9d9c86c00e5e5426066c449e5a9e2e22338ca49..ee16ddbecb8ce93db91f54f761414c862966645a 100644 (file)
@@ -2593,7 +2593,7 @@ static void sip_websocket_callback(struct ast_websocket *session, struct ast_var
                if (opcode == AST_WEBSOCKET_OPCODE_TEXT || opcode == AST_WEBSOCKET_OPCODE_BINARY) {
                        struct sip_request req = { 0, };
 
-                       if (!(req.data = ast_str_create(payload_len))) {
+                       if (!(req.data = ast_str_create(payload_len + 1))) {
                                goto end;
                        }