aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--manual/qpdf-manual.xml158
1 files changed, 158 insertions, 0 deletions
diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml
index 721ce845..59c452e8 100644
--- a/manual/qpdf-manual.xml
+++ b/manual/qpdf-manual.xml
@@ -4277,6 +4277,164 @@ print "\n";
</para>
<variablelist>
<varlistentry>
+ <term>9.0.0: XXX</term>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Incompatible API (source-level) Changes (minor)
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The method <function>QUtil::strcasecmp</function> has been
+ renamed to <function>QUtil::str_compare_nocase</function>.
+ This incompatible change is necessary to enable qpdf to
+ build on platforms that define
+ <function>strcasecmp</function> as a macro.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <function>QPDF::copyForeignObject</function> method has
+ an overloaded version that took a boolean parameter that was
+ not used. If you were using this version, just omit the
+ extra parameter.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ There was a version
+ <function>QPDFTokenizer::expectInlineImage</function> that
+ took no arguments. This version has been removed since it
+ caused the tokenizer to return incorrect inline images. A
+ new version was added some time ago that produces correct
+ output. This is a very low level method that doesn't make
+ sense to call outside of qpdf's lexical engine. There are
+ higher level methods for tokenizing content streams.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ Bug Fixes
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ A small handful of memory issues, assertion failures, and
+ unhandled exceptions that could occur on badly mangled input
+ files have been fixed. Most of these problems were found by
+ Google's OSS-Fuzz project.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ Build Changes
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ On platforms that support it, qpdf now builds with
+ <option>-fvisibility=hidden</option>. If you build qpdf with
+ your own build system, this is now safe to use. This
+ prevents methods that are not part of the public API from
+ being exported by the shared library, and makes qpdf's ELF
+ shared libraries (used on Linux, MacOS, and most other UNIX
+ flavors) behave more like the Windows DLL. Since the DLL
+ already behaves in much this way, it is unlikely that there
+ are any methods that were accidentally not exported.
+ However, with ELF shared libraries, typeinfo for some
+ classes has to be explicitly exported. If there are problems
+ in dynamically linked code catching exceptions or
+ subclassing, this could be the reason. If you see this,
+ please report a bug at <ulink
+ url="https://github.com/qpdf/qpdf/issues/">pikepdf</ulink>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ QPDF is now compiled with integer conversion and sign
+ conversion warnings enabled. Numerous changes were made to
+ the library to make this safe.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ Library Enhancements
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ A new namespace <classname>QIntC</classname>, provided by
+ <filename>qpdf/QIntC.hh</filename>, provides safe conversion
+ methods between different integer types. These conversion
+ methods do range checking to ensure that the cast can be
+ performed with no loss of information. Every use of
+ <function>static_cast</function> in the library was
+ inspected to see if it could use one of these safe
+ converters instead. See <xref linkend="ref.casting"/> for
+ additional details.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ New methods have been added to <classname>QUtil</classname>
+ for converting back and forth between strings and unsigned
+ integers: <function>uint_to_string</function>,
+ <function>uint_to_string_base</function>,
+ <function>string_to_uint</function>, and
+ <function>string_to_ull</function>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ New methods have been added to
+ <classname>QPDFObjectHandle</classname> that return the
+ value of <classname>Integer</classname> objects as
+ <type>int</type> or <type>unsigned int</type> with range
+ checking and sensible fallback values, and a new method was
+ added to return an unsigned value. This makes it easier to
+ write code that is safe from unintentional data loss.
+ Functions: <function>getUIntValue</function>,
+ <function>getIntVauleAsInt</function>,
+ <function>getUIntValueAsUInt</function>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A new helper method
+ <function>QUtil::read_file_into_memory</function> was added.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ Other Notes
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ QPDF has been fully integrated into <ulink
+ url="https://github.com/google/oss-fuzz">Google's OSS-Fuzz
+ project</ulink>. This project exercises code with randomly
+ mutated inputs and is great for discovering hidden security
+ crashes and security issues. Several bugs found by oss-fuzz
+ have already been fixed in qpdf.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term>8.4.2: May 18, 2019</term>
<listitem>
<para>