|
1 | 1 | extern void __VERIFIER_error() __attribute__ ((__noreturn__));
|
| 2 | + |
| 3 | +extern void abort (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); |
| 4 | +void memcpy_guard(void* p1, void* p2, unsigned long int n) |
| 5 | +{ |
| 6 | + if ((char*)p1 + n <= (char*)p2 || (char*)p2 + n <= (char*)p1) |
| 7 | + return; |
| 8 | + abort(); |
| 9 | +} |
| 10 | + |
2 | 11 | /* Generated by CIL v. 1.5.1 */
|
3 | 12 | /* print_CIL_Input is false */
|
4 | 13 |
|
@@ -4595,6 +4604,7 @@ static int digi_write_oob_command(struct usb_serial_port *port , unsigned char *
|
4595 | 4604 | } else {
|
4596 | 4605 |
|
4597 | 4606 | }
|
| 4607 | + memcpy_guard((oob_port->write_urb)->transfer_buffer, (void const *)buf, (size_t )len); |
4598 | 4608 | memcpy((oob_port->write_urb)->transfer_buffer, (void const *)buf, (size_t )len);
|
4599 | 4609 | (oob_port->write_urb)->transfer_buffer_length = (u32 )len;
|
4600 | 4610 | ret = ldv_usb_submit_urb_28(oob_port->write_urb, 32U);
|
@@ -4693,11 +4703,15 @@ static int digi_write_inb_command(struct usb_serial_port *port , unsigned char *
|
4693 | 4703 | if (priv->dp_out_buf_len > 0) {
|
4694 | 4704 | *data = 18U;
|
4695 | 4705 | *(data + 1UL) = (unsigned char )priv->dp_out_buf_len;
|
| 4706 | + memcpy_guard((void *)data + 2U, (void const *)(& priv->dp_out_buf), (size_t )priv->dp_out_buf_len); |
4696 | 4707 | memcpy((void *)data + 2U, (void const *)(& priv->dp_out_buf), (size_t )priv->dp_out_buf_len);
|
| 4708 | + memcpy_guard((void *)(data + ((unsigned long )priv->dp_out_buf_len + 2UL)), (void const *)buf, |
| 4709 | + (size_t )len); |
4697 | 4710 | memcpy((void *)(data + ((unsigned long )priv->dp_out_buf_len + 2UL)), (void const *)buf,
|
4698 | 4711 | (size_t )len);
|
4699 | 4712 | (port->write_urb)->transfer_buffer_length = (u32 )((priv->dp_out_buf_len + 2) + len);
|
4700 | 4713 | } else {
|
| 4714 | + memcpy_guard((void *)data, (void const *)buf, (size_t )len); |
4701 | 4715 | memcpy((void *)data, (void const *)buf, (size_t )len);
|
4702 | 4716 | (port->write_urb)->transfer_buffer_length = (u32 )len;
|
4703 | 4717 | }
|
@@ -5443,8 +5457,10 @@ static int digi_write(struct tty_struct *tty , struct usb_serial_port *port , un
|
5443 | 5457 | tmp___4 = data;
|
5444 | 5458 | data = data + 1;
|
5445 | 5459 | *tmp___4 = (unsigned char )data_len;
|
| 5460 | + memcpy_guard((void *)data, (void const *)(& priv->dp_out_buf), (size_t )priv->dp_out_buf_len); |
5446 | 5461 | memcpy((void *)data, (void const *)(& priv->dp_out_buf), (size_t )priv->dp_out_buf_len);
|
5447 | 5462 | data = data + (unsigned long )priv->dp_out_buf_len;
|
| 5463 | + memcpy_guard((void *)data, (void const *)buf, (size_t )new_len); |
5448 | 5464 | memcpy((void *)data, (void const *)buf, (size_t )new_len);
|
5449 | 5465 | ret = ldv_usb_submit_urb_32(port->write_urb, 32U);
|
5450 | 5466 | if (ret == 0) {
|
@@ -5560,6 +5576,8 @@ static void digi_write_bulk_callback(struct urb *urb )
|
5560 | 5576 | *((unsigned char *)(port->write_urb)->transfer_buffer) = 18U;
|
5561 | 5577 | *((unsigned char *)(port->write_urb)->transfer_buffer + 1UL) = (unsigned char )priv->dp_out_buf_len;
|
5562 | 5578 | (port->write_urb)->transfer_buffer_length = (u32 )(priv->dp_out_buf_len + 2);
|
| 5579 | + memcpy_guard((port->write_urb)->transfer_buffer + 2UL, (void const *)(& priv->dp_out_buf), |
| 5580 | + (size_t )priv->dp_out_buf_len); |
5563 | 5581 | memcpy((port->write_urb)->transfer_buffer + 2UL, (void const *)(& priv->dp_out_buf),
|
5564 | 5582 | (size_t )priv->dp_out_buf_len);
|
5565 | 5583 | ret = ldv_usb_submit_urb_33(port->write_urb, 32U);
|
|
0 commit comments