]> granicus.if.org Git - php/commitdiff
ext/tidy: add support for the new tidy-html5 library.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 10 Jun 2016 03:00:02 +0000 (23:00 -0400)
committerAnatol Belski <ab@php.net>
Mon, 11 Jul 2016 12:05:43 +0000 (14:05 +0200)
Our existing libtidy support is based on the legacy "HTML tidy"
project. That project now has a successor called tidy-html5, where all
new features and bugfixes happen. Of particular note are the fixes for
two security vulnerabilities, CVE-2015-5522 and CVE-2015-5523.

The API is largely unchanged in the new project (which is truly the
successor of the original -- not a fork), and so it is almost a
drop-in replacement as far as PHP is concerned. However, one file has
changed in the new project: "buffio.h" has been moved to
"tidybuffio.h".

This commit detects the presence of tidybuffio.h at build time, and
then adjusts the import statement in tidy.c accordingly. The result is
a build that works against either the legacy project or the new
tidy-html5 project, although the test suite for the tidy extension now
fails. Those failures are not critical and will be fixed.

Gentoo-Bug: 561452
Gentoo-Bug: 585474
PHP-Bug: 72379

ext/tidy/config.m4
ext/tidy/tidy.c

index ff27bd1aaa9b5f65a9068d82cebec7d7cc4f9350..da9351e99129ac193f9742af39632e7bebc5c45e 100644 (file)
@@ -25,6 +25,14 @@ if test "$PHP_TIDY" != "no"; then
 
   if test -z "$TIDY_DIR"; then
     AC_MSG_ERROR(Cannot find libtidy)
+  else
+    dnl Check for tidybuffio.h (as opposed to simply buffio.h)
+    dnl which indicates that we are building against tidy-html5
+    dnl and not the legacy htmltidy. The two are compatible,
+    dnl except for with regard to this header file.
+    if test -f "$TIDY_INCDIR/tidybuffio.h"; then
+      AC_DEFINE(HAVE_TIDYBUFFIO_H,1,[defined if tidybuffio.h exists])
+    fi
   fi
 
   TIDY_LIBDIR=$TIDY_DIR/$PHP_LIBDIR
index 0537c576c704416b197c178d0f3405012cb4b989..d6461bd5136f3abfe5f5b691540902bd5783f5a1 100644 (file)
 #include "ext/standard/info.h"
 
 #include "tidy.h"
+
+#if HAVE_TIDYBUFFIO_H
+#include "tidybuffio.h"
+#else
 #include "buffio.h"
+#endif
 
 /* compatibility with older versions of libtidy */
 #ifndef TIDY_CALL