83be9e
83be9e
# NOTE: packages that can use jasper:
83be9e
# ImageMagick
83be9e
# netpbm
83be9e
83be9e
Summary: Implementation of the JPEG-2000 standard, Part 1
83be9e
Name:    jasper
83be9e
Group:   System Environment/Libraries
83be9e
Version: 1.900.1
83be9e
Release: 33%{?dist}
83be9e
83be9e
License: JasPer
83be9e
URL:     http://www.ece.uvic.ca/~frodo/jasper/
83be9e
Source0: http://www.ece.uvic.ca/~frodo/jasper/software/jasper-%{version}.zip
83be9e
83be9e
Patch1: jasper-1.701.0-GL.patch
83be9e
# autoconf/automake bits of patch1
83be9e
Patch2: jasper-1.701.0-GL-ac.patch
83be9e
# CVE-2007-2721 (bug #240397)
83be9e
# borrowed from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=413041;msg=88
83be9e
Patch3: patch-libjasper-stepsizes-overflow.diff
83be9e
# borrowed from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=469786 
83be9e
Patch4: jpc_dec.c.patch
83be9e
# OpenBSD hardening patches addressing couple of possible integer overflows
83be9e
# during the memory allocations
83be9e
# https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2008-3520
83be9e
Patch5: jasper-1.900.1-CVE-2008-3520.patch
83be9e
# https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2008-3522
83be9e
Patch6: jasper-1.900.1-CVE-2008-3522.patch
83be9e
# add pkg-config support
83be9e
Patch7: jasper-pkgconfig.patch
83be9e
83be9e
Patch8: jasper-1.900.1-CVE-2011-4516-CVE-2011-4517-CERT-VU-887409.patch
83be9e
83be9e
Patch9: jasper-CVE-2014-9029.patch
83be9e
Patch10: jasper-CVE-2014-8137.patch
83be9e
Patch11: jasper-CVE-2014-8138.patch
83be9e
Patch12: jasper-CVE-2014-8157.patch
83be9e
Patch13: jasper-CVE-2014-8158.patch
83be9e
83be9e
# Issues found by static analysis of code
83be9e
Patch110: jasper-1.900.1-Coverity-BAD_SIZEOF.patch
83be9e
Patch111: jasper-1.900.1-Coverity-CHECKED_RETURN.patch
83be9e
Patch112: jasper-1.900.1-Coverity-FORWARD_NULL.patch
83be9e
Patch113: jasper-1.900.1-Coverity-NULL_RETURNS.patch
83be9e
Patch114: jasper-1.900.1-Coverity-RESOURCE_LEAK.patch
83be9e
Patch115: jasper-1.900.1-Coverity-UNREACHABLE.patch
83be9e
Patch116: jasper-1.900.1-Coverity-UNUSED_VALUE.patch
83be9e
83be9e
Patch14: jasper-CVE-2015-5203-CVE-2016-9262.patch
83be9e
Patch15: jasper-CVE-2015-5221.patch
83be9e
Patch16: jasper-CVE-2016-1577.patch
83be9e
Patch17: jasper-CVE-2016-1867.patch
83be9e
Patch18: jasper-CVE-2016-2089.patch
83be9e
Patch19: jasper-CVE-2016-2116.patch
83be9e
Patch20: jasper-CVE-2016-8654.patch
83be9e
Patch21: jasper-CVE-2016-8690-CVE-2016-8884-CVE-2016-8885.patch
83be9e
Patch22: jasper-CVE-2016-8691-CVE-2016-8692.patch
83be9e
Patch23: jasper-CVE-2016-8693.patch
83be9e
Patch24: jasper-CVE-2016-9390.patch
83be9e
Patch25: jasper-CVE-2016-9392-CVE-2016-9393-CVE-2016-9394.patch
83be9e
Patch26: jasper-CVE-2016-9560.patch
83be9e
Patch27: jasper-CVE-2016-10251.patch
83be9e
Patch28: jasper-CVE-2016-9583.patch
83be9e
Patch29: jasper-CVE-2016-9591.patch
83be9e
Patch30: jasper-CVE-2016-9600.patch
83be9e
Patch31: jasper-CVE-2016-10248.patch
83be9e
Patch32: jasper-CVE-2016-10249.patch
83be9e
Patch33: jasper-CVE-2016-8883.patch
83be9e
Patch34: jasper-CVE-2016-9387.patch
83be9e
Patch35: jasper-CVE-2016-9388.patch
83be9e
Patch36: jasper-CVE-2016-9389.patch
83be9e
Patch37: jasper-CVE-2016-9391.patch
83be9e
Patch38: jasper-CVE-implicit-declaration-fix.patch
83be9e
83be9e
Patch39: jasper-1.900.1-define-SIZE-MAX.patch	
83be9e
Patch40: jasper-1.900.1-CVE-2016-9396.patch
83be9e
Patch41: jasper-1.900.1-CVE-2017-1000050.patch
83be9e
83be9e
# autoreconf
83be9e
BuildRequires: autoconf automake libtool
83be9e
BuildRequires: freeglut-devel 
83be9e
BuildRequires: libGLU-devel
83be9e
BuildRequires: libjpeg-devel
83be9e
BuildRequires: pkgconfig
83be9e
83be9e
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
83be9e
83be9e
%description
83be9e
This package contains an implementation of the image compression
83be9e
standard JPEG-2000, Part 1. It consists of tools for conversion to and
83be9e
from the JP2 and JPC formats.
83be9e
83be9e
%package devel
83be9e
Summary: Header files, libraries and developer documentation
83be9e
Group:   Development/Libraries
83be9e
Provides: libjasper-devel = %{version}-%{release}
83be9e
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
83be9e
Requires: libjpeg-devel
83be9e
Requires: pkgconfig
83be9e
%description devel
83be9e
%{summary}.
83be9e
83be9e
%package libs 
83be9e
Summary: Runtime libraries for %{name}
83be9e
Group:   System Environment/Libraries
83be9e
Conflicts: jasper < 1.900.1-4
83be9e
%description libs 
83be9e
%{summary}.
83be9e
83be9e
%package utils 
83be9e
Summary: Nonessential utilities for %{name}
83be9e
Group:   Development/Libraries
83be9e
Requires: %{name} = %{version}-%{release}
83be9e
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
83be9e
%description utils 
83be9e
%{summary}, including jiv and tmrdemo.
83be9e
83be9e
83be9e
83be9e
%prep
83be9e
%setup -q -n %{name}-%{version}
83be9e
83be9e
%patch1 -p1 -b .GL
83be9e
%patch2 -p1 -b .GL-ac
83be9e
%patch3 -p1 -b .CVE-2007-2721
83be9e
%patch4 -p1 -b .jpc_dec_assertion
83be9e
%patch5 -p1 -b .CVE-2008-3520
83be9e
%patch6 -p1 -b .CVE-2008-3522
83be9e
%patch7 -p1 -b .pkgconfig
83be9e
%patch8 -p1 -b .CVE-2011-4516-4517
83be9e
%patch9 -p1 -b .CVE-2014-9029
83be9e
%patch10 -p1 -b .CVE-2014-8137
83be9e
%patch11 -p1 -b .CVE-2014-8138
83be9e
%patch12 -p1 -b .CVE-2014-8157
83be9e
%patch13 -p1 -b .CVE-2014-8158
83be9e
83be9e
%patch110 -p1 -b .BAD_SIZEOF
83be9e
%patch111 -p1 -b .CHECKED_RETURN
83be9e
%patch112 -p1 -b .FORWARD_NULL
83be9e
%patch113 -p1 -b .NULL_RETURNS
83be9e
%patch114 -p1 -b .RESOURCE_LEAK
83be9e
%patch115 -p1 -b .UNREACHABLE
83be9e
%patch116 -p1 -b .UNUSED_VALUE
83be9e
83be9e
%patch14 -p1 -b .CVE-2015-5203
83be9e
%patch15 -p1 -b .CVE-2015-5221
83be9e
%patch16 -p1 -b .CVE-2016-1577
83be9e
%patch17 -p1 -b .CVE-2016-1867
83be9e
%patch18 -p1 -b .CVE-2016-2089
83be9e
%patch19 -p1 -b .CVE-2016-2116
83be9e
%patch20 -p1 -b .CVE-2016-8654
83be9e
%patch21 -p1 -b .CVE-2016-8690
83be9e
%patch22 -p1 -b .CVE-2016-8691
83be9e
%patch23 -p1 -b .CVE-2016-8693
83be9e
%patch24 -p1 -b .CVE-2016-9390
83be9e
%patch25 -p1 -b .CVE-2016-9392
83be9e
%patch26 -p1 -b .CVE-2016-9560
83be9e
%patch27 -p1 -b .CVE-2016-10251
83be9e
%patch28 -p1 -b .CVE-2016-9583
83be9e
%patch29 -p1 -b .CVE-2016-9591
83be9e
%patch30 -p1 -b .CVE-2016-9600
83be9e
%patch31 -p1 -b .CVE-2016-10248
83be9e
%patch32 -p1 -b .CVE-2016-10249
83be9e
%patch33 -p1 -b .CVE-2016-8883
83be9e
%patch34 -p1 -b .CVE-2016-9387
83be9e
%patch35 -p1 -b .CVE-2016-9388
83be9e
%patch36 -p1 -b .CVE-2016-9389
83be9e
%patch37 -p1 -b .CVE-2016-9391
83be9e
%patch38 -p1 -b .CVE-implicit-declaration-fix
83be9e
%patch39 -p1 -b .define-SIZE-MAX
83be9e
%patch40 -p1 -b .CVE-2016-9396
83be9e
%patch41 -p1 -b .CVE-2017-1000050
83be9e
83be9e
autoreconf --verbose --force --install
83be9e
83be9e
83be9e
%build
83be9e
83be9e
# jas_icc.c:744:2: warning: assuming signed overflow does not occur
83be9e
# when assuming that (X + c) < X is always false [-Wstrict-overflow]
83be9e
#
83be9e
# comment from Red Hat Security Response Team:
83be9e
# gcc inlines jas_iccattrtab_resize into jas_iccattrtab_add. Additionally, it
83be9e
# essentially removes the "assert(maxents >= tab->numattrs);" assertion in
83be9e
# jas_iccattrtab_resize, because it assumes that "maxents >= tab->numattrs" will
83be9e
# always be true due to jas_iccattrtab_resize(attrtab, attrtab->numattrs + 32),
83be9e
# especially the + 32. This assumption can only be true if it completely ignores
83be9e
# the problem of signed integer overflows. I don't think it's a smart idea to
83be9e
# accept that.
83be9e
# -fno-strict-overflow forces gcc into keeping the assertion there.
83be9e
CFLAGS="%{optflags} -fno-strict-overflow" \
83be9e
%configure \
83be9e
  --enable-shared \
