!1 init package

Merge pull request !1 from openeuler-basic/local
This commit is contained in:
openeuler-ci-bot 2019-12-31 18:42:52 +08:00 committed by Gitee
commit 3c36cf92ad
4 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,51 @@
From a9e8373030b39aadfc33af67443085df83e9e344 Mon Sep 17 00:00:00 2001
From: Daniel Berrange <berrange@redhat.com>
Date: Wed, 14 Aug 2013 16:00:56 +0200
Subject: [libusb-compat PATCH] Link with -znodelete to disallow unloading
Since libusb-0.1 did not have any init / exit function, code using the
libusb-0.1 API will not call libusb_exit.
Now, libgphoto uses libusb and will dlopen() and dlclose() it. Unfortunately
since there is no way to ensure libusb_close() is called, when libgphoto
dlcloses the libusb.so library, the thread from libusbx.so will not be
stopped. So a thread will remain running, executing code from a memory
region that has now been freed. Crash-tastic results ensue.
I don't see a good way to fix this from libusb or libusbx, given the need to
preserve the existing API of libusb.
If, however, we link libusb.so using -znodelete, we will prevent it from
ever being unloaded, despite the dlclose() calls. This is not ideal, but
better than allowing it to be unloaded which is a guaranteed crash.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
libusb/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libusb/Makefile.am b/libusb/Makefile.am
index 33a609a..a20fdb5 100644
--- a/libusb/Makefile.am
+++ b/libusb/Makefile.am
@@ -5,5 +5,5 @@ libusb_la_SOURCES = core.c usbi.h
libusb_la_CFLAGS = -fvisibility=hidden $(AM_CFLAGS) $(LIBUSB_1_0_CFLAGS)
libusb_la_LIBADD = $(LIBUSB_1_0_LIBS)
libusb_la_LDFLAGS = -version-info $(LT_MAJOR):$(LT_REVISION):$(LT_AGE) \
- -release 0.1
+ -release 0.1 -Wl,-z -Wl,nodelete
--- libusb-compat-0.1.5.orig/libusb/Makefile.in 2013-05-21 00:40:35.000000000 +0100
+++ libusb-compat-0.1.5.orig/libusb/Makefile.in 2013-08-13 22:20:32.831532426 +0100
@@ -297,7 +297,7 @@ libusb_la_SOURCES = core.c usbi.h
libusb_la_CFLAGS = -fvisibility=hidden $(AM_CFLAGS) $(LIBUSB_1_0_CFLAGS)
libusb_la_LIBADD = $(LIBUSB_1_0_LIBS)
libusb_la_LDFLAGS = -version-info $(LT_MAJOR):$(LT_REVISION):$(LT_AGE) \
- -release 0.1
+ -release 0.1 -Wl,-z -Wl,nodelete
all: all-am
--
1.8.3.1

View File

@ -0,0 +1,55 @@
From eb590b4dac00a5188b93e1d6ebdd60b06f9ab3d7 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Thu, 13 Feb 2014 17:25:27 +0100
Subject: [libusb-compat PATCH 2/2] Revert "use atexit() to call libusb_exit()"
The use of atexit() breaks various users of libusb-compat,
see ie: https://bugzilla.redhat.com/show_bug.cgi?id=1003193
This reverts commit 0be16b8dd25733d242ae32b57823a9513ec21353.
Closes libusbx/libusb-compat-0.1#2
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
libusb/core.c | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/libusb/core.c b/libusb/core.c
index c0ccb1f..2dd1b5f 100644
--- a/libusb/core.c
+++ b/libusb/core.c
@@ -21,7 +21,6 @@
#include <config.h>
#include <errno.h>
#include <stdarg.h>
-#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -137,13 +136,6 @@ static void usbi_log(enum usbi_log_level level, const char *function,
fprintf(stream, "\n");
}
-static void _usb_finalize(void) {
- if (ctx) {
- libusb_exit(ctx);
- ctx = NULL;
- }
-}
-
API_EXPORTED void usb_init(void)
{
int r;
@@ -159,8 +151,6 @@ API_EXPORTED void usb_init(void)
/* usb_set_debug can be called before usb_init */
if (usb_debug)
libusb_set_debug(ctx, 3);
-
- atexit(_usb_finalize);
}
}
--
1.8.5.3

BIN
libusb-compat-0.1.5.tar.bz2 Normal file

Binary file not shown.

63
libusb.spec Normal file
View File

@ -0,0 +1,63 @@
Name: libusb
Epoch: 1
Version: 0.1.5
Release: 15
Summary: USB Library
License: LGPLv2+
URL: http://sourceforge.net/projects/libusb/
Source0: http://downloads.sourceforge.net/libusb/libusb-compat-%{version}.tar.bz2
Patch0: 0000-Link-with-znodelete-to-disallow-unloading.patch
Patch1: 0001-Revert-use-atexit-to-call-libusb_exit.patch
BuildRequires: gcc libusb1-devel git
%description
This package provides a library that allows userspace access to USB devices.
%package devel
Summary: USB Library
Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
%description devel
This package contains the files needed to develop applications that use libusb-0.1.
%prep
%autosetup -Sgit -n libusb-compat-%{version}
%build
%configure --disable-static
%make_build
%install
%make_install
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%doc AUTHORS COPYING ChangeLog NEWS README
%{_libdir}/libusb-0.1.so.*
%{_libdir}/libusb.la
%files devel
%{_bindir}/*
%{_includedir}/*
%{_libdir}/pkgconfig/*
%{_libdir}/libusb.so
%changelog
* Tue Sep 3 2019 openEuler Buildteam <buildteam@openeuler.org> - 1:0.1.5-15
- Type:enhancemnet
- ID:NA
- SUG:restart
- DESCi:openEuler Debranding
* Wed Aug 21 2019 openEuler Buildteam <buildteam@openeuler.org> - 1:0.1.5-14
- Type:other
- ID:NA
- SUG:NA
- DESC:rename patches
* Mon Apr 15 2019 openEuler Buildteam <buildteam@openeuler.org> - 1:0.1.5-13
- Package Initialization