mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-03 12:25:35 +00:00
AMI: Fix improper handling of lines that are exactly 1025 bytes long.
When AMI receives a line that is 1025 bytes long, it sends two error messages. Copy the last byte in the buffer to the first postiion, set the length to 1. ASTERISK-20524 #close Reported by: David M. Lee Change-Id: Ifda403e2713b59582c715229814fd64a0733c5ea
This commit is contained in:
@@ -6231,9 +6231,11 @@ static int get_input(struct mansession *s, char *output)
|
||||
return 1;
|
||||
}
|
||||
if (s->session->inlen >= maxlen) {
|
||||
/* no crlf found, and buffer full - sorry, too long for us */
|
||||
/* no crlf found, and buffer full - sorry, too long for us
|
||||
* keep the last character in case we are in the middle of a CRLF. */
|
||||
ast_log(LOG_WARNING, "Discarding message from %s. Line too long: %.25s...\n", ast_sockaddr_stringify_addr(&s->session->addr), src);
|
||||
s->session->inlen = 0;
|
||||
src[0] = src[s->session->inlen - 1];
|
||||
s->session->inlen = 1;
|
||||
s->parsing = MESSAGE_LINE_TOO_LONG;
|
||||
}
|
||||
res = 0;
|
||||
|
||||
Reference in New Issue
Block a user