summary refs log tree commit diff
path: root/pkgs/os-specific/linux/usbip
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2019-11-03 01:22:41 +0100
committerFranz Pletz <fpletz@fnordicwalking.de>2019-11-03 01:24:46 +0100
commit682de1908fa2c38901906eb246fa1813172b3da9 (patch)
tree29e9324d82db9f7fe95b9dd0445258bede2330fc /pkgs/os-specific/linux/usbip
parent8b9b91ccbbc29cc73cdedca8f126b2016f0f9658 (diff)
downloadnixpkgs-682de1908fa2c38901906eb246fa1813172b3da9.tar
nixpkgs-682de1908fa2c38901906eb246fa1813172b3da9.tar.gz
nixpkgs-682de1908fa2c38901906eb246fa1813172b3da9.tar.bz2
nixpkgs-682de1908fa2c38901906eb246fa1813172b3da9.tar.lz
nixpkgs-682de1908fa2c38901906eb246fa1813172b3da9.tar.xz
nixpkgs-682de1908fa2c38901906eb246fa1813172b3da9.tar.zst
nixpkgs-682de1908fa2c38901906eb246fa1813172b3da9.zip
linuxPackages.usbip: fix build with gcc9
Diffstat (limited to 'pkgs/os-specific/linux/usbip')
-rw-r--r--pkgs/os-specific/linux/usbip/default.nix4
-rw-r--r--pkgs/os-specific/linux/usbip/fix-strncpy-truncation.patch37
2 files changed, 41 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/usbip/default.nix b/pkgs/os-specific/linux/usbip/default.nix
index 61f2c454046..f927b4ffc78 100644
--- a/pkgs/os-specific/linux/usbip/default.nix
+++ b/pkgs/os-specific/linux/usbip/default.nix
@@ -8,11 +8,15 @@ stdenv.mkDerivation {
   patches = [
     # fixes build with gcc8
     ./fix-snprintf-truncation.patch
+    # fixes build with gcc9
+    ./fix-strncpy-truncation.patch
   ];
 
   nativeBuildInputs = [ autoconf automake libtool ];
   buildInputs = [ udev ];
 
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=address-of-packed-member" ];
+
   preConfigure = ''
     cd tools/usb/usbip
     ./autogen.sh
diff --git a/pkgs/os-specific/linux/usbip/fix-strncpy-truncation.patch b/pkgs/os-specific/linux/usbip/fix-strncpy-truncation.patch
new file mode 100644
index 00000000000..a5c4c97bbc0
--- /dev/null
+++ b/pkgs/os-specific/linux/usbip/fix-strncpy-truncation.patch
@@ -0,0 +1,37 @@
+diff --git a/tools/usb/usbip/libsrc/usbip_common.c b/tools/usb/usbip/libsrc/usbip_common.c
+index bb424638d75b..2fc5837e609a 100644
+--- a/tools/usb/usbip/libsrc/usbip_common.c
++++ b/tools/usb/usbip/libsrc/usbip_common.c
+@@ -226,8 +226,8 @@ int read_usb_device(struct udev_device *sdev, struct usbip_usb_device *udev)
+ 	path = udev_device_get_syspath(sdev);
+ 	name = udev_device_get_sysname(sdev);
+ 
+-	strncpy(udev->path,  path,  SYSFS_PATH_MAX);
+-	strncpy(udev->busid, name, SYSFS_BUS_ID_SIZE);
++	strncpy(udev->path,  path,  SYSFS_PATH_MAX-1);
++	strncpy(udev->busid, name, SYSFS_BUS_ID_SIZE-1);
+ 
+ 	sscanf(name, "%u-%u", &busnum, &devnum);
+ 	udev->busnum = busnum;
+diff --git a/tools/usb/usbip/libsrc/usbip_device_driver.c b/tools/usb/usbip/libsrc/usbip_device_driver.c
+index 5a3726eb44ab..95b416af8b99 100644
+--- a/tools/usb/usbip/libsrc/usbip_device_driver.c
++++ b/tools/usb/usbip/libsrc/usbip_device_driver.c
+@@ -91,7 +91,7 @@ int read_usb_vudc_device(struct udev_device *sdev, struct usbip_usb_device *dev)
+ 	copy_descr_attr16(dev, &descr, idProduct);
+ 	copy_descr_attr16(dev, &descr, bcdDevice);
+ 
+-	strncpy(dev->path, path, SYSFS_PATH_MAX);
++	strncpy(dev->path, path, SYSFS_PATH_MAX-1);
+ 
+ 	dev->speed = USB_SPEED_UNKNOWN;
+ 	speed = udev_device_get_sysattr_value(sdev, "current_speed");
+@@ -110,7 +110,7 @@ int read_usb_vudc_device(struct udev_device *sdev, struct usbip_usb_device *dev)
+ 	dev->busnum = 0;
+ 
+ 	name = udev_device_get_sysname(plat);
+-	strncpy(dev->busid, name, SYSFS_BUS_ID_SIZE);
++	strncpy(dev->busid, name, SYSFS_BUS_ID_SIZE-1);
+ 	return 0;
+ err:
+ 	fclose(fd);