From: Nickolay Shmyrev Date: Thu, 2 Jul 2020 22:19:50 +0000 (+0200) Subject: res_http_websocket: Avoid reading past end of string X-Git-Tag: 18.0.0-rc1~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e4d24f513734fbb2cff49c355b475851b4c701c3;p=thirdparty%2Fasterisk.git res_http_websocket: Avoid reading past end of string We read beyond the end of the buffer when copying the string out of the buffer when we used ast_copy_string() because the original string was not null terminated. Instead switch to ast_strndup() which does not exhibit the same behavior. ASTERISK-28975 #close Change-Id: Ib4a75cffeb1eb8cf01136ef30306bd623e531a2a --- diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c index fdcb0d9a93..ffb6dbc065 100644 --- a/res/res_http_websocket.c +++ b/res/res_http_websocket.c @@ -1473,11 +1473,10 @@ int AST_OPTIONAL_API_NAME(ast_websocket_read_string) } } - if (!(*buf = ast_malloc(payload_len + 1))) { + if (!(*buf = ast_strndup(payload, payload_len))) { return -1; } - ast_copy_string(*buf, payload, payload_len + 1); return payload_len + 1; }