On Mon Oct 11, 2021 at 10:24:33AM +0200, Moritz Buhl wrote:
> bump
> 
> On Fri, Sep 17, 2021 at 12:17:25PM +0200, Moritz Buhl wrote:
> > Dear ports@,
> > 
> > updating graphics/djvulibre to 3.5.28 fixes the following bugs:
> > CVE-2021-3630: out-of-bounds write
> > CVE-2019-15143: infinite recoursion
> > CVE-2019-15142: heap buffer over-read
> > CVE-2019-18804: NULL pointer deref
> > 
> > I added more bug fixes that are not yet in a release.
> > 
> > For testing I compiled graphics/djviewer and opened two old ebooks.
> > I also make tested graphics/ImageMagick.
> > 
> > mbuhl

OK rsadowski

> > 
> > Index: graphics/djvulibre/Makefile
> > ===================================================================
> > RCS file: /cvs/ports/graphics/djvulibre/Makefile,v
> > retrieving revision 1.45
> > diff -u -p -r1.45 Makefile
> > --- graphics/djvulibre/Makefile     12 Jul 2019 20:46:57 -0000      1.45
> > +++ graphics/djvulibre/Makefile     16 Sep 2021 21:01:47 -0000
> > @@ -2,9 +2,8 @@
> >  
> >  COMMENT=   view, decode and encode DjVu files
> >  
> > -DISTNAME=  djvulibre-3.5.27
> > -REVISION=  6
> > -SHARED_LIBS=       djvulibre       26.0    # 27.0
> > +DISTNAME=  djvulibre-3.5.28
> > +SHARED_LIBS=       djvulibre       27.0    # 28.0
> >  CATEGORIES=        graphics print
> >  
> >  HOMEPAGE=  http://djvu.sourceforge.net/
> > Index: graphics/djvulibre/distinfo
> > ===================================================================
> > RCS file: /cvs/ports/graphics/djvulibre/distinfo,v
> > retrieving revision 1.9
> > diff -u -p -r1.9 distinfo
> > --- graphics/djvulibre/distinfo     12 May 2015 16:10:27 -0000      1.9
> > +++ graphics/djvulibre/distinfo     16 Sep 2021 21:01:47 -0000
> > @@ -1,2 +1,2 @@
> > -SHA256 (djvulibre-3.5.27.tar.gz) = 
> > 5pZoJSVlYDh1+4hQDN4Cv5PRLUijiE5HJpbIlugfUF8=
> > -SIZE (djvulibre-3.5.27.tar.gz) = 3648522
> > +SHA256 (djvulibre-3.5.28.tar.gz) = 
> > /NAJ6nZU/eWoNgDrgHV706dpmOR9E8ZrVMjbhJ+PLtw=
> > +SIZE (djvulibre-3.5.28.tar.gz) = 3701161
> > Index: graphics/djvulibre/patches/patch-configure_ac
> > ===================================================================
> > RCS file: /cvs/ports/graphics/djvulibre/patches/patch-configure_ac,v
> > retrieving revision 1.2
> > diff -u -p -r1.2 patch-configure_ac
> > --- graphics/djvulibre/patches/patch-configure_ac   12 May 2015 16:10:27 
> > -0000      1.2
> > +++ graphics/djvulibre/patches/patch-configure_ac   16 Sep 2021 21:01:47 
> > -0000
> > @@ -1,7 +1,8 @@
> >  $OpenBSD: patch-configure_ac,v 1.2 2015/05/12 16:10:27 shadchin Exp $
> > ---- configure.ac.orig      Sun Mar 29 10:30:55 2015
> > -+++ configure.ac   Sun Mar 29 10:31:17 2015
> > -@@ -129,7 +129,6 @@ RM="$RM -f"
> > +Index: configure.ac
> > +--- configure.ac.orig
> > ++++ configure.ac
> > +@@ -131,7 +131,6 @@ RM="$RM -f"
> >   # Libtool & Compilers
> >   AC_PROG_CC
> >   AC_PROG_CXX
> > Index: graphics/djvulibre/patches/patch-libdjvu_DataPool_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DataPool_cpp
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DataPool_cpp
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ graphics/djvulibre/patches/patch-libdjvu_DataPool_cpp   16 Sep 2021 
> > 21:01:47 -0000
> > @@ -0,0 +1,18 @@
> > +$OpenBSD$
> > +
> > +Fix CVE-2021-32492: Out-of-Bounds Read
> > +https://sourceforge.net/p/djvu/djvulibre-git/ci/cd8b5c97b27a5c1dc83046498b6ca49ad20aa9b6
> > +
> > +Index: libdjvu/DataPool.cpp
> > +--- libdjvu/DataPool.cpp.orig
> > ++++ libdjvu/DataPool.cpp
> > +@@ -791,6 +791,9 @@ DataPool::create(const GP<DataPool> & pool, int start,
> > +   DEBUG_MSG("DataPool::DataPool: pool=" << (void *)((DataPool *)pool) << 
> > " start=" << start << " length= " << length << "\n");
> > +   DEBUG_MAKE_INDENT(3);
> > + 
> > ++  if (!pool)
> > ++    G_THROW( ERR_MSG("DataPool.zero_DataPool") );
> > ++
> > +   DataPool *xpool=new DataPool();
> > +   GP<DataPool> retval=xpool;
> > +   xpool->init();
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVmDir_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DjVmDir_cpp
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DjVmDir_cpp
> > --- graphics/djvulibre/patches/patch-libdjvu_DjVmDir_cpp    2 Mar 2016 
> > 20:10:36 -0000       1.1
> > +++ /dev/null       1 Jan 1970 00:00:00 -0000
> > @@ -1,94 +0,0 @@
> > -$OpenBSD: patch-libdjvu_DjVmDir_cpp,v 1.1 2016/03/02 20:10:36 juanfra Exp $
> > -
> > -"accept documents with duplicate page titles"
> > -
> > -http://sourceforge.net/p/djvu/djvulibre-git/ci/77a4dca8dd3acd0acc1680fa14a352c11084e25d/
> > -https://bitbucket.org/jwilk/pdf2djvu/issues/113/duplicate-page-title-1
> > -
> > ---- libdjvu/DjVmDir.cpp.orig       Tue Jul  8 23:15:07 2014
> > -+++ libdjvu/DjVmDir.cpp    Wed Feb  3 01:51:28 2016
> > -@@ -223,7 +223,6 @@ DjVmDir::decode(const GP<ByteStream> &gstr)
> > -    page2file.resize(-1);
> > -    name2file.empty();
> > -    id2file.empty();
> > --   title2file.empty();
> > - 
> > -    int ver=str.read8();
> > -    bool bundled=(ver & 0x80)!=0;
> > -@@ -375,18 +374,6 @@ DjVmDir::decode(const GP<ByteStream> &gstr)
> > -             G_THROW( ERR_MSG("DjVmDir.dupl_id") "\t" + file->id);
> > -          id2file[file->id]=file;
> > -       }
> > --
> > --         // Generate title2file map
> > --      for(pos=files_list;pos;++pos)
> > --      {
> > --         GP<File> file=files_list[pos];
> > --         if (file->title.length())
> > --         {
> > --            if (title2file.contains(file->title))
> > --               G_THROW( ERR_MSG("DjVmDir.dupl_title") "\t" + file->title);
> > --            title2file[file->title]=file;
> > --         }
> > --      }
> > -    }
> > - }
> > - 
> > -@@ -556,11 +543,19 @@ DjVmDir::id_to_file(const GUTF8String &id) const
> > - }
> > - 
> > - GP<DjVmDir::File>
> > --DjVmDir::title_to_file(const GUTF8String &title) const
> > -+DjVmDir::title_to_file(const GUTF8String &title, GPosition spos) const
> > - {
> > --   GCriticalSectionLock lock((GCriticalSection *) &class_lock);
> > --   GPosition pos;
> > --   return (title2file.contains(title, 
> > pos))?title2file[pos]:(GP<DjVmDir::File>(0));
> > -+  if (! title)
> > -+    return 0;
> > -+  GCriticalSectionLock lock((GCriticalSection *) &class_lock);
> > -+  if (! spos)
> > -+    for (GPosition pos = spos; pos; ++pos)
> > -+      if (files_list[pos]->is_page() && files_list[pos]->title == title)
> > -+        return files_list[pos];
> > -+  for (GPosition pos = files_list; pos; ++pos)
> > -+    if (files_list[pos]->is_page() && files_list[pos]->title == title)
> > -+      return files_list[pos];
> > -+  return 0;
> > - }
> > - 
> > - GP<DjVmDir::File>
> > -@@ -661,14 +656,7 @@ DjVmDir::insert_file(const GP<File> & file, int pos_nu
> > -      G_THROW( ERR_MSG("DjVmDir.dupl_name2") "\t" + file->name);
> > -    name2file[file->name]=file;
> > -    id2file[file->id]=file;
> > --   if (file->title.length())
> > --     {
> > --       if (title2file.contains(file->title))  
> > --         // duplicate titles may become ok some day
> > --         G_THROW( ERR_MSG("DjVmDir.dupl_title2") "\t" + file->title);
> > --       title2file[file->title]=file;
> > --     }
> > --
> > -+   
> > -       // Make sure that there is no more than one file with shared 
> > annotations
> > -    if (file->is_shared_anno())
> > -    {
> > -@@ -727,7 +715,6 @@ DjVmDir::delete_file(const GUTF8String &id)
> > -       {
> > -          name2file.del(f->name);
> > -          id2file.del(f->id);
> > --         title2file.del(f->title);
> > -          if (f->is_page())
> > -          {
> > -             for(int page=0;page<page2file.size();page++)
> > -@@ -788,9 +775,7 @@ DjVmDir::set_file_title(const GUTF8String &id, const G
> > -    if (!id2file.contains(id, pos))
> > -       G_THROW( ERR_MSG("DjVmDir.no_info") "\t" + GUTF8String(id));
> > -    GP<File> file=id2file[pos];
> > --   title2file.del(file->title);
> > -    file->title=title;
> > --   title2file[title]=file;
> > - }
> > - 
> > - GPList<DjVmDir::File>
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVmDir_h
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DjVmDir_h
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DjVmDir_h
> > --- graphics/djvulibre/patches/patch-libdjvu_DjVmDir_h      2 Mar 2016 
> > 20:10:36 -0000       1.1
> > +++ /dev/null       1 Jan 1970 00:00:00 -0000
> > @@ -1,41 +0,0 @@
> > -$OpenBSD: patch-libdjvu_DjVmDir_h,v 1.1 2016/03/02 20:10:36 juanfra Exp $
> > -
> > -"accept documents with duplicate page titles"
> > -
> > -http://sourceforge.net/p/djvu/djvulibre-git/ci/77a4dca8dd3acd0acc1680fa14a352c11084e25d/
> > -https://bitbucket.org/jwilk/pdf2djvu/issues/113/duplicate-page-title-1
> > -
> > ---- libdjvu/DjVmDir.h.orig Tue Jul  8 23:15:07 2014
> > -+++ libdjvu/DjVmDir.h      Wed Feb  3 01:51:28 2016
> > -@@ -181,7 +181,8 @@ class DJVUAPI DjVmDir : public GPEnabled (public)
> > -       /** Translates file IDs to file records. */
> > -    GP<File> id_to_file(const GUTF8String &id) const;
> > -       /** Translates file shortcuts to file records. */
> > --   GP<File> title_to_file(const GUTF8String &title) const;
> > -+   GP<File> title_to_file(const GUTF8String &title, GPosition spos) const;
> > -+   GP<File> title_to_file(const GUTF8String &title) const; 
> > -       /** Access file record by position. */
> > -    GP<File> pos_to_file(int fileno, int *ppageno=0) const;
> > -       /** Returns position of the file in the directory. */
> > -@@ -216,7 +217,6 @@ class DJVUAPI DjVmDir : public GPEnabled (public)
> > -    GPArray<File> page2file;
> > -    GPMap<GUTF8String, File> name2file;
> > -    GPMap<GUTF8String, File> id2file;
> > --   GPMap<GUTF8String, File> title2file;
> > - private: //dummy stuff
> > -    static void decode(ByteStream *);
> > -    static void encode(ByteStream *);
> > -@@ -438,6 +438,13 @@ DjVmDir::is_indirect(void) const
> > -   GCriticalSectionLock lock((GCriticalSection *) &class_lock);
> > -   return ( files_list.size() && files_list[files_list] != 0 &&
> > -            files_list[files_list]->offset==0 );
> > -+}
> > -+
> > -+inline GP<DjVmDir::File> 
> > -+DjVmDir::title_to_file(const GUTF8String &title) const
> > -+{
> > -+  GPosition pos;
> > -+  return title_to_file(title, pos);
> > - }
> > - 
> > - 
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVuDocument_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DjVuDocument_cpp
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DjVuDocument_cpp
> > --- graphics/djvulibre/patches/patch-libdjvu_DjVuDocument_cpp       2 Mar 
> > 2016 20:10:36 -0000       1.1
> > +++ /dev/null       1 Jan 1970 00:00:00 -0000
> > @@ -1,37 +0,0 @@
> > -$OpenBSD: patch-libdjvu_DjVuDocument_cpp,v 1.1 2016/03/02 20:10:36 juanfra 
> > Exp $
> > -
> > -"accept documents with duplicate page titles"
> > -
> > -http://sourceforge.net/p/djvu/djvulibre-git/ci/77a4dca8dd3acd0acc1680fa14a352c11084e25d/
> > -https://bitbucket.org/jwilk/pdf2djvu/issues/113/duplicate-page-title-1
> > -
> > ---- libdjvu/DjVuDocument.cpp.orig  Mon Sep 22 00:06:03 2014
> > -+++ libdjvu/DjVuDocument.cpp       Wed Feb  3 01:51:28 2016
> > -@@ -805,11 +805,9 @@ DjVuDocument::id_to_url(const GUTF8String & id) const
> > -       {
> > -         GP<DjVmDir::File> file=djvm_dir->id_to_file(id);
> > -         if (!file)
> > --              {
> > -                 file=djvm_dir->name_to_file(id);
> > --          if (!file)
> > --                  file=djvm_dir->title_to_file(id);
> > --              }
> > -+        if (!file)
> > -+                file=djvm_dir->title_to_file(id);
> > -         if (file)
> > -           return GURL::UTF8(file->get_load_name(),init_url);
> > -       }
> > -@@ -819,11 +817,9 @@ DjVuDocument::id_to_url(const GUTF8String & id) const
> > -       {
> > -          GP<DjVmDir::File> file=djvm_dir->id_to_file(id);
> > -          if (!file)
> > --               {
> > -                  file=djvm_dir->name_to_file(id);
> > --           if (!file)
> > --                   file=djvm_dir->title_to_file(id);
> > --               }
> > -+        if (!file)
> > -+                file=djvm_dir->title_to_file(id);
> > -          if (file)
> > -            return GURL::UTF8(file->get_load_name(),init_url.base());
> > -       }
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVuDocument_h
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DjVuDocument_h
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DjVuDocument_h
> > --- graphics/djvulibre/patches/patch-libdjvu_DjVuDocument_h 2 Mar 2016 
> > 20:10:36 -0000       1.1
> > +++ /dev/null       1 Jan 1970 00:00:00 -0000
> > @@ -1,17 +0,0 @@
> > -$OpenBSD: patch-libdjvu_DjVuDocument_h,v 1.1 2016/03/02 20:10:36 juanfra 
> > Exp $
> > -
> > -"accept documents with duplicate page titles"
> > -
> > -http://sourceforge.net/p/djvu/djvulibre-git/ci/77a4dca8dd3acd0acc1680fa14a352c11084e25d/
> > -https://bitbucket.org/jwilk/pdf2djvu/issues/113/duplicate-page-title-1
> > -
> > ---- libdjvu/DjVuDocument.h.orig    Tue Jul  8 23:15:07 2014
> > -+++ libdjvu/DjVuDocument.h Wed Feb  3 01:51:28 2016
> > -@@ -524,7 +524,6 @@ class DJVUAPI DjVuDocument : public DjVuPort (public)
> > -              \begin{enumerate}
> > -                 \item File ID from the \Ref{DjVmDir}
> > -                 \item File name from the \Ref{DjVmDir}
> > --                \item File title from the \Ref{DjVmDir}
> > -              \end{enumerate}
> > -              Then for #BUNDLED# document the URL is obtained by
> > -              appending the #name# of the found file to the document's
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVuFile_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DjVuFile_cpp
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DjVuFile_cpp
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ graphics/djvulibre/patches/patch-libdjvu_DjVuFile_cpp   16 Sep 2021 
> > 21:01:47 -0000
> > @@ -0,0 +1,16 @@
> > +$OpenBSD$
> > +
> > +https://sourceforge.net/p/djvu/djvulibre-git/ci/cd8b5c97b27a5c1dc83046498b6ca49ad20aa9b6
> > +
> > +Index: libdjvu/DjVuFile.cpp
> > +--- libdjvu/DjVuFile.cpp.orig
> > ++++ libdjvu/DjVuFile.cpp
> > +@@ -576,6 +576,8 @@ DjVuFile::process_incl_chunk(ByteStream & str, int fil
> > +     GURL incl_url=pcaster->id_to_url(this, incl_str);
> > +     if (incl_url.is_empty())      // Fallback. Should never be used.
> > +       incl_url=GURL::UTF8(incl_str,url.base());
> > ++    if (incl_url == url)        // Infinite loop avoidance
> > ++      G_THROW( ERR_MSG("DjVuFile.malformed") );
> > +     
> > +     // Now see if there is already a file with this *name* created
> > +     {
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVuMessageLite_h
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DjVuMessageLite_h
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DjVuMessageLite_h
> > --- graphics/djvulibre/patches/patch-libdjvu_DjVuMessageLite_h      2 Mar 
> > 2016 20:10:36 -0000       1.1
> > +++ /dev/null       1 Jan 1970 00:00:00 -0000
> > @@ -1,20 +0,0 @@
> > -$OpenBSD: patch-libdjvu_DjVuMessageLite_h,v 1.1 2016/03/02 20:10:36 
> > juanfra Exp $
> > -
> > -"accept documents with duplicate page titles"
> > -
> > -http://sourceforge.net/p/djvu/djvulibre-git/ci/77a4dca8dd3acd0acc1680fa14a352c11084e25d/
> > -https://bitbucket.org/jwilk/pdf2djvu/issues/113/duplicate-page-title-1
> > -
> > ---- libdjvu/DjVuMessageLite.h.orig Tue Jul  8 23:15:07 2014
> > -+++ libdjvu/DjVuMessageLite.h      Wed Feb  3 01:51:28 2016
> > -@@ -89,8 +89,8 @@ class ByteStream;
> > -     separator ::= newline |
> > -                   newline | separator
> > -     
> > --    single_message ::= message_ID |
> > --                       message_ID parameters
> > -+    single_message ::= CTRLC message_ID |
> > -+                       CTRLC message_ID parameters
> > -     
> > -     parameters ::= tab string |
> > -                    tab string parameters
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVuPalette_cpp
> > ===================================================================
> > RCS file: 
> > /cvs/ports/graphics/djvulibre/patches/patch-libdjvu_DjVuPalette_cpp,v
> > retrieving revision 1.1
> > diff -u -p -r1.1 patch-libdjvu_DjVuPalette_cpp
> > --- graphics/djvulibre/patches/patch-libdjvu_DjVuPalette_cpp        20 Apr 
> > 2017 01:40:33 -0000      1.1
> > +++ graphics/djvulibre/patches/patch-libdjvu_DjVuPalette_cpp        16 Sep 
> > 2021 21:01:47 -0000
> > @@ -1,11 +1,12 @@
> >  $OpenBSD: patch-libdjvu_DjVuPalette_cpp,v 1.1 2017/04/20 01:40:33 espie 
> > Exp $
> > ---- libdjvu/DjVuPalette.cpp.orig   Thu Apr 20 03:30:12 2017
> > -+++ libdjvu/DjVuPalette.cpp        Thu Apr 20 03:38:11 2017
> > -@@ -98,6 +98,7 @@ inline unsigned char 
> > +Index: libdjvu/DjVuPalette.cpp
> > +--- libdjvu/DjVuPalette.cpp.orig
> > ++++ libdjvu/DjVuPalette.cpp
> > +@@ -99,6 +99,7 @@ inline unsigned char 
> >   umin(unsigned char a, unsigned char b) 
> >   { return (a>b) ? b : a; }
> >   
> >  +#define fmin myfmin
> >   inline float 
> > - fmin(float a, float b) 
> > + fmin(float a, float b)
> >   { return (a>b) ? b : a; }
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVuPort_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DjVuPort_cpp
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DjVuPort_cpp
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ graphics/djvulibre/patches/patch-libdjvu_DjVuPort_cpp   16 Sep 2021 
> > 21:01:47 -0000
> > @@ -0,0 +1,28 @@
> > +$OpenBSD$
> > +
> > +Fix CVE-2021-3500: Stack-Based Buffer Overflow
> > +https://bugzilla.redhat.com/show_bug.cgi?id=1943411
> > +
> > +Index: libdjvu/DjVuPort.cpp
> > +--- libdjvu/DjVuPort.cpp.orig
> > ++++ libdjvu/DjVuPort.cpp
> > +@@ -507,10 +507,19 @@ GP<DjVuFile>
> > + DjVuPortcaster::id_to_file(const DjVuPort * source, const GUTF8String &id)
> > + {
> > +    GPList<DjVuPort> list;
> > ++
> > ++   if (!!opening_id && opening_id == id)
> > ++      G_THROW( ERR_MSG("DjVuPortcaster.recursive_open") );
> > ++   else
> > ++      opening_id = id;
> > ++
> > +    compute_closure(source, list, true);
> > +    GP<DjVuFile> file;
> > +    for(GPosition pos=list;pos;++pos)
> > +       if ((file=list[pos]->id_to_file(source, id))) break;
> > ++
> > ++   opening_id = GUTF8String();
> > ++
> > +    return file;
> > + }
> > + 
> > Index: graphics/djvulibre/patches/patch-libdjvu_DjVuPort_h
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_DjVuPort_h
> > diff -N graphics/djvulibre/patches/patch-libdjvu_DjVuPort_h
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ graphics/djvulibre/patches/patch-libdjvu_DjVuPort_h     16 Sep 2021 
> > 21:01:47 -0000
> > @@ -0,0 +1,16 @@
> > +$OpenBSD$
> > +
> > +Fix CVE-2021-3500: Stack-Based Buffer Overflow
> > +https://bugzilla.redhat.com/show_bug.cgi?id=1943411
> > +
> > +Index: libdjvu/DjVuPort.h
> > +--- libdjvu/DjVuPort.h.orig
> > ++++ libdjvu/DjVuPort.h
> > +@@ -484,6 +484,7 @@ class DJVUAPI DjVuPortcaster (private)
> > +                        const DjVuPort *dst, int distance);
> > +    void compute_closure(const DjVuPort *src, GPList<DjVuPort> &list,
> > +                         bool sorted=false);
> > ++   GUTF8String opening_id;
> > + };
> > + 
> > + 
> > Index: graphics/djvulibre/patches/patch-libdjvu_GBitmap_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_GBitmap_cpp
> > diff -N graphics/djvulibre/patches/patch-libdjvu_GBitmap_cpp
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ graphics/djvulibre/patches/patch-libdjvu_GBitmap_cpp    16 Sep 2021 
> > 21:01:47 -0000
> > @@ -0,0 +1,17 @@
> > +$OpenBSD$
> > +
> > +Fix CVE-2021-32493: Integer Overflow Leading to Heap Buffer Overflow
> > +https://sourceforge.net/p/djvu/djvulibre-git/ci/cd8b5c97b27a5c1dc83046498b6ca49ad20aa9b6
> > +
> > +Index: libdjvu/GBitmap.cpp
> > +--- libdjvu/GBitmap.cpp.orig
> > ++++ libdjvu/GBitmap.cpp
> > +@@ -1284,6 +1284,8 @@ GBitmap::decode(unsigned char *runs)
> > +   // initialize pixel array
> > +   if (nrows==0 || ncolumns==0)
> > +     G_THROW( ERR_MSG("GBitmap.not_init") );
> > ++  if (ncolumns + border != (unsigned short)(ncolumns+border))
> > ++    G_THROW("GBitmap: image size exceeds maximum (corrupted file?)");
> > +   bytes_per_row = ncolumns + border;
> > +   if (runs==0)
> > +     G_THROW( ERR_MSG("GBitmap.null_arg") );
> > Index: graphics/djvulibre/patches/patch-libdjvu_IW44Image_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-libdjvu_IW44Image_cpp
> > diff -N graphics/djvulibre/patches/patch-libdjvu_IW44Image_cpp
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ graphics/djvulibre/patches/patch-libdjvu_IW44Image_cpp  16 Sep 2021 
> > 21:01:47 -0000
> > @@ -0,0 +1,22 @@
> > +$OpenBSD$
> > +
> > +Fix CVE-2021-32490: out of bounds write
> > +https://sourceforge.net/p/djvu/djvulibre-git/ci/cd8b5c97b27a5c1dc83046498b6ca49ad20aa9b6
> > +
> > +Index: libdjvu/IW44Image.cpp
> > +--- libdjvu/IW44Image.cpp.orig
> > ++++ libdjvu/IW44Image.cpp
> > +@@ -676,9 +676,13 @@ IW44Image::Map::image(signed char *img8, int rowsize, 
> > +   // Allocate reconstruction buffer
> > +   short *data16;
> > +   size_t sz = bw * bh;
> > ++  if (sz == 0)
> > ++    G_THROW("IW44Image: image size is zero (corrupted file?)");
> > +   if (sz / (size_t)bw != (size_t)bh) // multiplication overflow
> > +     G_THROW("IW44Image: image size exceeds maximum (corrupted file?)");
> > +   GPBuffer<short> gdata16(data16,sz);
> > ++  if (data16 == 0)
> > ++    G_THROW("IW44Image: unable to allocate image buffer");
> > +   // Copy coefficients
> > +   int i;
> > +   short *p = data16;
> > Index: graphics/djvulibre/patches/patch-libdjvu_miniexp_cpp
> > ===================================================================
> > RCS file: /cvs/ports/graphics/djvulibre/patches/patch-libdjvu_miniexp_cpp,v
> > retrieving revision 1.2
> > diff -u -p -r1.2 patch-libdjvu_miniexp_cpp
> > --- graphics/djvulibre/patches/patch-libdjvu_miniexp_cpp    12 May 2015 
> > 16:10:27 -0000      1.2
> > +++ graphics/djvulibre/patches/patch-libdjvu_miniexp_cpp    16 Sep 2021 
> > 21:01:47 -0000
> > @@ -1,7 +1,8 @@
> >  $OpenBSD: patch-libdjvu_miniexp_cpp,v 1.2 2015/05/12 16:10:27 shadchin Exp 
> > $
> > ---- libdjvu/miniexp.cpp.orig       Wed Feb 11 09:35:37 2015
> > -+++ libdjvu/miniexp.cpp    Sat Mar 28 21:24:09 2015
> > -@@ -1241,7 +1241,7 @@ static int stdio_fputs(miniexp_io_t *io, const char 
> > *s
> > +Index: libdjvu/miniexp.cpp
> > +--- libdjvu/miniexp.cpp.orig
> > ++++ libdjvu/miniexp.cpp
> > +@@ -1300,7 +1300,7 @@ static int stdio_fputs(miniexp_io_t *io, const char 
> > *s
> >   
> >   static int true_stdio_fgetc(miniexp_io_t *io) {
> >     FILE *f = (io->data[0]) ? (FILE*)(io->data[0]) : stdin;
> > Index: graphics/djvulibre/patches/patch-tools_ddjvu_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-tools_ddjvu_cpp
> > diff -N graphics/djvulibre/patches/patch-tools_ddjvu_cpp
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ graphics/djvulibre/patches/patch-tools_ddjvu_cpp        16 Sep 2021 
> > 21:01:47 -0000
> > @@ -0,0 +1,22 @@
> > +$OpenBSD$
> > +
> > +Fix CVE-2021-32491: Integer Overflow Leading to Heap-Based Buffer Overflow
> > +https://sourceforge.net/p/djvu/djvulibre-git/ci/cd8b5c97b27a5c1dc83046498b6ca49ad20aa9b6
> > +
> > +Index: tools/ddjvu.cpp
> > +--- tools/ddjvu.cpp.orig
> > ++++ tools/ddjvu.cpp
> > +@@ -393,8 +393,11 @@ render(ddjvu_page_t *page, int pageno)
> > +   } else if (style == DDJVU_FORMAT_GREY8)
> > +     rowsize = rrect.w;
> > +   else
> > +-    rowsize = rrect.w * 3; 
> > +-  if (! (image = (char*)malloc(rowsize * rrect.h)))
> > ++    rowsize = rrect.w * 3;
> > ++  size_t bufsize = (size_t)rowsize * rrect.h;
> > ++  if (bufsize / rowsize != rrect.h)
> > ++    die(i18n("Integer overflow when allocating image buffer for page 
> > %d"), pageno);
> > ++  if (! (image = (char*)malloc(bufsize)))
> > +     die(i18n("Cannot allocate image buffer for page %d"), pageno);
> > + 
> > +   /* Render */
> > Index: graphics/djvulibre/patches/patch-tools_djvused_cpp
> > ===================================================================
> > RCS file: graphics/djvulibre/patches/patch-tools_djvused_cpp
> > diff -N graphics/djvulibre/patches/patch-tools_djvused_cpp
> > --- graphics/djvulibre/patches/patch-tools_djvused_cpp      2 Mar 2016 
> > 20:10:36 -0000       1.1
> > +++ /dev/null       1 Jan 1970 00:00:00 -0000
> > @@ -1,27 +0,0 @@
> > -$OpenBSD: patch-tools_djvused_cpp,v 1.1 2016/03/02 20:10:36 juanfra Exp $
> > -
> > -"accept documents with duplicate page titles"
> > -
> > -http://sourceforge.net/p/djvu/djvulibre-git/ci/77a4dca8dd3acd0acc1680fa14a352c11084e25d/
> > -https://bitbucket.org/jwilk/pdf2djvu/issues/113/duplicate-page-title-1
> > -
> > ---- tools/djvused.cpp.orig Sun Feb  8 20:39:42 2015
> > -+++ tools/djvused.cpp      Wed Feb  3 01:51:28 2016
> > -@@ -66,6 +66,7 @@
> > - #include "GString.h"
> > - #include "DjVuDocEditor.h"
> > - #include "DjVuDumpHelper.h"
> > -+#include "DjVuMessageLite.h"
> > - #include "BSByteStream.h"
> > - #include "DjVuText.h"
> > - #include "DjVuAnno.h"
> > -@@ -2315,7 +2316,8 @@ execute()
> > -       G_CATCH(ex)
> > -         {
> > -           vprint("Error (%s): %s",
> > --                 (const char*)ToNative(token), ex.get_cause());
> > -+                 (const char*)ToNative(token), 
> > -+                 (const char 
> > *)DjVuMessageLite::LookUpUTF8(ex.get_cause()));
> > -           if (! verbose)
> > -             G_RETHROW;
> > -         }
> > Index: graphics/djvulibre/pkg/PLIST
> > ===================================================================
> > RCS file: /cvs/ports/graphics/djvulibre/pkg/PLIST,v
> > retrieving revision 1.10
> > diff -u -p -r1.10 PLIST
> > --- graphics/djvulibre/pkg/PLIST    1 Jul 2018 18:33:36 -0000       1.10
> > +++ graphics/djvulibre/pkg/PLIST    16 Sep 2021 21:01:47 -0000
> > @@ -22,7 +22,7 @@
> >  include/libdjvu/
> >  include/libdjvu/ddjvuapi.h
> >  include/libdjvu/miniexp.h
> > -lib/libdjvulibre.a
> > +@static-lib lib/libdjvulibre.a
> >  lib/libdjvulibre.la
> >  @lib lib/libdjvulibre.so.${LIBdjvulibre_VERSION}
> >  lib/pkgconfig/ddjvuapi.pc
> > @@ -72,20 +72,19 @@ share/djvu/pubtext/
> >  share/djvu/pubtext/DjVuMessages.dtd
> >  share/djvu/pubtext/DjVuOCR.dtd
> >  share/djvu/pubtext/DjVuXML-s.dtd
> > -share/icons/hicolor/128x128/mimetypes/djvu.png
> > -share/icons/hicolor/16x16/mimetypes/djvu.png
> > +share/icons/hicolor/128x128/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/16x16/mimetypes/image-vnd.djvu.png
> >  share/icons/hicolor/20x20/
> >  share/icons/hicolor/20x20/mimetypes/
> > -share/icons/hicolor/20x20/mimetypes/djvu.png
> > -share/icons/hicolor/22x22/mimetypes/djvu.png
> > -share/icons/hicolor/24x24/mimetypes/djvu.png
> > -share/icons/hicolor/256x256/mimetypes/djvu.png
> > -share/icons/hicolor/32x32/mimetypes/djvu.png
> > -share/icons/hicolor/48x48/mimetypes/djvu.png
> > -share/icons/hicolor/64x64/mimetypes/djvu.png
> > -share/icons/hicolor/72x72/mimetypes/djvu.png
> > -share/icons/hicolor/96x96/mimetypes/djvu.png
> > -share/icons/hicolor/scalable/mimetypes/djvu.svgz
> > -share/mime/packages/djvulibre-mime.xml
> >  @tag gtk-update-icon-cache %D/share/icons/hicolor
> >  @tag update-mime-database
> > +share/icons/hicolor/20x20/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/22x22/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/24x24/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/256x256/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/32x32/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/48x48/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/64x64/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/72x72/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/96x96/mimetypes/image-vnd.djvu.png
> > +share/icons/hicolor/scalable/mimetypes/image-vnd.djvu.svgz
> > 
> 

Reply via email to