83be9e
  --disable-static 
83be9e
83be9e
make %{?_smp_mflags}
83be9e
83be9e
83be9e
%install
83be9e
83be9e
make install DESTDIR=$RPM_BUILD_ROOT
83be9e
83be9e
# Unpackaged files
83be9e
rm -f doc/README
83be9e
rm -f $RPM_BUILD_ROOT%{_libdir}/lib*.la
83be9e
83be9e
83be9e
%check
83be9e
make check
83be9e
83be9e
83be9e
83be9e
%post libs -p /sbin/ldconfig
83be9e
83be9e
%postun libs -p /sbin/ldconfig
83be9e
83be9e
83be9e
%files
83be9e
%{_bindir}/imgcmp
83be9e
%{_bindir}/imginfo
83be9e
%{_bindir}/jasper
83be9e
%{_mandir}/man1/img*
83be9e
%{_mandir}/man1/jasper.1*
83be9e
83be9e
%files devel
83be9e
%doc doc/*
83be9e
%{_includedir}/jasper/
83be9e
%{_libdir}/libjasper.so
83be9e
%{_libdir}/pkgconfig/jasper.pc
83be9e
83be9e
%files libs
83be9e
%doc COPYRIGHT LICENSE NEWS README
83be9e
%{_libdir}/libjasper.so.1*
83be9e
83be9e
%files utils
83be9e
%{_bindir}/jiv
83be9e
%{_bindir}/tmrdemo
83be9e
%{_mandir}/man1/jiv.1*
83be9e
83be9e
83be9e
%changelog
83be9e
* Thu Jun 21 2018 Josef Ridky <jridky@redhat.com> - 1.900.1-33
83be9e
- remove implicit declaration of jas_eprintf (#1585830)
83be9e
83be9e
* Thu Jun 21 2018 Josef Ridky <jridky@redhat.com> - 1.900.1-32
83be9e
- Fix CVE-2016-9396 (#1583721)
83be9e
- Fix CVE-2017-1000050 (#1585830)
83be9e
83be9e
* Wed May 31 2017 Josef Ridky <jridky@redhat.com> - 1.900.1-31
83be9e
- Fix missing declaration of SIZE_MAX constant in jas_math.h (#1455489)
83be9e
83be9e
* Tue Apr 25 2017 Josef Ridky <jridky@redhat.com> - 1.900.1-30
83be9e
- Multiple security fixes (fixed by thoger):
83be9e
  CVE-2015-5203 CVE-2015-5221 CVE-2016-1577 CVE-2016-1867 CVE-2016-2089
83be9e
  CVE-2016-2116 CVE-2016-8654 CVE-2016-8690 CVE-2016-8691 CVE-2016-8692
83be9e
  CVE-2016-8693 CVE-2016-8883 CVE-2016-8884 CVE-2016-8885 CVE-2016-9262
83be9e
  CVE-2016-9387 CVE-2016-9388 CVE-2016-9389 CVE-2016-9390 CVE-2016-9391
83be9e
  CVE-2016-9392 CVE-2016-9393 CVE-2016-9394 CVE-2016-9560 CVE-2016-9583
83be9e
  CVE-2016-9591 CVE-2016-9600 CVE-2016-10248 CVE-2016-10249 CVE-2016-10251
83be9e
- Fix implicit declaration warning caused by security fixes above
83be9e
83be9e
* Mon Jan 19 2015 Jiri Popelka <jpopelka@redhat.com> - 1.900.1-29
83be9e
- CVE-2014-8157 - dec->numtiles off-by-one check in jpc_dec_process_sot() (#1183674)
83be9e
- CVE-2014-8158 - unrestricted stack memory use in jpc_qmfb.c (#1183682)
83be9e
83be9e
* Fri Dec 12 2014 Jiri Popelka <jpopelka@redhat.com> - 1.900.1-28
83be9e
- CVE-2014-8137 - double-free in in jas_iccattrval_destroy (#1173569)
83be9e
- CVE-2014-8138 - heap overflow in jp2_decode (#1173569)
83be9e
83be9e
* Sat Dec 06 2014 Jiri Popelka <jpopelka@redhat.com> - 1.900.1-27
83be9e
- CVE-2014-9029 - incorrect component number check in COC, RGN and QCC
83be9e
                  marker segment decoders (#1171211)
83be9e
83be9e
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 1.900.1-26
83be9e
- Mass rebuild 2014-01-24
83be9e
83be9e
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1.900.1-25
83be9e
- Mass rebuild 2013-12-27
83be9e
83be9e
* Mon Mar 25 2013 Jiri Popelka <jpopelka@redhat.com> - 1.900.1-24
83be9e
- added --force option to autoreconf (#925604)
83be9e
83be9e
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.900.1-23
83be9e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
83be9e
83be9e
* Fri Jan 18 2013 Adam Tkac <atkac redhat com> - 1.900.1-22
83be9e
- rebuild due to "jpeg8-ABI" feature drop
83be9e
83be9e
* Thu Dec 06 2012 Jiri Popelka <jpopelka@redhat.com> - 1.900.1-21
83be9e
- build with -fno-strict-overflow
83be9e
83be9e
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.900.1-20
83be9e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
83be9e
83be9e
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.900.1-19
83be9e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
83be9e
83be9e
* Fri Dec 09 2011 Jiri Popelka <jpopelka@redhat.com> - 1.900.1-18
83be9e
- CVE-2011-4516, CVE-2011-4517 jasper: heap buffer overflow flaws
83be9e
  lead to arbitrary code execution (CERT VU#887409) (#765660)
83be9e
- Fixed problems found by static analysis of code (#761440)
83be9e
- spec file modernized
83be9e
83be9e
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.900.1-17
83be9e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
83be9e
83be9e
* Wed Jun 30 2010 Rex Dieter <rdieter@fedoraproject.org> - 1.900.1-16
83be9e
- rebuild
83be9e
83be9e
* Sun Feb 14 2010 Rex Dieter <rdieter@fedoraproject.org> - 1.900.1-15
83be9e
- FTBFS jasper-1.900.1-14.fc12: ImplicitDSOLinking (#564794)
83be9e
83be9e
* Thu Oct 29 2009 Rex Dieter <rdieter@fedoraproject.org> - 1.900.1-14
83be9e
- add pkgconfig support
83be9e
83be9e
* Mon Oct 13 2009 Rex Dieter <rdieter@fedoraproject.org> - 1.900.1-13
83be9e
- CVE-2008-3520 jasper: multiple integer overflows in jas_alloc calls (#461476)
83be9e
- CVE-2008-3522 jasper: possible buffer overflow in 
83be9e
  jas_stream_printf() (#461478)
83be9e
83be9e
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.900.1-12
83be9e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
83be9e
83be9e
* Sat Jul 18 2009 Rex Dieter <rdieter@fedoraproject.org> - 1.900.1-11
83be9e
- FTBFS jasper-1.900.1-10.fc11 (#511743)
83be9e
83be9e
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.900.1-10
83be9e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
83be9e
83be9e
* Sun Jan 25 2009 Rex Dieter <rdieter@fedoraproject.org> 1.900.1-9
83be9e
- patch for "jpc_dec_tiledecode: Assertion `dec->numcomps == 3' failed)
83be9e
  (#481284, #481291)
83be9e
83be9e
* Fri Feb 08 2008 Rex Dieter <rdieter@fedoraproject.org> 1.900.1-8
83be9e
- respin (gcc43)
83be9e
83be9e
* Mon Oct 15 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.900.1-7
83be9e
- -libs: %%post/%%postun -p /sbin/ldconfig
83be9e
83be9e
* Mon Sep 17 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.900.1-6
83be9e
- -libs: -Requires: %%name
83be9e
- -devel: +Provides: libjasper-devel
83be9e
- drop (unused) geojasper bits
83be9e
83be9e
* Wed Aug 22 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.900.1-4
83be9e
- -libs subpkg to be multilib friendlier
83be9e
- -utils subpkg for non-essential binaries jiv, tmrdemo (#244153)
83be9e
83be9e
* Fri Aug 17 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.900.1-3
83be9e
- License: JasPer
83be9e
83be9e
* Wed May 23 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.900.1-2
83be9e
- CVE-2007-2721 (#240397)
83be9e
83be9e
* Thu Mar 29 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.900.1-1
83be9e
- jasper-1.900.1
83be9e
83be9e
* Fri Dec 08 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.900.0-3
83be9e
- omit deprecated memleak patch
83be9e
83be9e
* Fri Dec 08 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.900.0-2
83be9e
- jasper-1.900.0 (#218947)
83be9e
83be9e
* Mon Sep 18 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-15
83be9e
- memory leak (#207006)
83be9e
83be9e
* Tue Aug 29 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-13
83be9e
- fc6 respin
83be9e
83be9e
* Wed Mar 1 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-12
83be9e
- fixup build issues introduced by geojasper integration
83be9e
83be9e
* Wed Mar 1 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-10
83be9e
- support/use geojasper (optional, default no)
83be9e
- fc5: gcc/glibc respin
83be9e
83be9e
* Fri Feb 10 2006 Rex Dieter <rexdieter[AT]users.sf.net>
83be9e
- fc5: gcc/glibc respin
83be9e
83be9e
* Tue Jan 31 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-9
83be9e
- workaround "freeglut-devel should Requires: libGL-devel, libGLU-devel"
83be9e
  (#179464)
83be9e
83be9e
* Tue Jan 31 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-8
83be9e
- revert jasper to jaspertool rename (#176773)
83be9e
- actually use/apply GL patch
83be9e
83be9e
* Tue Oct 18 2005 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-7
83be9e
- GL patch to remove libGL dependancy (using only freeglut)
83be9e
83be9e
* Tue Oct 18 2005 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-6
83be9e
- token %%check section
83be9e
- --enable-shared 
83be9e
83be9e
* Mon Oct 17 2005 Rex Dieter <rexdieter[AT]users.sf.net> 1.701.0-5
83be9e
- use %%{?dist}
83be9e
- BR: libGL-devel 
83be9e
83be9e
* Fri Apr  7 2005 Michael Schwendt <mschwendt[AT]users.sf.net>
83be9e
- rebuilt
83be9e
83be9e
* Sat Oct 23 2004 Rex Dieter <rexdieter at sf.net> 0:1.701.0-0.fdr.3
83be9e
- Capitalize summary
83be9e
- remove 0-length ChangeLog
83be9e
83be9e
* Fri Jun 04 2004 Rex Dieter <rexdieter at sf.net> 0:1.701.0-0.fdr.2
83be9e
- nuke .la file
83be9e
- BR: glut-devel -> freeglut-devel
83be9e
83be9e
* Tue Jun 01 2004 Rex Dieter <rexdieter at sf.net> 0:1.701.0-0.fdr.1
83be9e
- 1.701.0
83be9e
83be9e
* Tue Jun 01 2004 Rex Dieter <rexdieter at sf.net> 0:1.700.5-0.fdr.2
83be9e
- avoid conflicts with fc'2 tomcat by renaming /usr/bin/jasper -> jaspertool
83be9e
83be9e
* Mon Mar 08 2004 Rex Dieter <rexdieter at sf.net> 0:1.700.5-0.fdr.1
83be9e
- use Epochs.
83be9e
- -devel: Requires: %%name = %%epoch:%%version
83be9e
83be9e
* Thu Jan 22 2004 Rex Dieter <rexdieter at sf.net> 1.700.5-0.fdr.0
83be9e
- first try
83be9e