CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android. Buffer Overflow Vulnerability reported by #plzdonthackme, Soctt.

CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android.
Buffer Overflow Vulnerability reported by #plzdonthackme, Soctt.

struct ioctl_smd_write_arg_type {
        char                *buf;
        unsigned int        size;
};
#define GSERIAL_BUF_LEN  256
char smd_write_buf[GSERIAL_BUF_LEN];
struct ioctl_smd_write_arg_type smd_write_arg;
...
case GSERIAL_SMD_WRITE:
   if (copy_from_user(&smd_write_arg, argp,
       sizeof(smd_write_arg))) {
   ...
   //Patch
   //if (smd_write_arg.size > GSERIAL_BUF_LEN )
   //    pr_err("%s: dont trigger the BoD vuln.", __func__);

   if (copy_from_user(smd_write_buf, smd_write_arg.buf,
        smd_write_arg.size)) // Bof vuln.
时间: 2024-10-11 05:32:07

CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android. Buffer Overflow Vulnerability reported by #plzdonthackme, Soctt.的相关文章

Linux USB gadget 网络体验

平台:Mini2440 系统:linux-2.6.32.2 主机:Windows 配置USB gadget功能中的usbnet时,主要工作是加载g_ether.ko模块,但是试了好几次插到电脑上,都是没反应,windows识别不到设备,查 阅资料后才知道是USB接口的上拉问题,mini2440通过GPC5来上拉USB接口,只有这样主机才能识别到设备并提示安装设备.整合了资料后解决了 问题,步骤: 打开mach-mini2440.c添加代码: [html] view plaincopy stati

USB Gadget API for Linux

USB Gadget API for Linux Author: David Brownell Date: 20 August 2004 Introduction This document presents a Linux-USB “Gadget” kernel mode API, for use within peripherals and other USB devices that embed Linux. It provides an overview of the API struc

Linux usb gadget configfs用法

Linux 3.0新的USB gadget configfs.c驱动的用法如下所示: 挂载configfs文件系统: # mount -t configfs none /sys/kernel/config # cd /sys/kernel/config # ls usb_gadget # cd usb_gadget 创建g1目录,实例化一个新的gadget模板: # mkdir g1 # cd g1 # ls UDC  bDeviceProtocol    bMaxPacketSize0    

andriod usb gadget

usb gadget composite:        echo 0 > /sys/class/android_usb/android0/enable        echo mass_storage > /sys/class/android_usb/android0/functions  也可以 echo "mass_storage,rndis_qc,ffs" > /sys/class/android_usb/android0/functions        e

Linux usb gadget框架概述

很幸运,在公司开发了gadget相关驱动,总结下来,大大小小开发了四个与gadget相关的驱动,字符驱动.g_multi.g_ether.g_zero,在这里把自己对gadget的开发中自己的感悟记录之. 想要了解gadget,必须了解其框架,知道composite.gadget.udc三者之间的联系,知道usb描述符的作用. 一个usb device有一个设备描述符. 有一个或者多个配置描述符 一个配置描述符有一个或者多个接口(在gadget端,接口正式命名是usb_func). 一个接口有一

USB gadget 驱动 printer.c 分析

1. modprobe g_printer idVendor=0x0525 idProduct=0xa4a8 modprobe后面也可以加模块参数 2. prn_example从stdout获取数据然后通过USB发送出去,下面让他将文件中的内容发送出去: # cat data_file | prn_example -write_data 3.pdev = device_create(usb_gadget_class, NULL, devt, NULL, "g_printer%d", d

Linux USB 驱动开发实例(一) —— USB摄像头驱动实现源码分析

Spac5xx的实现是按照标准的USB VIDEO设备的驱动框架编写(其具体的驱动框架可参照/usr/src/linux/drivers/usb/usbvideo.c文件),整个源程序由四个主体部分组成: 设备模块的初始化模块和卸载模块,上层软件接口模块,数据传输模块. 具体的模块分析如下:  一.初始化设备模块 该驱动采用了显式的模块初始化和消除函数,即调用module_init来初始化一个模块,并在卸载时调用moduel-exit函数 其具体实现如下: 1.模块初始化: [cpp] view

Linux USB 驱动开发(三)—— 编写USB 驱动程序

前面学习了USB驱动的一些基础概念与重要的数据结构,那么究竟如何编写一个USB 驱动程序呢?编写与一个USB设备驱动程序的方法和其他总线驱动方式类似,驱动程序把驱动程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件.当然,这些制造商和设备标识需要我们编写进USB 驱动程序中. USB 驱动程序依然遵循设备模型 -- 总线.设备.驱动.和I2C 总线设备驱动编写一样,所有的USB驱动程序都必须创建的主要结构体是 struct usb_driver,它们向USB 核心代码描

Linux USB 驱动开发实例(二)—— USB 鼠标驱动注解及测试

参考2.6.14版本中的driver/usb/input/usbmouse.c.鼠标驱动可分为几个部分:驱动加载部分.probe部分.open部分.urb回调函数处理部分. 一.驱动加载部分 [cpp] view plain copy static int __init usb_mouse_init(void) { int retval = usb_register(&usb_mouse_driver);//注册鼠标驱动 if (retval == 0) info(DRIVER_VERSION