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