File libplist.spec of Package libplist.4090

#
# spec file for package libplist
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


Name:           libplist
Version:        1.12
Release:        0
Summary:        Library for handling Apple Binary and XML Property Lists
License:        GPL-2.0 and LGPL-2.1+
Group:          System/Libraries
Url:            http://cgit.sukimashita.com/libplist.git
Source:         http://www.libimobiledevice.org/downloads/%{name}-%{version}.tar.bz2
Source99:       baselibs.conf
Patch1:         0001-Fix-possible-crash-in-plist_from_bin-caused-by-access-to-already-freed-memory.patch
Patch2:         0002-Plug-memory-leaks-caused-by-unused-and-unfreed-buffer.patch
Patch3:         0003-Refactor-binary-plist-parsing-in-a-recursive-way.patch
Patch4:         0004-Make-sure-to-compare-the-node-sizes-for-integer-nodes.patch
Patch5:         0005-Change-internal-storage-of-PLIST_DATE-values-from-struct-timeval-to-double.patch
Patch6:         0006-Fix-possible-out-of-bounds-read-in-parse_dict_node-with-proper-bounds-checking.patch
Patch7:         0007-Fix-possible-out-of-bounds-reads-in-parse_bin_node.patch
Patch8:         0008-Make-sure-the-index-in-parse_bin_node_at_index-is-actually-within-the-offset-table.patch
Patch9:         0009-Prevent-out-of-bounds-read-in-plist_from_bin-when-parsing-offset_table.patch
Patch10:        0010-Make-sure-to-error-out-if-allocation-of-used_indexes-buffer-in-plist_from_bin-fails.patch
Patch11:        0011-Disallow-key-nodes-with-non-string-node-types.patch
Patch12:        0012-Prevent-OOB-heap-buffer-read-by-checking-input-size.patch
Patch13:        0013-Improve-UINT_TO_HOST-macro-remove-uint24_from_be-function.patch
Patch14:        0014-Check-for-invalid-offset_size-in-bplist-trailer.patch
Patch15:        0015-Use-proper-struct-for-binary-plist-trailer.patch
Patch16:        0016-Mass-rename-dict_size-and-param_dict_size-to-more-appropiate-ref_size.patch
Patch17:        0017-Fix-possible-out-of-bounds-read-in-parse_array_node-with-proper-bounds-checking.patch
Patch18:        0018-Avoid-heap-buffer-allocation-when-parsing-array-dict-string-data-node-sizes-14.patch
Patch19:        0019-Unify-size-node-parsing-for-data-string-array-dict-nodes.patch
Patch20:        0020-Prevent-OOB-read-when-parsing-data-string-array-dict-size-nodes.patch
Patch21:        0021-Fix-OOB-write-on-heap-buffer-and-improve-recursion-check.patch
Patch22:        0022-Make-sure-node-index-is-smaller-than-number-of-objects.patch
Patch23:        0023-Make-sure-the-offset-table-is-in-the-correct-range.patch
Patch24:        0024-Plug-memory-leak-in-case-parsing-a-dictionary-key-fails.patch
Patch26:        0026-bplist-Improve-real-date-node-de-serialization.patch
Patch27:        0027-bplist-Improve-parsing-unicode-nodes.patch
Patch29:        0029-bplist-Make-sure-to-bail-out-if-malloc-fails-in-pars.patch
Patch30:        0030-bplist-Make-sure-to-bail-out-if-malloc-fails-in-pars.patch
Patch31:        0031-bplist-Make-sure-to-bail-out-if-malloc-fails-in-pars.patch
Patch32:        0032-bplist-Properly-handle-some-more-malloc-failure-situ.patch
Patch33:        0033-plist-Fix-assert-to-allow-16-or-8-byte-integer-sizes.patch
Patch34:        C0001-Plug-memory-leak-when-converting-PLIST_UID-nodes-to-XML.patch
Patch35:        C0002-Improve-writing-of-array-and-dictionary-nodes.patch
Patch36:        C0003-Improve-writing-of-integer-nodes.patch
Patch37:        C0004-Fix-UID-node-parsing-to-match-Apples-parser.patch
Patch38:        C0005-Improve-writing-of-UID-nodes.patch
Patch39:        C0006-Improve-writing-of-data-string-and-unicode-nodes.patch
Patch40:        C0007-Improve-writing-of-offset-table.patch
#PATCH-FIX-UPSTREAM Nikias Bassen <nikias@gmx.li> CVE-2017-5209
#rework base64decode to handle split encoded data
Patch101:       B0005-base64-Prevent-buffer-overflow-by-not-decoding-blocks-with-less-than-4-chrs.patch
Patch102:       B0006-Prevent-use-strlen-in-base64decode-when-input-buffer-size-is-known.patch
Patch103:       B0007-base64-Rework-base64decode-to-handle-split-encoded-data.patch
# PATCH-FIX-UPSTREAM libplist-boo1035312-overflow-fixes.patch boo#1035312 mgorse@suse.com -- add some overflow checks (boo#1035312 CVE-2017-7982).
Patch110:       libplist-boo1035312-overflow-fixes.patch
# PATCH-FIX-UPSTREAM libplist-boo1029631-32bit.patch boo#1029631 mgorse@suse.com -- make sure sanity checks work on 32-bit platforms (CVE-2017-6440).
Patch111:       libplist-boo1029631-32bit.patch

