Commit 557bd3c26141b5e450de0fada2a27584a386125e

Authored by Jay Berkenbilt
1 parent a5814d93

Start 9.0.0 release notes

Showing 1 changed file with 158 additions and 0 deletions
manual/qpdf-manual.xml
@@ -4277,6 +4277,164 @@ print "\n"; @@ -4277,6 +4277,164 @@ print "\n";
4277 </para> 4277 </para>
4278 <variablelist> 4278 <variablelist>
4279 <varlistentry> 4279 <varlistentry>
  4280 + <term>9.0.0: XXX</term>
  4281 + <listitem>
  4282 + <itemizedlist>
  4283 + <listitem>
  4284 + <para>
  4285 + Incompatible API (source-level) Changes (minor)
  4286 + </para>
  4287 + <itemizedlist>
  4288 + <listitem>
  4289 + <para>
  4290 + The method <function>QUtil::strcasecmp</function> has been
  4291 + renamed to <function>QUtil::str_compare_nocase</function>.
  4292 + This incompatible change is necessary to enable qpdf to
  4293 + build on platforms that define
  4294 + <function>strcasecmp</function> as a macro.
  4295 + </para>
  4296 + </listitem>
  4297 + <listitem>
  4298 + <para>
  4299 + The <function>QPDF::copyForeignObject</function> method has
  4300 + an overloaded version that took a boolean parameter that was
  4301 + not used. If you were using this version, just omit the
  4302 + extra parameter.
  4303 + </para>
  4304 + </listitem>
  4305 + <listitem>
  4306 + <para>
  4307 + There was a version
  4308 + <function>QPDFTokenizer::expectInlineImage</function> that
  4309 + took no arguments. This version has been removed since it
  4310 + caused the tokenizer to return incorrect inline images. A
  4311 + new version was added some time ago that produces correct
  4312 + output. This is a very low level method that doesn't make
  4313 + sense to call outside of qpdf's lexical engine. There are
  4314 + higher level methods for tokenizing content streams.
  4315 + </para>
  4316 + </listitem>
  4317 + </itemizedlist>
  4318 + </listitem>
  4319 + <listitem>
  4320 + <para>
  4321 + Bug Fixes
  4322 + </para>
  4323 + <itemizedlist>
  4324 + <listitem>
  4325 + <para>
  4326 + A small handful of memory issues, assertion failures, and
  4327 + unhandled exceptions that could occur on badly mangled input
  4328 + files have been fixed. Most of these problems were found by
  4329 + Google's OSS-Fuzz project.
  4330 + </para>
  4331 + </listitem>
  4332 + </itemizedlist>
  4333 + </listitem>
  4334 + <listitem>
  4335 + <para>
  4336 + Build Changes
  4337 + </para>
  4338 + <itemizedlist>
  4339 + <listitem>
  4340 + <para>
  4341 + On platforms that support it, qpdf now builds with
  4342 + <option>-fvisibility=hidden</option>. If you build qpdf with
  4343 + your own build system, this is now safe to use. This
  4344 + prevents methods that are not part of the public API from
  4345 + being exported by the shared library, and makes qpdf's ELF
  4346 + shared libraries (used on Linux, MacOS, and most other UNIX
  4347 + flavors) behave more like the Windows DLL. Since the DLL
  4348 + already behaves in much this way, it is unlikely that there
  4349 + are any methods that were accidentally not exported.
  4350 + However, with ELF shared libraries, typeinfo for some
  4351 + classes has to be explicitly exported. If there are problems
  4352 + in dynamically linked code catching exceptions or
  4353 + subclassing, this could be the reason. If you see this,
  4354 + please report a bug at <ulink
  4355 + url="https://github.com/qpdf/qpdf/issues/">pikepdf</ulink>.
  4356 + </para>
  4357 + </listitem>
  4358 + <listitem>
  4359 + <para>
  4360 + QPDF is now compiled with integer conversion and sign
  4361 + conversion warnings enabled. Numerous changes were made to
  4362 + the library to make this safe.
  4363 + </para>
  4364 + </listitem>
  4365 + </itemizedlist>
  4366 + </listitem>
  4367 + <listitem>
  4368 + <para>
  4369 + Library Enhancements
  4370 + </para>
  4371 + <itemizedlist>
  4372 + <listitem>
  4373 + <para>
  4374 + A new namespace <classname>QIntC</classname>, provided by
  4375 + <filename>qpdf/QIntC.hh</filename>, provides safe conversion
  4376 + methods between different integer types. These conversion
  4377 + methods do range checking to ensure that the cast can be
  4378 + performed with no loss of information. Every use of
  4379 + <function>static_cast</function> in the library was
  4380 + inspected to see if it could use one of these safe
  4381 + converters instead. See <xref linkend="ref.casting"/> for
  4382 + additional details.
  4383 + </para>
  4384 + </listitem>
  4385 + <listitem>
  4386 + <para>
  4387 + New methods have been added to <classname>QUtil</classname>
  4388 + for converting back and forth between strings and unsigned
  4389 + integers: <function>uint_to_string</function>,
  4390 + <function>uint_to_string_base</function>,
  4391 + <function>string_to_uint</function>, and
  4392 + <function>string_to_ull</function>.
  4393 + </para>
  4394 + </listitem>
  4395 + <listitem>
  4396 + <para>
  4397 + New methods have been added to
  4398 + <classname>QPDFObjectHandle</classname> that return the
  4399 + value of <classname>Integer</classname> objects as
  4400 + <type>int</type> or <type>unsigned int</type> with range
  4401 + checking and sensible fallback values, and a new method was
  4402 + added to return an unsigned value. This makes it easier to
  4403 + write code that is safe from unintentional data loss.
  4404 + Functions: <function>getUIntValue</function>,
  4405 + <function>getIntVauleAsInt</function>,
  4406 + <function>getUIntValueAsUInt</function>.
  4407 + </para>
  4408 + </listitem>
  4409 + <listitem>
  4410 + <para>
  4411 + A new helper method
  4412 + <function>QUtil::read_file_into_memory</function> was added.
  4413 + </para>
  4414 + </listitem>
  4415 + </itemizedlist>
  4416 + </listitem>
  4417 + <listitem>
  4418 + <para>
  4419 + Other Notes
  4420 + </para>
  4421 + <itemizedlist>
  4422 + <listitem>
  4423 + <para>
  4424 + QPDF has been fully integrated into <ulink
  4425 + url="https://github.com/google/oss-fuzz">Google's OSS-Fuzz
  4426 + project</ulink>. This project exercises code with randomly
  4427 + mutated inputs and is great for discovering hidden security
  4428 + crashes and security issues. Several bugs found by oss-fuzz
  4429 + have already been fixed in qpdf.
  4430 + </para>
  4431 + </listitem>
  4432 + </itemizedlist>
  4433 + </listitem>
  4434 + </itemizedlist>
  4435 + </listitem>
  4436 + </varlistentry>
  4437 + <varlistentry>
4280 <term>8.4.2: May 18, 2019</term> 4438 <term>8.4.2: May 18, 2019</term>
4281 <listitem> 4439 <listitem>
4282 <para> 4440 <para>