Skip to content
This repository was archived by the owner on Oct 3, 2021. It is now read-only.

Commit 786a943

Browse files
committed
Fixing c/ldv-linux-4.2-rc1/linux-4.2-rc1.tar.xz-43_2a-drivers--usb--serial--digi_acceleport.ko-entry_point_true-unreach-call.cil.out.c
1 parent 8fad5c3 commit 786a943

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

c/ldv-linux-4.2-rc1/linux-4.2-rc1.tar.xz-43_2a-drivers--usb--serial--digi_acceleport.ko-entry_point_true-unreach-call.cil.out.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
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+
211
/* Generated by CIL v. 1.5.1 */
312
/* print_CIL_Input is false */
413

@@ -4595,6 +4604,7 @@ static int digi_write_oob_command(struct usb_serial_port *port , unsigned char *
45954604
} else {
45964605

45974606
}
4607+
memcpy_guard((oob_port->write_urb)->transfer_buffer, (void const *)buf, (size_t )len);
45984608
memcpy((oob_port->write_urb)->transfer_buffer, (void const *)buf, (size_t )len);
45994609
(oob_port->write_urb)->transfer_buffer_length = (u32 )len;
46004610
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 *
46934703
if (priv->dp_out_buf_len > 0) {
46944704
*data = 18U;
46954705
*(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);
46964707
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);
46974710
memcpy((void *)(data + ((unsigned long )priv->dp_out_buf_len + 2UL)), (void const *)buf,
46984711
(size_t )len);
46994712
(port->write_urb)->transfer_buffer_length = (u32 )((priv->dp_out_buf_len + 2) + len);
47004713
} else {
4714+
memcpy_guard((void *)data, (void const *)buf, (size_t )len);
47014715
memcpy((void *)data, (void const *)buf, (size_t )len);
47024716
(port->write_urb)->transfer_buffer_length = (u32 )len;
47034717
}
@@ -5443,8 +5457,10 @@ static int digi_write(struct tty_struct *tty , struct usb_serial_port *port , un
54435457
tmp___4 = data;
54445458
data = data + 1;
54455459
*tmp___4 = (unsigned char )data_len;
5460+
memcpy_guard((void *)data, (void const *)(& priv->dp_out_buf), (size_t )priv->dp_out_buf_len);
54465461
memcpy((void *)data, (void const *)(& priv->dp_out_buf), (size_t )priv->dp_out_buf_len);
54475462
data = data + (unsigned long )priv->dp_out_buf_len;
5463+
memcpy_guard((void *)data, (void const *)buf, (size_t )new_len);
54485464
memcpy((void *)data, (void const *)buf, (size_t )new_len);
54495465
ret = ldv_usb_submit_urb_32(port->write_urb, 32U);
54505466
if (ret == 0) {
@@ -5560,6 +5576,8 @@ static void digi_write_bulk_callback(struct urb *urb )
55605576
*((unsigned char *)(port->write_urb)->transfer_buffer) = 18U;
55615577
*((unsigned char *)(port->write_urb)->transfer_buffer + 1UL) = (unsigned char )priv->dp_out_buf_len;
55625578
(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);
55635581
memcpy((port->write_urb)->transfer_buffer + 2UL, (void const *)(& priv->dp_out_buf),
55645582
(size_t )priv->dp_out_buf_len);
55655583
ret = ldv_usb_submit_urb_33(port->write_urb, 32U);

0 commit comments

Comments
 (0)