char: serial: check divider value against baud base
16550A UART device uses an oscillator to generate frequencies (baud base), which decide communication speed. This speed could be changed by dividing it by a divider. If the divider is greater than the baud base, speed is set to zero, leading to a divide by zero error. Add check to avoid it. Reported-by: Huawei PSIRT <psirt@huawei.com> Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> Message-Id: <1476251888-20238-1-git-send-email-ppandit@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
0a752eeea8
commit
3592fe0c91
@ -153,8 +153,9 @@ static void serial_update_parameters(SerialState *s)
|
|||||||
int speed, parity, data_bits, stop_bits, frame_size;
|
int speed, parity, data_bits, stop_bits, frame_size;
|
||||||
QEMUSerialSetParams ssp;
|
QEMUSerialSetParams ssp;
|
||||||
|
|
||||||
if (s->divider == 0)
|
if (s->divider == 0 || s->divider > s->baudbase) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Start bit. */
|
/* Start bit. */
|
||||||
frame_size = 1;
|
frame_size = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user