BuildRequires:  gcc-c++
BuildRequires:  libxml2-devel >= 2.7.8
BuildRequires:  pkg-config
BuildRequires:  python-cython
BuildRequires:  python-devel
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
libplist is a library for handling Apple Binary and XML Property Lists.

%package -n libplist3
Summary:        Library for handling Apple Binary and XML Property Lists
Group:          System/Libraries
Provides:       libplist = %{version}
Obsoletes:      libplist < %{version}

%description -n libplist3
libplist is a library for handling Apple Binary and XML Property Lists.

%package -n libplist++3
Summary:        Library for handling Apple Binary and XML Property Lists
Group:          System/Libraries
Provides:       libplist++ = %{version}
Obsoletes:      libplist++ < %{version}

%description -n libplist++3
libplist is a library for handling Apple Binary and XML Property Lists.

%package -n plistutil
Summary:        Library for handling Apple Binary and XML Property Lists
Group:          System/Libraries
Requires:       libplist = %{version}
Provides:       plutil = %{version}
Obsoletes:      plutil < %{version}

%description -n plistutil
libplist is a library for handling Apple Binary and XML Property Lists.

This package contains an utility to convert PList files from binary to XML and
from XML to binary.

%package devel
Summary:        Library for handling Apple Binary and XML Property Lists -- Development Files
Group:          Development/Libraries/C and C++
Requires:       libplist = %{version}

%description devel
libplist is a library for handling Apple Binary and XML Property Lists.

This package contains the development files for C.

%package -n libplist++-devel
Summary:        Library for handling Apple Binary and XML Property Lists -- Development Files
Group:          Development/Libraries/C and C++
Requires:       libplist++ = %{version}
Requires:       libplist-devel

%description -n libplist++-devel
libplist is a library for handling Apple Binary and XML Property Lists.

This package contains the development files for C++.

%package -n python-plist
Summary:        Library for handling Apple Binary and XML Property Lists -- Python Bindings
Group:          Development/Languages/Python
Requires:       libplist3 = %{version}
Requires:       python-cython >= 0.13

%description -n python-plist
libplist is a library for handling Apple Binary and XML Property Lists.

This package contains the python bindings.

%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch26 -p1
%patch27 -p1
%patch29 -p1
%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch34 -p1
%patch35 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
%patch40 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch110 -p1
%patch111 -p1

%build
%configure --disable-static
make %{?_smp_mflags}

%check
TZ=Europe/Vienna make check VERBOSE=1

%install
make DESTDIR=%{buildroot} install %{?_smp_mflags}
find %{buildroot} -type f -name "*.la" -delete -print
rm -rf %{buildroot}%{python_sitearch}/*.la

# needed by python-imobiledevice build
mkdir -p %{buildroot}%{_includedir}/plist/cython
install -m 0644 cython/plist.pxd %{buildroot}%{_includedir}/plist/cython/plist.pxd

%if 0%{?_crossbuild}
cp -a %{buildroot}%{?_sysroot}/* %{buildroot}/
rm -fr %{buildroot}%{?_sysroot}
%endif

%post -n libplist3 -p /sbin/ldconfig

%postun -n libplist3 -p /sbin/ldconfig

%post -n libplist++3 -p /sbin/ldconfig

%postun -n libplist++3 -p /sbin/ldconfig

%files -n libplist3
%defattr(-,root,root)
%doc AUTHORS COPYING COPYING.LESSER README NEWS
%{_libdir}/libplist.so.*

%files -n libplist++3
%defattr(-,root,root)
%doc AUTHORS COPYING COPYING.LESSER README NEWS
%{_libdir}/libplist++.so.*

%files -n plistutil
%defattr(-,root,root)
%{_bindir}/plistutil

%files devel
%defattr(-,root,root,-)
%dir %{_includedir}/plist
%{_includedir}/plist/plist.h
%{_libdir}/libplist.so
%{_libdir}/pkgconfig/libplist.pc

%files -n libplist++-devel
%defattr(-,root,root,-)
%dir %{_includedir}/plist
%{_includedir}/plist/plist++.h
%{_includedir}/plist/Array.h
%{_includedir}/plist/Boolean.h
%{_includedir}/plist/Data.h
%{_includedir}/plist/Date.h
%{_includedir}/plist/Dictionary.h
%{_includedir}/plist/Integer.h
%{_includedir}/plist/Key.h
%{_includedir}/plist/Uid.h
%{_includedir}/plist/Node.h
%{_includedir}/plist/Real.h
%{_includedir}/plist/String.h
%{_includedir}/plist/Structure.h
%{_libdir}/libplist++.so
%{_libdir}/pkgconfig/libplist++.pc

%files -n python-plist
%defattr(-,root,root,-)
%dir %{_includedir}/plist/cython
%{_includedir}/plist/cython/plist.pxd
%{python_sitearch}/plist.so

%changelog
openSUSE Build Service is sponsored by