debian/0000775000000000000000000000000013457376511007204 5ustar debian/php-pear.dirs0000664000000000000000000000007212300436054011563 0ustar /usr/share/doc/php-pear/PEAR /usr/share/lintian/overrides debian/README.Debian.security0000664000000000000000000000211612300436054013074 0ustar The Debian stable security team does not provide security support for certain configurations known to be inherently insecure. This includes the interpreter itself, extensions, and user scripts written in the PHP language. Most specifically, but not exclusively, the security team will not provide support for the following. * Security issues which are caused by careless programming, such as: - extracting a tar file without first checking the contents; - using unserialize() on untrusted data; - relying on a specific value of short_open_tag. * Vulnerabilities involving any kind of open_basedir violation, as this feature is not considered a security model either by us or by PHP upstream. * Any "works as expected" vulnerabilities, such as "user can cause PHP to crash by writing a malicious PHP script", unless such vulnerabilities involve some kind of higher-level DoS or privilege escalation that would not otherwise be available. PHP upstream has published a statement regarding their view on security and the PHP interpreter: http://www.php.net/security-note.php debian/php5-fpm.logrotate0000664000000000000000000000023012506505025012541 0ustar /var/log/php5-fpm.log { rotate 12 weekly missingok notifempty compress delaycompress postrotate /usr/lib/php5/php5-fpm-reopenlogs endscript } debian/php5-common.docs0000664000000000000000000000022412300436054012177 0ustar CREDITS EXTENSIONS CODING_STANDARDS README.EXT_SKEL README.SELF-CONTAINED-EXTENSIONS README.PHP4-TO-PHP5-THIN-CHANGES debian/README.Debian.security debian/php5-mysqlnd.preinst.extra0000664000000000000000000000017612300436054014262 0ustar dpkg-maintscript-helper mv_conffile /etc/php5/conf.d/10-mysqlnd.ini /etc/php5/mods-available/mysqlnd.ini 5.4.0~rc6-1 -- "$@"; debian/php5-module.bug.script0000775000000000000000000000103012300436054013323 0ustar #!/bin/sh MATCH="^[[:space:]]*($|;)" echo "==== Additional PHP 5 information ====" >&3 echo "" >&3 echo "++++ PHP 5 SAPI (php5query -S): ++++" >&3 /usr/sbin/php5query -S >&3 echo "" >&3 echo "++++ PHP 5 Extensions (php5query -M -v): ++++" >&3 /usr/sbin/php5query -M -v >&3 echo "" >&3 echo "++++ Configuration files: ++++" >&3 for dsoname in @modules@; do inifile=${dsoname}.ini echo "**** /etc/php5/mods-available/$dsoname.ini ****" >&3 grep -Ev "$MATCH" "/etc/php5/mods-available/$dsoname.ini" >&3 echo "" >&3 done debian/extramodulelist0000664000000000000000000000044012300436054012333 0ustar common ZendOpcache opcache 05 zend_extension mysql MySQL mysqli mysql MySQL pdo_mysql mysqlnd MySQL mysql mysqlnd MySQL mysqli mysqlnd MySQL pdo_mysql interbase InterBase/Firebird pdo_firebird odbc ODBC pdo_odbc pgsql PostgreSQL pdo_pgsql sqlite SQLite pdo_sqlite sybase Sybase pdo_dblib debian/php5filter.conf0000664000000000000000000000036012300436054012115 0ustar SetInputFilter PHP SetOutputFilter PHP # Deny access to files without filename (e.g. '.php') Order Deny,Allow Deny from all debian/rules0000775000000000000000000010277712506505025010266 0ustar #!/usr/bin/make -f # Sample debian/rules that uses debhelper. # GNU copyright 1997 by Joey Hess. # # This version is for a hypothetical package that builds an # architecture-dependant package, as well as an architecture-independent # package. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # This has to be exported to make some magic below work. export DH_OPTIONS # Set this flag to 'yes' if you want to disable all modifications breaking abi # compatibility to upstream PHP5_COMPAT=no # enable dpkg build flags DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) export DEB_HOST_MULTIARCH DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) PHP5_SOURCE_VERSION = $(shell dpkg-parsechangelog | grep ^Version | sed "s/Version: //") PHP5_UPSTREAM_VERSION = $(shell echo $(PHP5_SOURCE_VERSION) | sed -e "s/-.*//" -e "s/.*://") PHP5_DEBIAN_REVISION = $(shell echo $(PHP5_SOURCE_VERSION) | sed "s/.*-//") RUN_TESTS = yes ifeq (nocheck,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) $(warning Disabling checks due DEB_BUILD_OPTIONS) RUN_TESTS = no endif ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),hurd-i386 mips mipsel)) $(warning Disabling checks on $(DEB_HOST_ARCH)) RUN_TESTS = no endif ifeq (yes,$(RUN_TESTS)) MYSQL_PORT := $(shell for i in $$(seq 1025 3600 | sort -R); do nc -z localhost $$i || { echo $$i; exit; } ; done) MYSQL_DATA_DIR ?= $(shell readlink -f mysql_db) ifeq (,$(MYSQL_PORT)) $(error Could not find available port for mysql server) endif MYSQL_SOCKET = $(MYSQL_DATA_DIR)/mysql.sock endif ifeq (linux,$(DEB_HOST_ARCH_OS)) CONFIGURE_SYSTEMD = --with-fpm-systemd else CONFIGURE_SYSTEMD = --without-fpm-systemd endif ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),amd64 armel armhf i386 ia64 powerpc)) CONFIGURE_DTRACE_ARGS = --enable-dtrace else CONFIGURE_DTRACE_ARGS = --disable-dtrace endif # specify some options to our patch system QUILT_DIFF_OPTS=-p QUILT_NO_DIFF_TIMESTAMPS=1 export QUILT_DIFF_OPTS QUILT_NO_DIFF_TIMESTAMPS PROG_SENDMAIL = /usr/sbin/sendmail ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O2 else CFLAGS += -O0 endif CFLAGS += -Wall -fsigned-char -fno-strict-aliasing # LFS support ifneq (yes,$(PHP5_COMPAT)) CFLAGS += $(shell getconf LFS_CFLAGS) endif # Enable IEEE-conformant floating point math on alphas (not the default) ifeq (alpha-linux-gnu,$(DEB_HOST_GNU_TYPE)) CFLAGS += -mieee endif # Enable producing of debugging information CFLAGS += -g # some other helpful (for readability at least) shorthand variables PHPIZE_BUILDDIR = debian/php5-dev/usr/lib/php5/build # support new (>= 2.2) and older versions of libtool for backporting ease LIBTOOL_DIRS = /usr/share/libtool/config /usr/share/libtool LTMAIN = $(firstword $(wildcard $(foreach d,$(LIBTOOL_DIRS),$d/ltmain.sh))) LTMAIN_DIR = $(dir $(LTMAIN)) ifeq ($(LTMAIN_DIR), /usr/share/libtool/) LIBTOOL_CONFLICTS:=libtool (>= 2.2) else ifeq ($(LTMAIN_DIR), /usr/share/libtool/config/) LIBTOOL_CONFLICTS:=libtool (<< 2.2) else LIBTOOL_CONFLICTS:=$(error "could not resolve path to ltmain.sh") endif ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) MAKEFLAGS += -j$(NUMJOBS) endif COMMON_CONFIG=--build=$(DEB_BUILD_GNU_TYPE) \ --host=$(DEB_HOST_GNU_TYPE) \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/share/man \ --disable-debug \ --with-regex=php \ --disable-rpath \ --disable-static \ --with-pic \ --with-layout=GNU \ --with-pear=/usr/share/php \ --enable-calendar \ --enable-sysvsem \ --enable-sysvshm \ --enable-sysvmsg \ --enable-bcmath \ --with-bz2 \ --enable-ctype \ --with-db4 \ --without-gdbm \ --with-iconv \ --enable-exif \ --enable-ftp \ --with-gettext \ --enable-mbstring \ --with-pcre-regex=/usr \ --enable-shmop \ --enable-sockets \ --enable-wddx \ --with-libxml-dir=/usr \ --with-zlib \ --with-kerberos=/usr \ --with-openssl=/usr \ --enable-soap \ --enable-zip \ --with-mhash=yes \ --with-system-tzdata \ --with-mysql-sock=/var/run/mysqld/mysqld.sock \ $(CONFIGURE_DTRACE_ARGS) BUILTIN_EXTENSION_CHECK=$$e=get_loaded_extensions(); natcasesort($$e); \ $$s="The following extensions are built in:"; \ foreach($$e as $$i) { $$s .= " $$i"; } \ echo("php:Extensions=" . wordwrap($$s . ".\n", 75, "\$${Newline}")); prepared: prepared-stamp prepared-stamp: dh_testdir sed -i -e 's/EXTRA_VERSION=""/EXTRA_VERSION="-$(PHP5_DEBIAN_REVISION)"/' configure.in ./buildconf --force touch prepared-stamp unprepared: dh_testdir sed -i -e 's/EXTRA_VERSION="-$(PHP5_DEBIAN_REVISION)"/EXTRA_VERSION=""/' configure.in rm -f prepared-stamp test-results.txt: build-apache2-stamp build-cli-stamp build-cgi-stamp ifeq (yes,$(RUN_TESTS)) mkdir -p temp_session_store # start our own mysql server for the tests $(SHELL) -x debian/setup-mysql.sh $(MYSQL_PORT) $(MYSQL_DATA_DIR) extensions=""; \ for f in $(CURDIR)/apache2-build/modules/*.so; do \ ext=`basename "$$f"`; \ test -d "$(CURDIR)/ext/$${ext%.so}/tests" || continue; \ test "$$ext" != "imap.so" || continue; \ test "$$ext" != "interbase.so" || continue; \ test "$$ext" != "ldap.so" || continue; \ test "$$ext" != "odbc.so" || continue; \ test "$$ext" != "pgsql.so" || continue; \ test "$$ext" != "pdo_dblib.so" || continue; \ test "$$ext" != "pdo_firebird.so" || continue; \ test "$$ext" != "pdo_odbc.so" || continue; \ test "$$ext" != "pdo_pgsql.so" || continue; \ test "$$ext" != "snmp.so" || continue; \ test "$$ext" != "opcache.so" || continue; \ extensions="$$extensions -d extension=$$ext"; \ done; \ [ "$$extensions" ] || { echo "extensions list is empty"; exit 1; }; \ env MYSQL_TEST_HOST=127.0.0.1 MYSQL_TEST_PORT=$(MYSQL_PORT) MYSQL_TEST_SOCKET=$(MYSQL_SOCKET) PDO_MYSQL_TEST_HOST=127.0.0.1 PDO_MYSQL_TEST_PORT=$(MYSQL_PORT) PDO_MYSQL_TEST_SOCKET=$(MYSQL_SOCKET) NO_INTERACTION=1 TEST_PHP_CGI_EXECUTABLE=$(CURDIR)/cgi-build/sapi/cgi/cgi-bin.php5 TEST_PHP_EXECUTABLE=$(CURDIR)/cli-build/sapi/cli/php \ $(CURDIR)/cli-build/sapi/cli/php run-tests.php -n -d mysql.default_host=127.0.0.1 -d mysql.default_socket=$(MYSQL_SOCKET) -d mysqli.default_socket=$(MYSQL_SOCKET) -d extension_dir=$(CURDIR)/apache2-build/modules/ $$extensions| tee test-results.txt rm -rf temp_session_store @for test in `find . -name '*.log' -a '!' -name 'config.log' -a '!' -name 'bootstrap.log' -a '!' -name 'run.log'`; do \ echo; \ echo -n "$${test#./}:"; \ cat $$test; \ echo; \ done | tee -a test-results.txt $(SHELL) -x debian/setup-mysql.sh $(MYSQL_PORT) $(MYSQL_DATA_DIR) stop else echo 'nocheck found in DEB_BUILD_OPTIONS or unsupported architecture' | tee test-results.txt endif build: build-apache2-stamp build-apache2filter-stamp build-cgi-stamp build-cli-stamp build-embed-stamp build-fpm-stamp build-pear-stamp test-results.txt build-apache2-stamp: configure-apache2-stamp dh_testdir cd apache2-build && $(MAKE) touch build-apache2-stamp build-apache2filter-stamp: configure-apache2filter-stamp dh_testdir cd apache2filter-build && $(MAKE) touch build-apache2filter-stamp build-cli-stamp: configure-cli-stamp dh_testdir cd cli-build && $(MAKE) touch build-cli-stamp build-embed-stamp: configure-embed-stamp dh_testdir cd embed-build && $(MAKE) touch build-embed-stamp build-fpm-stamp: configure-fpm-stamp dh_testdir cd fpm-build && $(MAKE) touch build-fpm-stamp build-cgi-stamp: configure-cgi-stamp dh_testdir cd cgi-build && $(MAKE) && mv sapi/cgi/php-cgi sapi/cgi/cgi-bin.php5 # Dirty hack to not rebuild everything twice cd cgi-build/main && \ sed -i -e 's/FORCE_CGI_REDIRECT 1/FORCE_CGI_REDIRECT 0/' \ -e 's/DISCARD_PATH 0/DISCARD_PATH 1/' php_config.h && \ sed -i -e 's/--enable-force-cgi-redirect/--enable-discard-path/' build-defs.h && \ touch ../../ext/standard/info.c && \ touch ../../sapi/cgi/cgi_main.c cd cgi-build && $(MAKE) && mv sapi/cgi/php-cgi sapi/cgi/usr.bin.php5-cgi touch build-cgi-stamp build-pear-stamp: build-cgi-stamp dh_testdir -mkdir pear-build -mkdir pear-build-download cd cgi-build && PHP_PEAR_DOWNLOAD_DIR=$(CURDIR)/pear-build-download $(MAKE) install-pear PHP_PEAR_PHP_BIN=/usr/bin/php PHP_PEAR_INSTALL_DIR=/usr/share/php PHP_PEAR_SYSCONF_DIR=/etc/pear PHP_PEAR_SIG_BIN=/usr/bin/gpg INSTALL_ROOT=$(CURDIR)/pear-build sed -i -e 's/-d output_buffering=1 -d open_basedir="" -d safe_mode=0/-d output_buffering=1 -d open_basedir="" -d safe_mode=0 -d memory_limit="-1"/' \ $(CURDIR)/pear-build/usr/bin/pear && \ sed -i -e 's/-d output_buffering=1 -d safe_mode=0/-d output_buffering=1 -d open_basedir="" -d safe_mode=0 -d memory_limit="-1"/' \ $(CURDIR)/pear-build/usr/bin/pecl && \ sed -i -e 's/-d memory_limit="-1"//' \ -e 's/-d output_buffering=1 -d open_basedir="" -d safe_mode=0/-d output_buffering=1 -d open_basedir="" -d safe_mode=0 -d memory_limit="-1"/' \ $(CURDIR)/pear-build/usr/bin/peardev sed -i -re "s#('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR)#\1 . '/pear'#" $(CURDIR)/pear-build/usr/share/php/PEAR/Config.php patch -s -d $(CURDIR)/pear-build/usr/share/php/ -p1 -i $(CURDIR)/debian/patches/PEAR-Builder-print-info-about-php5-dev.patch touch build-pear-stamp configure: configure-apache2-stamp configure-apache2filter-stamp configure-cli-stamp configure-embed-stamp configure-fpm-stamp configure-cgi-stamp configure-apache2-stamp: prepared-stamp dh_testdir if [ -d apache2-build ]; then rm -rf apache2-build; fi -mkdir apache2-build cd apache2-build && \ CFLAGS="$(CFLAGS)" PROG_SENDMAIL="$(PROG_SENDMAIL)" ../configure \ --prefix=/usr --with-apxs2=/usr/bin/apxs2 \ --with-config-file-path=/etc/php5/apache2 \ --with-config-file-scan-dir=/etc/php5/apache2/conf.d \ $(COMMON_CONFIG) \ --without-mm \ --with-curl=shared,/usr \ --with-enchant=shared,/usr \ --with-zlib-dir=/usr \ --with-gd=shared,/usr --enable-gd-native-ttf \ --with-gmp=shared,/usr \ --with-jpeg-dir=shared,/usr \ --with-xpm-dir=shared,/usr/X11R6 \ --with-png-dir=shared,/usr \ --with-freetype-dir=shared,/usr \ --with-vpx-dir=shared,/usr \ --enable-intl=shared \ --without-t1lib \ --with-ldap=shared,/usr \ --with-ldap-sasl=/usr \ --with-mysql=shared,/usr \ --with-mysqli=shared,/usr/bin/mysql_config \ --with-pspell=shared,/usr \ --with-unixODBC=shared,/usr \ --with-recode=shared,/usr \ --with-xsl=shared,/usr \ --with-snmp=shared,/usr \ --with-sqlite3=shared,/usr \ --with-mssql=shared,/usr \ --with-tidy=shared,/usr \ --with-xmlrpc=shared \ --with-pgsql=shared,/usr PGSQL_INCLUDE=`pg_config --includedir` \ --enable-pdo=shared \ --without-pdo-dblib \ --with-pdo-mysql=shared,/usr \ --with-pdo-odbc=shared,unixODBC,/usr \ --with-pdo-pgsql=shared,/usr/bin/pg_config \ --with-pdo-sqlite=shared,/usr \ --with-pdo-dblib=shared,/usr \ $(CONFIGURE_APACHE_ARGS) cd apache2-build && \ cp ../Zend/zend_ini_scanner.c ../Zend/zend_language_scanner.c \ ../Zend/zend_ini_parser.h ../Zend/zend_language_parser.h \ ../Zend/zend_ini_parser.c ../Zend/zend_language_parser.c \ Zend/ touch configure-apache2-stamp configure-apache2filter-stamp: prepared-stamp dh_testdir if [ -d apache2filter-build ]; then rm -rf apache2filter-build; fi -mkdir apache2filter-build cd apache2filter-build && \ CFLAGS="$(CFLAGS)" PROG_SENDMAIL="$(PROG_SENDMAIL)" ../configure \ --prefix=/usr --with-apxs2filter=/usr/bin/apxs2 \ --with-config-file-path=/etc/php5/apache2filter \ --with-config-file-scan-dir=/etc/php5/apache2filter/conf.d \ $(COMMON_CONFIG) \ --without-mm \ --disable-pdo \ --without-mysql --without-sybase-ct --without-mssql \ --without-sqlite3 cd apache2filter-build && \ cp ../Zend/zend_ini_scanner.c ../Zend/zend_language_scanner.c \ ../Zend/zend_ini_parser.h ../Zend/zend_language_parser.h \ ../Zend/zend_ini_parser.c ../Zend/zend_language_parser.c \ Zend/ touch configure-apache2filter-stamp configure-cgi-stamp: prepared-stamp dh_testdir if [ -d cgi-build ]; then rm -rf cgi-build; fi -mkdir cgi-build cd cgi-build && \ CFLAGS="$(CFLAGS)" PROG_SENDMAIL="$(PROG_SENDMAIL)" ../configure \ --prefix=/usr --enable-force-cgi-redirect --enable-fastcgi \ --with-config-file-path=/etc/php5/cgi \ --with-config-file-scan-dir=/etc/php5/cgi/conf.d \ $(COMMON_CONFIG) \ --without-mm \ --enable-pdo=shared \ --enable-mysqlnd=shared \ --with-mysql=shared,mysqlnd \ --with-mysqli=shared,mysqlnd \ --with-pdo-mysql=shared,mysqlnd \ --without-pdo-sqlite \ --without-sybase-ct --without-mssql \ --without-sqlite3 \ --enable-pcntl cd cgi-build && \ cp ../Zend/zend_ini_scanner.c ../Zend/zend_language_scanner.c \ ../Zend/zend_ini_parser.h ../Zend/zend_language_parser.h \ ../Zend/zend_ini_parser.c ../Zend/zend_language_parser.c \ Zend/ touch configure-cgi-stamp configure-cli-stamp: prepared-stamp dh_testdir if [ -d cli-build ]; then rm -rf cli-build; fi -mkdir cli-build cd cli-build && \ CFLAGS="$(CFLAGS)" PROG_SENDMAIL="$(PROG_SENDMAIL)" ../configure \ --prefix=/usr --disable-cgi \ --with-config-file-path=/etc/php5/cli \ --with-config-file-scan-dir=/etc/php5/cli/conf.d \ $(COMMON_CONFIG) \ --without-mm \ --disable-pdo \ --without-mysql --without-sybase-ct \ --without-mssql --without-sqlite3 --enable-pcntl \ --with-libedit=shared,/usr cd cli-build && \ cp ../Zend/zend_ini_scanner.c ../Zend/zend_language_scanner.c \ ../Zend/zend_ini_parser.h ../Zend/zend_language_parser.h \ ../Zend/zend_ini_parser.c ../Zend/zend_language_parser.c \ Zend/ touch configure-cli-stamp configure-embed-stamp: prepared-stamp dh_testdir if [ -d embed-build ]; then rm -rf embed-build; fi -mkdir embed-build cd embed-build && \ CFLAGS="$(CFLAGS)" PROG_SENDMAIL="$(PROG_SENDMAIL)" ../configure \ --prefix=/usr --enable-embed --disable-cgi \ --with-config-file-path=/etc/php5/embed \ --with-config-file-scan-dir=/etc/php5/embed/conf.d \ $(COMMON_CONFIG) \ --without-mm \ --disable-pdo \ --without-mysql --without-sybase-ct \ --without-mssql --without-sqlite3 --enable-pcntl cd embed-build && \ cp ../Zend/zend_ini_scanner.c ../Zend/zend_language_scanner.c \ ../Zend/zend_ini_parser.h ../Zend/zend_language_parser.h \ ../Zend/zend_ini_parser.c ../Zend/zend_language_parser.c \ Zend/ touch configure-embed-stamp configure-fpm-stamp: prepared-stamp dh_testdir if [ -d fpm-build ]; then rm -rf fpm-build; fi -mkdir fpm-build cd fpm-build && \ CFLAGS="$(CFLAGS)" PROG_SENDMAIL="$(PROG_SENDMAIL)" ../configure \ --prefix=/usr --enable-fpm --disable-cgi \ --with-fpm-user=www-data --with-fpm-group=www-data \ --with-config-file-path=/etc/php5/fpm \ --with-config-file-scan-dir=/etc/php5/fpm/conf.d \ $(COMMON_CONFIG) \ --with-libevent-dir=/usr \ --without-mm \ --disable-pdo \ --without-mysql --without-sybase-ct \ --without-mssql --without-sqlite3 \ $(CONFIGURE_SYSTEMD) cd fpm-build && \ cp ../Zend/zend_ini_scanner.c ../Zend/zend_language_scanner.c \ ../Zend/zend_ini_parser.h ../Zend/zend_language_parser.h \ ../Zend/zend_ini_parser.c ../Zend/zend_language_parser.c \ Zend/ touch configure-fpm-stamp clean: unprepared dh_testdir dh_testroot rm -f configure-apache2-stamp build-apache2-stamp rm -f configure-apache2filter-stamp build-apache2filter-stamp rm -f configure-cgi-stamp build-cgi-stamp rm -f configure-cli-stamp build-cli-stamp rm -f configure-embed-stamp build-embed-stamp rm -f configure-fpm-stamp build-fpm-stamp rm -f build-pear-stamp rm -f install-stamp rm -rf apache2-build rm -rf apache2filter-build rm -rf cgi-build rm -rf cli-build rm -rf embed-build rm -rf fpm-build rm -rf pear-build pear-build-download # just in case the build tests failed, kill the running mysqld $(SHELL) debian/setup-mysql.sh $(MYSQL_PORT) $(MYSQL_DATA_DIR) stop > /dev/null 2>&1 || exit 0 rm -rf test-results.txt $(MYSQL_DATA_DIR) dh_clean -Xorig # clean up autogenerated cruft cat debian/modulelist | while read package extname dsoname priority; do \ rm -f debian/php5-$$package.postinst; \ rm -f debian/php5-$$package.preinst; \ rm -f debian/php5-$$package.prerm; \ rm -f debian/php5-$$package.postrm; \ done for sapi in libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-cli libphp5-embed php5-fpm; do \ for cruft in postrm links; do \ rm -f debian/$${sapi}.$${cruft}; \ done; \ done PCNTL_FUNCTIONS := $(shell < ext/pcntl/php_pcntl.h sed -ne "/^PHP_FUNCTION/ s/PHP_FUNCTION(\(.*\));/\1/;t end;d;:end p" | tr '\n' ',') install: DH_OPTIONS= install: build dh_testdir dh_testroot dh_prep dh_installdirs chmod 01733 debian/php5-common/var/lib/php5 # Mangle apache2filter DSO name before running dh_apache2 mv apache2filter-build/.libs/libphp5.so apache2filter-build/.libs/libphp5filter.so # install apache2 DSO module dh_apache2 --conditional=php5_enable # sanitize php.ini file cat php.ini-production | tr "\t" " " | sed -e'/session.gc_probability =/ s/1/0/g;/disable_functions =/ s/$$/ $(PCNTL_FUNCTIONS)/g;' > debian/php5-common/usr/share/php5/php.ini-production cat php.ini-production | tr "\t" " " | sed -e'/memory_limit =/ s/128M/-1/g;/session.gc_probability =/ s/1/0/g' > debian/php5-common/usr/share/php5/php.ini-production.cli cat php.ini-development | tr "\t" " " | sed -e'/session.gc_probability =/ s/1/0/g;/disable_functions =/ s/$$/ $(PCNTL_FUNCTIONS)/g;' > debian/php5-common/usr/share/php5/php.ini-development cp test-results.txt debian/php5-common/usr/share/doc/php5-common/ # Install reportbug for php5 package mkdir -p debian/php5/usr/share/reportbug/php5 install -m644 debian/php5.bug.control debian/php5/usr/share/reportbug/php5/control ln -s ../php5-common/script debian/php5/usr/share/reportbug/php5/script # Install helper shell fragment install -m644 debian/php5-helper $(CURDIR)/debian/php5-common/usr/share/php5/ install -m644 debian/debhelper/php5-maintscript-helper $(CURDIR)/debian/php5-common/usr/share/php5/ # install embed SAPI cd embed-build && make install-headers install-build install-sapi install-programs INSTALL_ROOT=$(CURDIR)/debian/libphp5-embed # install the apache modules' files cd apache2-build && $(MAKE) install-headers install-build install-modules install-programs INSTALL_ROOT=$(CURDIR)/debian/libapache2-mod-php5 # install the headers from cgi-build cd cgi-build && $(MAKE) install-headers INSTALL_ROOT=$(CURDIR)/debian/php5-dev # remove netware and win32 headers that we don't want cd debian/libapache2-mod-php5/usr/include/php5/ && \ $(RM) TSRM/readdir.h \ TSRM/tsrm_config.nw.h TSRM/tsrm_config.w32.h\ TSRM/tsrm_nw.h TSRM/tsrm_win32.h\ Zend/zend_config.nw.h Zend/zend_config.w32.h\ main/config.nw.h main/config.w32.h\ main/win95nt.h # install PEAR cp -a pear-build/* debian/php-pear/ # everything under usr/share/php/data except 'PEAR' is b0rken # and actually needs to be fixed [ ! -f debian/php-pear/usr/share/php/data/Structures_Graph/LICENSE ] || \ $(RM) debian/php-pear/usr/share/php/data/Structures_Graph/LICENSE [ ! -f debian/php-pear/usr/share/php/doc/PEAR/INSTALL ] || \ $(RM) debian/php-pear/usr/share/php/doc/PEAR/INSTALL [ ! -f debian/php-pear/usr/share/php/doc/Structures_Graph/docs/generate.sh ] || \ $(RM) debian/php-pear/usr/share/php/doc/Structures_Graph/docs/generate.sh for f in Structures_Graph/publish.sh Structures_Graph/package.sh \ Structures_Graph/genpackage.xml.pl; do \ $(RM) debian/php-pear/usr/share/php/data/$$f; \ done # we don't want test suites $(RM) -r debian/php-pear/usr/share/php/test/ [ -d debian/php-pear/usr/share/php/doc ] && { \ mkdir -p debian/php-pear/usr/share/doc/php5-common/PEAR; \ mv debian/php-pear/usr/share/php/doc/* \ debian/php-pear/usr/share/doc/php5-common/PEAR/; \ $(RM) -r debian/php-pear/usr/share/php/doc; \ ln -s ../doc/php-pear/PEAR debian/php-pear/usr/share/php/doc; \ echo "Dummy placeholder to prevent the directory's deletion" > \ debian/php-pear/usr/share/doc/php5-common/PEAR/.placeholder; \ } # install extensions ext=`./debian/libapache2-mod-php5/usr/bin/php-config --extension-dir`;\ for i in libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-cli libphp5-embed php5-fpm; do \ mkdir -p debian/$$i/$${ext}; \ done; \ cat debian/modulelist debian/extramodulelist | while read package extname dsoname priority; do \ if [ "$$package" = "mysqlnd" ]; then \ modulepath=cgi-build/modules; \ elif [ "$$package" = "readline" ]; then \ modulepath=cli-build/modules; \ else \ modulepath=debian/libapache2-mod-php5/$${ext}; \ fi; \ if [ -z "$$dsoname" ]; then dsoname=$$package; fi; \ mkdir -p debian/php5-$$package$${ext}; \ install -m 644 -o root -g root \ $${modulepath}/$$dsoname.so \ debian/php5-$$package$${ext}/$$dsoname.so; \ rm $${modulepath}/$$dsoname.so; \ done # install CGI cp cgi-build/sapi/cgi/cgi-bin.php5 debian/php5-cgi/usr/lib/cgi-bin/php5 cp cgi-build/sapi/cgi/usr.bin.php5-cgi debian/php5-cgi/usr/bin/php5-cgi cp cli-build/sapi/cli/php.1 debian/php5-cgi/usr/share/man/man1/php5-cgi.1 # install CLI cp cli-build/sapi/cli/php debian/php5-cli/usr/bin/php5 cp cli-build/sapi/cli/php.1 debian/php5-cli/usr/share/man/man1/php5.1 # install FPM mkdir -p debian/php5-fpm/usr/sbin debian/php5-fpm/usr/share/man/man8/ debian/php5-fpm/etc/php5/fpm/pool.d cp fpm-build/sapi/fpm/php-fpm debian/php5-fpm/usr/sbin/php5-fpm cp fpm-build/sapi/fpm/php-fpm.8 debian/php5-fpm/usr/share/man/man8/php5-fpm.8 # we don't want the pool definitions on the main file itself: sed -r '/('"'"'|\[)www('"'"'|\])/Q' < fpm-build/sapi/fpm/php-fpm.conf > \ debian/php5-fpm/etc/php5/fpm/php-fpm.conf # extract the first pool, called "www," from the config file: sed -nr '/('"'"'|\[)www('"'"'|\])/{h;p;d};x;/www/{x;p}' < fpm-build/sapi/fpm/php-fpm.conf | \ sed -e's{^;listen\.owner{listen.owner{;' \ -e's{^;listen\.group{listen.group{;' \ > debian/php5-fpm/etc/php5/fpm/pool.d/www.conf # install a helper script for checking PHP FPM configuration install -m 755 debian/php5-fpm-checkconf debian/php5-fpm/usr/lib/php5/ install -m 755 debian/php5-fpm-reopenlogs debian/php5-fpm/usr/lib/php5/ # move and install -dev files dh_movefiles --sourcedir=debian/libphp5-embed dh_movefiles --sourcedir=debian/libapache2-mod-php5 rm -rf debian/libphp5-embed/usr/include/ \ debian/libphp5-embed/usr/bin/ rm -rf debian/libapache2-mod-php5/usr/lib/php5/build/ \ debian/libapache2-mod-php5/usr/include/ \ debian/libapache2-mod-php5/usr/bin/ rm -rf debian/libapache2-mod-php5filter/usr/lib/php5/build/ \ debian/libapache2-mod-php5filter/usr/include/ \ debian/libapache2-mod-php5filter/usr/bin/ for i in Makefile.global acinclude.m4 mkdep.awk phpize.m4 scan_makefile_in.awk; do \ chmod 644 debian/php5-dev/usr/lib/php5/build/$$i; \ done mkdir -p debian/php5-dev/usr/share/php5 cp -a ext/skeleton ext/ext_skel debian/php5-dev/usr/share/php5 sed -i 's/skel_dir="skeleton"/skel_dir="\/usr\/share\/php5\/skeleton"/' \ debian/php5-dev/usr/share/php5/ext_skel # shipping duplicate files from other packages is hell for security audits ln -sf /usr/share/misc/config.guess $(PHPIZE_BUILDDIR)/config.guess ln -sf /usr/share/misc/config.sub $(PHPIZE_BUILDDIR)/config.sub ln -sf /usr/share/aclocal/libtool.m4 $(PHPIZE_BUILDDIR)/libtool.m4 ln -sf $(LTMAIN_DIR)ltmain.sh $(PHPIZE_BUILDDIR)/ltmain.sh ln -sf /usr/bin/shtool $(PHPIZE_BUILDDIR)/shtool # make php-dev stuff versioned for i in php-config phpize; do \ mv debian/php5-dev/usr/bin/$$i debian/php5-dev/usr/bin/"$$i"5; \ mv debian/php5-dev/usr/share/man/man1/"$$i".1 debian/php5-dev/usr/share/man/man1/"$$i"5.1; \ done # remove windows devel file rm $(CURDIR)/debian/php5-dev/usr/share/php5/skeleton/skeleton.dsp install -m755 debian/debhelper/dh_* $(CURDIR)/debian/php5-dev/usr/bin install -d -m755 $(CURDIR)/debian/php5-dev/usr/share/debhelper/autoscripts/ install -m644 debian/debhelper/*-php5 $(CURDIR)/debian/php5-dev/usr/share/debhelper/autoscripts/ install -d -m755 $(CURDIR)/debian/php5-dev/usr/share/perl5/Debian/Debhelper/Sequence install -m644 debian/debhelper/php5.pm $(CURDIR)/debian/php5-dev/usr/share/perl5/Debian/Debhelper/Sequence # install common files install -m755 debian/maxlifetime debian/php5-common/usr/lib/php5 install -m755 debian/sessionclean debian/php5-common/usr/lib/php5 install -m755 debian/php5enmod debian/php5-common/usr/sbin/php5enmod ln -s php5enmod debian/php5-common/usr/sbin/php5dismod install -m755 debian/php5query $(CURDIR)/debian/php5-common/usr/sbin/php5query # remove libtool files rm $(CURDIR)/debian/libphp5-embed/usr/lib/php5/libphp5.la mv $(CURDIR)/debian/libphp5-embed/usr/lib/php5/* $(CURDIR)/debian/libphp5-embed/usr/lib/ # install lintian overrides cp debian/php5.lintian-overrides $(CURDIR)/debian/php5-common/usr/share/lintian/overrides/php5-common cp debian/php5-dev.lintian-overrides $(CURDIR)/debian/php5-dev/usr/share/lintian/overrides/php5-dev cp debian/php-pear.lintian-overrides $(CURDIR)/debian/php-pear/usr/share/lintian/overrides/php-pear # install the apport hook install -D -m 644 debian/source_php5.py debian/php5-common/usr/share/apport/package-hooks/source_php5.py # install some generic lintian overrides ext=`debian/php5-dev/usr/bin/php-config5 --extension-dir | cut -b2- `; \ for sapi in php5-cli php5-fpm php5-cgi libapache2-mod-php5 libapache2-mod-php5filter libphp5-embed; do \ mkdir -p $(CURDIR)/debian/"$$sapi"/usr/share/lintian/overrides/; \ sed "s/@sapi@/$$sapi/g;s,@extdir@,$$ext,g" \ < $(CURDIR)/debian/php5-sapi.lintian-overrides | \ grep -E "^$${sapi}: " \ >> $(CURDIR)/debian/"$$sapi"/usr/share/lintian/overrides/"$$sapi"; \ done # directories cleanup: -rmdir -p debian/libapache2-mod-php5/usr/share/man/man1 -find debian/php-pear -type d -exec rmdir --ignore-fail-on-non-empty -p '{}' \; >/dev/null 2>&1 touch install-stamp # Build architecture-independent files here. # Pass -i to all debhelper commands in this target to reduce clutter. binary-indep: DH_OPTIONS=-i binary-indep: build install # Need this version of debhelper for DH_OPTIONS to work. dh_testdir dh_testroot dh_installdocs for package in php5 php-pear; do \ rm -rf debian/$$package/usr/share/doc/$$package; \ ln -s php5-common debian/$$package/usr/share/doc/$$package; \ done dh_link dh_compress -Xphp.ini dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb # Build architecture-dependent files here. binary-arch: build install # Need this version of debhelper for DH_OPTIONS to work. dh_testdir dh_testroot # Do this first so we don't overwrite any debhelper-generated files # # generate the config snippets for various php # modules from the templates. cat debian/modulelist debian/extramodulelist | while read package extname dsoname priority extension; do \ if [ -z "$${dsoname}" ]; then dsoname=$$package; fi; \ if [ -z "$${priority}" ]; then priority=20; fi; \ if [ -z "$${extension}" ]; then extension=extension; fi; \ mkdir -p debian/php5-$$package/usr/share/php5/$$package; \ sed -e"s|@extname@|$${extname}|g; \ s/@dsoname@/$${dsoname}/g; \ s/@extension@/$${extension}/g; \ s/@priority@/$${priority}/g" \ < debian/php5-module.ini \ > debian/php5-$$package/usr/share/php5/$$package/$${dsoname}.ini; \ echo -n "$$dsoname " >> debian/php5-$$package.modules; \ done # generate the maintscripts for various php # modules from the templates. cat debian/modulelist | while read package extname dsoname priority; do \ modules=$$(cat debian/php5-$$package.modules); \ for script in postinst preinst postrm prerm; do \ sed -e"s/@package@/$${package}/g; \ s/@modules@/$${modules}/g; \ /#EXTRA#/ r debian/php5-$${package}.$${script}.extra" \ < debian/php5-module.$${script} \ | sed -e'/#EXTRA#/ d' \ > debian/php5-$${package}.$${script}; \ done; \ cp debian/php5-module.triggers debian/php5-$${package}.triggers; \ rm debian/php5-$$package.modules; \ mkdir -p debian/php5-$$package/usr/share/bug/php5-$$package; \ sed -e"s/@package@/$${package}/g; \ s/@modules@/$${modules}/g;" \ < debian/php5-module.bug.script \ > debian/php5-$$package/usr/share/bug/php5-$$package/script; \ chmod 755 debian/php5-$$package/usr/share/bug/php5-$$package/script; \ cp debian/php5-module.bug.control debian/php5-$$package/usr/share/bug/php5-$$package/control; \ done # likewise, for the different sapi implementations for tmpl in postrm prerm postinst; do \ for sapi in cgi cli fpm; do \ sed -e "s/@sapi@/$${sapi}/g; \ s/@package@/php5-$${sapi}/g; \ /#EXTRA#/ r debian/php5-$${sapi}.$${tmpl}.extra" \ < debian/php5-sapi.$${tmpl} \ | sed -e'/#EXTRA#/ d' \ > debian/php5-$${sapi}.$${tmpl}; \ mkdir -p "$(CURDIR)/debian/php5-$$sapi/usr/share/php5/sapi/"; \ touch "$(CURDIR)/debian/php5-$$sapi/usr/share/php5/sapi/$$sapi"; \ mkdir -p debian/php5-$$sapi/usr/share/bug/php5-$$sapi; \ sed -e "s/@sapi@/$${sapi}/g; \ s/@package@/php5-$${sapi}/g;" \ < debian/php5-sapi.bug.script \ > debian/php5-$$sapi/usr/share/bug/php5-$$sapi/script; \ chmod 755 debian/php5-$$sapi/usr/share/bug/php5-$$sapi/script; \ cp debian/php5-sapi.bug.control debian/php5-$$sapi/usr/share/bug/php5-$$sapi/control; \ done; \ for sapi in embed; do \ sed -e "s/@sapi@/$${sapi}/g; \ s/@package@/libphp5-$${sapi}/g; \ /#EXTRA#/ r debian/libphp5-$${sapi}.$${tmpl}.extra" \ < debian/php5-sapi.$${tmpl} \ | sed -e'/#EXTRA#/ d' \ > debian/libphp5-$${sapi}.$${tmpl}; \ mkdir -p "$(CURDIR)/debian/libphp5-$$sapi/usr/share/php5/sapi/"; \ touch "$(CURDIR)/debian/libphp5-$$sapi/usr/share/php5/sapi/$$sapi"; \ mkdir -p debian/libphp5-$$sapi/usr/share/bug/libphp5-$$sapi; \ sed -e "s/@sapi@/$${sapi}/g; \ s/@package@/libphp5-$${sapi}/g;" \ < debian/php5-sapi.bug.script \ > debian/libphp5-$$sapi/usr/share/bug/libphp5-$$sapi/script; \ chmod 755 debian/libphp5-$$sapi/usr/share/bug/libphp5-$$sapi/script; \ cp debian/php5-sapi.bug.control debian/libphp5-$$sapi/usr/share/bug/libphp5-$$sapi/control; \ done; \ for sapi in "" "filter"; do \ sed -e "s/@sapi@/apache2$${sapi}/g; \ s/@package@/libapache2-mod-php5$${sapi}/g; \ /#EXTRA#/ r debian/libapache2-mod-php5$${sapi}.$${tmpl}.extra" \ < debian/php5-sapi.$${tmpl} \ | sed -e'/#EXTRA#/ d' \ > debian/libapache2-mod-php5$${sapi}.$${tmpl}; \ mkdir -p "$(CURDIR)/debian/libapache2-mod-php5$$sapi/usr/share/php5/sapi/"; \ touch "$(CURDIR)/debian/libapache2-mod-php5$$sapi/usr/share/php5/sapi/apache2$$sapi"; \ mkdir -p debian/libapache2-mod-php5$$sapi/usr/share/bug/libapache2-mod-php5$$sapi; \ sed -e "s/@sapi@/apache2$${sapi}/g; \ s/@package@/libapache2-mod-php5$${sapi}/g;" \ < debian/php5-sapi.bug.script \ > debian/libapache2-mod-php5$$sapi/usr/share/bug/libapache2-mod-php5$$sapi/script; \ chmod 755 debian/libapache2-mod-php5$$sapi/usr/share/bug/libapache2-mod-php5$$sapi/script; \ cp debian/php5-sapi.bug.control debian/libapache2-mod-php5$$sapi/usr/share/bug/libapache2-mod-php5$$sapi/control; \ done; \ done dh_installdocs -s cat debian/modulelist | grep -v common | while read package extname dsoname priority; do \ rm -rf debian/php5-$$package/usr/share/doc/php5-$$package; \ ln -s php5-common debian/php5-$$package/usr/share/doc/php5-$$package; \ done for package in php5-dbg php5-dev php5-cgi php5-cli php5-fpm libapache2-mod-php5 libapache2-mod-php5filter libphp5-embed; do \ rm -rf debian/$$package/usr/share/doc/$$package; \ ln -s php5-common debian/$$package/usr/share/doc/$$package; \ done dh_perl dh_installlogrotate -pphp5-fpm dh_installcron -pphp5-common --name=php5 dh_installchangelogs -pphp5-common NEWS dh_installinit dh_link -s dh_compress -s -Xphp.ini dh_fixperms -s -X/var/lib/php5 dh_strip -s --dbg-package=php5-dbg dh_makeshlibs -s -plibphp5-embed -V 'libphp5-embed (>= 5.5.0)' dh_shlibdeps -s dh_installdeb -s phpapi=`./debian/php5-dev/usr/bin/php-config5 --phpapi`; \ stored=`cat debian/phpapi`; \ if [ "$${phpapi%+lfs}" != "$${stored}" ]; then echo "PHPAPI has changed, please modify debian/phpapi"; exit 1; fi; \ for i in php5-common; do \ echo "php:Provides=phpapi-$${phpapi}" >> debian/$$i.substvars; \ done; \ cat debian/modulelist | while read package extname dsoname priority; do \ echo "php:Depends=phpapi-$${phpapi}" >> debian/php5-$$package.substvars; \ done for i in cgi cli fpm; do \ "$$i"-build/sapi/cli/php -n -r '$(BUILTIN_EXTENSION_CHECK)' \ >> debian/php5-"$$i".substvars; \ done for i in embed; do \ "$$i"-build/sapi/cli/php -n -r '$(BUILTIN_EXTENSION_CHECK)' \ >> debian/libphp5-"$$i".substvars; \ done for i in apache2; do \ "$$i"-build/sapi/cli/php -n -r '$(BUILTIN_EXTENSION_CHECK)' \ >> debian/lib"$$i"-mod-php5.substvars; \ "$$i"filter-build/sapi/cli/php -n -r '$(BUILTIN_EXTENSION_CHECK)' \ >> debian/lib"$$i"-mod-php5filter.substvars; \ done echo "libtool:Conflicts=$(LIBTOOL_CONFLICTS)" >>debian/php5-dev.substvars dh_gencontrol -s dh_md5sums -s dh_builddeb -s binary: binary-arch binary-indep build-arch: build build-indep: build .PHONY: build build-arch build-indep clean binary-indep binary-arch binary install configure debian/php5-module.bug.control0000664000000000000000000000016012300436054013477 0ustar report-with: php5-common php5-cli libphp5-embed libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-fpm debian/source/0000775000000000000000000000000013457356003010476 5ustar debian/source/format0000664000000000000000000000001412300436054011673 0ustar 3.0 (quilt) debian/source/include-binaries0000664000000000000000000000016213457356003013635 0ustar debian/patches/use_updated_install-pear-nozlib.phar.patch ext/exif/tests/bug77563.jpg ext/exif/tests/bug77540.jpg debian/php5-cgi.conf0000664000000000000000000000250012300436054011445 0ustar # This file replaces old system MIME types and sets them only in the # Apache webserver # application/x-httpd-php phtml pht php # application/x-httpd-php3 php3 # application/x-httpd-php4 php4 # application/x-httpd-php5 php SetHandler application/x-httpd-php # application/x-httpd-php-source phps SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Order Deny,Allow Deny from all # Deny access to files without filename (e.g. '.php') Order Deny,Allow Deny from all # To enable PHP CGI site-wide, just uncomment following lines, however # as a security measure, it's recommended to enable PHP just in the # specific virtual servers or just specific directories #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # # AllowOverride None # Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch # Order allow,deny # Allow from all # #Action application/x-httpd-php /cgi-bin/php5 debian/php5-sapi.postrm0000664000000000000000000000132112300436054012236 0ustar #!/bin/sh set -e #EXTRA# php5_enable() { return 0; } if [ "$1" = "purge" ]; then phpini=/etc/php5/@sapi@/php.ini # remove the flag to remember the original state if [ -e /etc/php5/@sapi@/.start ]; then rm -f /etc/php5/@sapi@/.start fi for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist; do rm -f $phpini$ext done rm -f $phpini if which ucf >/dev/null; then ucf --purge $phpini fi if which ucfr >/dev/null; then ucfr --purge @package@ $phpini fi fi if [ -e /usr/share/php5/php5-maintscript-helper ]; then . /usr/share/php5/php5-maintscript-helper mods=$(php5query -M) for mod in $mods; do php5_invoke dismod @sapi@ $mod done fi #DEBHELPER# exit 0 debian/php5-fpm.preinst0000664000000000000000000000021712300436054012227 0ustar #!/bin/sh set -e dpkg-maintscript-helper mv_conffile /etc/php5/fpm/main.conf /etc/php5/fpm/php-fpm.conf 5.3.5-1 -- "$@" #DEBHELPER# exit 0 debian/php5.bug.control0000664000000000000000000000002712300436054012216 0ustar Submit-As: php5-common debian/watch0000664000000000000000000000034012300436054010213 0ustar version=3 opts=downloadurlmangle=s#/a/#/this/#,\ filenamemangle=s#/get/(php-(5\.[0-9\.]*)\.tar\.gz)/.*#$1#,\ dversionmangle=s/\+dfsg$// \ http://www.php.net/downloads.php /get/php-(5\.[0-9\.]*)\.tar\.gz/from/a/mirror debian debian/php5-mysqlnd.postrm.extra0000664000000000000000000000017612300436054014122 0ustar dpkg-maintscript-helper mv_conffile /etc/php5/conf.d/10-mysqlnd.ini /etc/php5/mods-available/mysqlnd.ini 5.4.0~rc6-1 -- "$@"; debian/control0000664000000000000000000005367012300437522010604 0ustar Source: php5 Section: php Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Debian PHP Maintainers Uploaders: Ondřej Surý , Sean Finney , Thijs Kinkhorst , Lior Kaplan Build-Depends: apache2-dev (>= 2.4), dh-apache2, libsystemd-daemon-dev [linux-any], autoconf (>= 2.63), automake (>= 1.11) | automake1.11, bison, chrpath, debhelper (>= 5), dpkg-dev (>= 1.16.1~), flex, freetds-dev, libapr1-dev (>= 1.2.7-8), libbz2-dev, libcurl4-openssl-dev | libcurl-dev, libdb-dev, libedit-dev (>= 2.11-20080614-4), libenchant-dev, libevent-dev (>= 1.4.11), libexpat1-dev (>= 1.95.2-2.1), libfreetype6-dev, libgcrypt11-dev, libgd-dev | libgd2-dev, libglib2.0-dev, libgmp3-dev, libicu-dev, libjpeg-dev | libjpeg62-dev, libkrb5-dev, libldap2-dev, libmagic-dev, libmhash-dev (>= 0.8.8), libmysqlclient-dev | libmysqlclient15-dev, libpam0g-dev, libpcre3-dev (>= 6.6), libpng-dev | libpng12-dev, libpq-dev, libpspell-dev, librecode-dev, libsasl2-dev, libsnmp-dev, libsqlite3-dev, libssl-dev, libtidy-dev, libtool (>= 2.2), libwrap0-dev, libxmltok1-dev, libxml2-dev, libxslt1-dev (>= 1.0.18), systemtap-sdt-dev [amd64 i386 powerpc armel armhf ia64], locales-all | language-pack-de, mysql-server, netbase, netcat-openbsd | netcat, re2c, unixodbc-dev, zlib1g-dev, tzdata Build-Conflicts: bind-dev Standards-Version: 3.9.4 Vcs-Git: git://anonscm.debian.org/pkg-php/php.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-php/php.git Homepage: http://www.php.net/ XS-Testsuite: autopkgtest Package: php5 Architecture: all Depends: ${misc:Depends}, libapache2-mod-php5 (>= ${source:Version}) | libapache2-mod-php5filter (>= ${source:Version}) | php5-cgi (>= ${source:Version}) | php5-fpm (>= ${source:Version}), php5-common (>= ${source:Version}) Description: server-side, HTML-embedded scripting language (metapackage) This package is a metapackage that, when installed, guarantees that you have at least one of the four server-side versions of the PHP5 interpreter installed. Removing this package won't remove PHP5 from your system, however it may remove other packages that depend on this one. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-common Architecture: any Depends: ${misc:Depends}, ${shlibs:Depends}, sed (>= 4.1.1-1), psmisc (>= 22.15-1~), lsof [!kfreebsd-any !hurd-any], ucf, php5-json Provides: php5-mhash, ${php:Provides} Conflicts: php5-mhash Suggests: php5-user-cache Breaks: php5-xdebug (<< 2.2.2), php-apc (<< 4.0.0), php5-xcache (<< 3.1~), php5-suhosin (<< 0.9.34), php5-json (<< 1.3.1-1~), php-crypt-gpg (<< 1.3.2) Description: Common files for packages built from the php5 source This package contains the documentation and example files relevant to all the other packages built from the php5 source. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: libapache2-mod-php5 Section: httpd Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, apache2 (>= 2.4), mime-support, php5-common (= ${binary:Version}), libmagic1, ucf, tzdata Conflicts: libapache2-mod-php4, libapache2-mod-php5filter Provides: ${php:Provides} Recommends: php5-cli Suggests: php-pear Description: server-side, HTML-embedded scripting language (Apache 2 module) This package provides the PHP5 module for the Apache 2 webserver (as found in the apache2-mpm-prefork package). Please note that this package ONLY works with Apache's prefork MPM, as it is not compiled thread-safe. . ${php:Extensions} . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: libapache2-mod-php5filter Section: httpd Priority: extra Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, apache2 (>= 2.4), mime-support, php5-common (= ${binary:Version}), libmagic1, ucf, tzdata Conflicts: libapache2-mod-php4, libapache2-mod-php5 Provides: ${php:Provides} Suggests: php-pear Description: server-side, HTML-embedded scripting language (apache 2 filter module) This package provides the PHP5 Filter module for the Apache 2 webserver (as found in the apache2-mpm-prefork package). Please note that this package ONLY works with Apache's prefork MPM, as it is not compiled thread-safe. . Unless you specifically need filter-module support, you most likely should instead install libapache2-mod-php5. . ${php:Extensions} . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-cgi Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, mime-support, php5-common (= ${binary:Version}), libmagic1, ucf, tzdata Provides: ${php:Provides} Suggests: php-pear Description: server-side, HTML-embedded scripting language (CGI binary) This package provides the /usr/lib/cgi-bin/php5 CGI interpreter built for use in Apache 2 with mod_actions, or any other CGI httpd that supports a similar mechanism. Note that MOST Apache users probably want the libapache2-mod-php5 package. . ${php:Extensions} . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-cli Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, mime-support, php5-common (= ${binary:Version}), libmagic1, ucf, tzdata, libedit2 (>= 2.11-20080614-4) Provides: ${php:Provides} Recommends: php5-readline Suggests: php-pear Description: command-line interpreter for the php5 scripting language This package provides the /usr/bin/php5 command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . ${php:Extensions} . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-fpm Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, mime-support, php5-common (= ${binary:Version}), libmagic1, ucf, tzdata Provides: ${php:Provides} Suggests: php-pear Pre-Depends: dpkg (>= 1.15.7.2~) Description: server-side, HTML-embedded scripting language (FPM-CGI binary) This package provides the Fast Process Manager interpreter that runs as a daemon and receives Fast/CGI requests. Note that MOST Apache users probably want the libapache2-mod-php5 package. . ${php:Extensions} . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: libphp5-embed Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, mime-support, php5-common (= ${binary:Version}), libmagic1, ucf, tzdata Provides: ${php:Provides} Suggests: php-pear Priority: optional Description: HTML-embedded scripting language (Embedded SAPI library) This package provides the library /usr/lib/libphp5.so which can be used by application developers to embed PHP scripting functionality. . ${php:Extensions} . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . WARNING: The embed SAPI is experimental and there's no guarantee that the API/ABI will be kept compatible even between minor releases. You have been warned. Package: php5-dev Depends: ${misc:Depends}, autoconf (>= 2.63), automake (>= 1.11), libssl-dev, libtool (>= 2.2), shtool, php5-common (>= ${binary:Version}), ${perl:Depends} Conflicts: ${libtool:Conflicts} Architecture: any Provides: dh-php5 Recommends: pkg-php-tools Description: Files for PHP5 module development This package provides the files from the PHP5 source needed for compiling additional modules. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-dbg Depends: ${misc:Depends}, php5-common (= ${binary:Version}), libapache2-mod-php5 (= ${binary:Version}) | libapache2-mod-php5filter (= ${binary:Version}) | php5-cgi (= ${binary:Version}) | php5-cli (= ${binary:Version}) | php5-fpm (= ${binary:Version}) | php5-curl (= ${binary:Version}) | php5-enchant (= ${binary:Version}) | php5-gd (= ${binary:Version}) | php5-gmp (= ${binary:Version}) | php5-intl (= ${binary:Version}) | php5-ldap (= ${binary:Version}) | php5-mysql (= ${binary:Version}) | php5-odbc (= ${binary:Version}) | php5-pgsql (= ${binary:Version}) | php5-pspell (= ${binary:Version}) | php5-readline (= ${binary:Version}) | php5-recode (= ${binary:Version}) | php5-snmp (= ${binary:Version}) | php5-sqlite (= ${binary:Version}) | php5-sybase (= ${binary:Version}) | php5-tidy (= ${binary:Version}) | php5-xmlrpc (= ${binary:Version}) | php5-xsl (= ${binary:Version}) Recommends: gdb Section: debug Priority: extra Architecture: any Description: Debug symbols for PHP5 This package provides the debug symbols for PHP5 needed for properly debugging errors in PHP5 with gdb. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php-pear Architecture: all Depends: ${misc:Depends}, php5-common (>= ${source:Version}), php5-cli Recommends: gnupg Conflicts: php-xml-util Suggests: php5-dev Replaces: php4-pear (<< 4:4.4.0-0), php-xml-util Provides: php-xml-util Description: PEAR - PHP Extension and Application Repository This package contains the base PEAR classes for PHP, as well as the PEAR installer. Many PEAR classes are already packaged for Debian, and can be easily identified by names beginning with "php-", such as php-db and php-auth. Note: to build and install precompiled PECL extensions, you will need one of the php development packages installed. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-curl Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: CURL module for php5 CURL is a library for getting files from FTP, GOPHER, HTTP server. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-enchant Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: Enchant module for php5 This package provides a module for the generic spell checking library Enchant, which can use engines such as ispell, aspell and myspells. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-gd Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: GD module for php5 This package provides a module for handling graphics directly from PHP scripts. It supports the PNG, JPEG, XPM formats as well as Freetype/ttf fonts. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-gmp Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: GMP module for php5 This package provides a module for arbitrary precision arithmetic via the GNU Multiple Precision (GMP) Arithmetic Library. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-intl Architecture: any Depends: ${shlibs:Depends}, ${php:Depends}, ${misc:Depends}, php5-common (= ${binary:Version}), ucf Conflicts: php5-idn Replaces: php5-idn Provides: php5-idn Pre-Depends: dpkg (>= 1.15.7.2~) Description: internationalisation module for php5 This package provides a module to ease internationalisation of PHP scripts. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-ldap Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: LDAP module for php5 This package provides a module for LDAP functions in PHP scripts. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-readline Architecture: any Depends: ${shlibs:Depends}, ${php:Depends}, ${misc:Depends}, php5-common (= ${binary:Version}), php5-cli (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: Readline module for php5 This package provides a module for readline functions (based on libedit) in PHP scripts. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-mysql Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Conflicts: php5-mysqli, php5-mysqlnd Replaces: php5-mysqli, php5-mysqlnd Pre-Depends: dpkg (>= 1.15.7.2~) Description: MySQL module for php5 This package provides modules for MySQL database connections directly from PHP scripts. It includes the generic "mysql" module which can be used to connect to all versions of MySQL, an improved "mysqli" module for MySQL version 4.1 or later, and the pdo_mysql module for use with the PHP Data Object extension. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-mysqlnd Architecture: any Priority: extra Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Conflicts: php5-mysqli, php5-mysql Replaces: php5-mysqli, php5-mysql Pre-Depends: dpkg (>= 1.15.7.2~) Description: MySQL module for php5 (Native Driver) This package provides modules for MySQL database connections directly from PHP scripts. It includes the generic "mysql" module which can be used to connect to all versions of MySQL, an improved "mysqli" module for MySQL version 4.1 or later, and the pdo_mysql module for use with the PHP Data Object extension. . This package use the MySQL Native Driver. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-odbc Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: ODBC module for php5 This package provides a module for database access through ODBC drivers. It uses the unixODBC library as an ODBC provider. It also contains the pdo_odbc module, for use with the PHP Data Object extension. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-pgsql Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: PostgreSQL module for php5 This package provides a module for PostgreSQL database connections directly from PHP scripts. It also includes the pdo_pgsql module for use with the PHP Data Object extension. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-pspell Architecture: any Depends: ${shlibs:Depends}, ${php:Depends}, ${misc:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: pspell module for php5 This package provides a module for pspell functions in PHP scripts. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-recode Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: recode module for php5 This package provides a module for recode - character set recoding. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-snmp Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: SNMP module for php5 This package provides a module for SNMP functions in PHP scripts. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-sqlite Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Breaks: roundcube-sqlite (<< 0.7.1-2) Pre-Depends: dpkg (>= 1.15.7.2~) Description: SQLite module for php5 This package provides a module allowing you to use the SQLite self-contained database engine from within your PHP scripts, eliminating the need for a full SQL server installation like MySQL or PostgreSQL. It also includes the pdo_sqlite module, for use with the PHP Data Object extension. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-sybase Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Provides: php5-mssql Pre-Depends: dpkg (>= 1.15.7.2~) Description: Sybase / MS SQL Server module for php5 This package provides a module for Sybase and Microsoft SQL Server database connections directly from PHP scripts. It also includes the pdo_dblib module for use with the PHP Data Object extension. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-tidy Architecture: any Depends: ${shlibs:Depends}, ${php:Depends}, ${misc:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: tidy module for php5 This package provides a module for tidy functions in PHP scripts. . Tidy is an extension based on Libtidy (http://tidy.sf.net/) and allows a PHP developer to clean, repair, and traverse HTML, XHTML, and XML documents -- including ones with embedded scripting languages such as PHP or ASP within them using OO constructs. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-xmlrpc Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: XML-RPC module for php5 This package provides a module for XML-RPC functions in PHP scripts. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. Package: php5-xsl Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${binary:Version}), ucf Pre-Depends: dpkg (>= 1.15.7.2~) Description: XSL module for php5 This package provides a module for XSL using the libxslt XSL parser. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. debian/php5-fpm.service0000664000000000000000000000051112300436054012200 0ustar [Unit] Description=The PHP FastCGI Process Manager After=network.target [Service] Type=notify PIDFile=/var/run/php5-fpm.pid ExecStartPre=/usr/lib/php5/php5-fpm-checkconf ExecStart=/usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target debian/php5-cgi.postrm.extra0000664000000000000000000000036212300436054013172 0ustar dpkg-maintscript-helper mv_conffile /etc/apache2/mods-available/php5_cgi.conf /etc/apache2/conf-available/php5-cgi.conf 5.5.0~beta4-1 -- "$@" dpkg-maintscript-helper rm_conffile /etc/apache2/mods-available/php5_cgi.load 5.5.0~beta4-1 -- "$@" debian/php5-mysqlnd.postinst.extra0000664000000000000000000000036312300436054014457 0ustar if [ "$1" = "configure" ]; then ucf /usr/share/php5/mysqlnd/mysqlnd.ini /etc/php5/mods-available/mysqlnd.ini fi dpkg-maintscript-helper mv_conffile /etc/php5/conf.d/10-mysqlnd.ini /etc/php5/mods-available/mysqlnd.ini 5.4.0~rc6-1 -- "$@"; debian/php-pear.lintian-overrides0000664000000000000000000000011112300436054014252 0ustar php-pear: extra-license-file usr/share/doc/php5-common/PEAR/PEAR/LICENSE debian/libapache2-mod-php5.triggers0000664000000000000000000000004212300436054014352 0ustar interest /etc/php5/apache2/conf.d debian/sessionclean0000664000000000000000000000053312300436054011577 0ustar #!/bin/sh # first find all used files and touch them (hope it's not massive amount of files) [ -x /usr/bin/lsof ] && /usr/bin/lsof -w -l +d "${1}" | awk -- '{ if (NR > 1) { print $9; } }' | xargs -i touch -c {} # find all files older then maxlifetime find "${1}" -depth -mindepth 1 -maxdepth 1 -ignore_readdir_race -type f -cmin "+${2}" -delete debian/libapache2-mod-php5filter.triggers0000664000000000000000000000005012300436054015557 0ustar interest /etc/php5/apache2filter/conf.d debian/php5-sqlite.preinst.extra0000664000000000000000000000011712300436054014067 0ustar dpkg-maintscript-helper rm_conffile /etc/php5/conf.d/sqlite.ini 5.3.9~ -- "$@" debian/php5-module.ini0000664000000000000000000000013012300436054012017 0ustar ; configuration for php @extname@ module ; priority=@priority@ @extension@=@dsoname@.so debian/README.source0000664000000000000000000000333712300436054011352 0ustar == Generation of the php5-dbg package Depends == The following command can be used to generate a heuristic list of packages the php5-dbg package probably needs to Depend on: dh_testdir && egrep '^Package' debian/control | cut '-d ' -f2 | \ egrep -v '(^php5|dbg|dev|common|pear)$' | tr "\n" "|" | sed 's/|$//' |\ sed -r 's/([^|]+)(\||$)/ \1 (= ${binary:Version}) \2/g'; echo == Making some sense out of the configure options == The COMMON_CONFIG variable contains the configure options that are to be used on all the SAPIs. Built-in extensions and other general options should be set here. The shared extensions are built when building the apache2 SAPI and as such they need to be specified there. The calls to configure for the other SAPIs usually only need --without-foo when the extension or feature is otherwise enabled by default. == The *modulelist files == When building a new module (or extension) on an individual binary package, it must be added to the debian/modulelist file. However, if the extension is to be included in an existing binary package, it must be added to the debian/extramodulelist file. The format of these files is: " " E.g. for, if we want the mysql extension to be shipped in the php5-mysql package we use: "mysql MySQL mysql" But we also want mysqli and the PDO in the same package, so we add the following lines to extramoduleslist: "mysql MySQLi mysqli mysql MySQL_PDO pdo_mysql" == More debian/rules foo == * The shared extensions are built under the apache2 target (see above). * The CLI SAPI is built on the build-cli-stamp AND build-cgi-stamp, with different configure options. -- Ondřej Surý , Tue, 27 Nov 2012 17:01:53 +0100 debian/php5-cli.dirs0000664000000000000000000000010012300436054011460 0ustar /etc/php5/cli /etc/php5/cli/conf.d /usr/bin /usr/share/man/man1 debian/php5-sapi.prerm0000664000000000000000000000042312300436054012041 0ustar #!/bin/sh set -e #EXTRA# php5_enable() { return 0; } if [ -e /usr/share/php5/php5-maintscript-helper ]; then . /usr/share/php5/php5-maintscript-helper mods=$(php5query -M) for mod in $mods; do php5_invoke dismod @sapi@ $mod done fi #DEBHELPER# exit 0 debian/php5-sybase.postinst.extra0000664000000000000000000000011712300436054014253 0ustar dpkg-maintscript-helper rm_conffile /etc/php5/conf.d/mssql.ini 5.2.3-1 -- "$@" debian/copyright0000664000000000000000000001661312300436054011127 0ustar This package was debianized by Gergely Madarasz on Tue, 16 Nov 1999 19:33:42 +0100. Previous maintainers of the package also include: Petr Cech , who did a LOT of work on these packages. Adam Conrad , who got a significant chunk of input and help from Steve Langasek and Andres Salomon . The current maintainers can be contacted via the debian php packaging list: pkg-php-maint@lists.alioth.debian.org It was downloaded from www.php.net/version5/downloads Changes: removed ext/dbase dir (non-free) Noteworthy/non-trivial patches: patch: use_embedded_timezonedb.patch contributor: Joe Orton copyright © 2008 Red Hat, Inc. may be used/modified/redistributed under the terms of PHP itself Upstream Authors: The PHP group for PHP5, Andi Gutmans and Zeev Suraski for libzend The file ext/standard/rand.c contains the following clause with a statement that isn't compatible with the DFSG: "The code as Shawn received it included the following notice: Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. When you use this, send an e-mail to with an appropriate reference to your work." However, this requirement has been rescinded by the copyright holder in message <48E334A2.6050301@math.sci.hiroshima-u.ac.jp> to bug #498621. Two different licences apply to this package, one for PHP5, the other for libzend. Both licences are shown here below. -------------------------------------------------------------------- The PHP License, version 3.01 Copyright (c) 1999 - 2010 The PHP Group. All rights reserved. -------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without modification, is permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name "PHP" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact group@php.net. 4. Products derived from this software may not be called "PHP", nor may "PHP" appear in their name, without prior written permission from group@php.net. You may indicate that your software works in conjunction with PHP by saying "Foo for PHP" instead of calling it "PHP Foo" or "phpfoo" 5. The PHP Group may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by the PHP Group. No one other than the PHP Group has the right to modify the terms applicable to covered code created under this License. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes PHP software, freely available from ". THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------- This software consists of voluntary contributions made by many individuals on behalf of the PHP Group. The PHP Group can be contacted via Email at group@php.net. For more information on the PHP Group and the PHP project, please see . PHP includes the Zend Engine, freely available at . -------------------------------------------------------------------- The Zend Engine License, Version 2.00 Copyright (c) 1999-2006 Zend Technologies Ltd. All rights reserved. -------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without modification, is permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The names "Zend" and "Zend Engine" must not be used to endorse or promote products derived from this software without prior permission from Zend Technologies Ltd. For written permission, please contact license@zend.com. 4. Zend Technologies Ltd. may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by Zend Technologies Ltd. No one other than Zend Technologies Ltd. has the right to modify the terms applicable to covered code created under this License. 5. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes the Zend Engine, freely available at http://www.zend.com" 6. All advertising materials mentioning features or use of this software must display the following acknowledgment: "The Zend Engine is freely available at http://www.zend.com" THIS SOFTWARE IS PROVIDED BY ZEND TECHNOLOGIES LTD. ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ZEND TECHNOLOGIES LTD. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------- debian/php5-cgi.preinst0000664000000000000000000000044112300436054012206 0ustar #!/bin/sh set -e #DEBHELPER# dpkg-maintscript-helper mv_conffile /etc/apache2/mods-available/php5_cgi.conf \ /etc/apache2/conf-available/php5-cgi.conf 5.5.0~beta4-1 -- "$@" dpkg-maintscript-helper rm_conffile /etc/apache2/mods-available/php5_cgi.load 5.5.0~beta4-1 -- "$@" exit 0 debian/php5-module.prerm0000664000000000000000000000045012300436054012372 0ustar #!/bin/sh set -e #EXTRA# if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then if [ -e /usr/share/php5/php5-maintscript-helper ] ; then . /usr/share/php5/php5-maintscript-helper for dsoname in @modules@; do php5_invoke dismod ALL ${dsoname} done fi fi #DEBHELPER# exit 0 debian/php5-cgi.NEWS0000664000000000000000000000351512300436054011303 0ustar php5 (5.4.4-5) unstable; urgency=low Please be aware that the mime-support package has dropped non-standard definitions for PHP, which might affect any systems using PHP 5 running as CGI or FastCGI. The following definitions were dropped: application/x-httpd-php phtml pht php application/x-httpd-php-source phps application/x-httpd-php3 php3 application/x-httpd-php3-preprocessed php3p application/x-httpd-php4 php4 application/x-httpd-php5 php5 The php5-cgi package mitigates any known issues by creating a (dummy) apache2 module php5_cgi with a configuration containing handlers for all previously defined extensions. Even though we believe that this configuration should keep your PHP scripts working, it might be a good idea to check your apache2 site-wide configuration as well as any specific PHP configuration for websites running on your system. The new (dummy) php5_cgi configuration uses the SetHandler directive, which might interfere with existing custom configurations such as FastCGI (mod_fcgid or mod_fastcgi). If so, you can reenable the existing functionality of your custom configuration by disabling the php5_cgi module (a2dismod php5_cgi), but you are also advised to check whether your custom configuration is vulnerable to foo.php.jpeg attacks. The php5_cgi configuration snippet can be used as a base - it's important to use the FilesMatch or Files directive to limit the handling to the last extension. As far as we know definitions from the mime-support packages are not used in any other webserver included in Debian, but it might affect any application which relies on system MIME types to interpret PHP files. -- Ondřej Surý Wed, 15 Aug 2012 10:31:31 +0200 debian/phpapi0000664000000000000000000000001112300436054010361 0ustar 20121212 debian/php5-dev.dirs0000664000000000000000000000004612300436054011500 0ustar /usr/bin /usr/share/lintian/overrides debian/modulelist0000664000000000000000000000044112300436325011271 0ustar curl CURL common PDO pdo 10 enchant Enchant gd GD gmp GMP intl Internationalisation ldap LDAP mysql MySQL mysqlnd MySQL mysqlnd 10 odbc ODBC pgsql PostgreSQL pspell pspell readline readline recode recode snmp SNMP sqlite SQLite sqlite3 sybase Sybase mssql tidy tidy xmlrpc XML-RPC xsl XSL debian/php5-common.preinst.extra0000664000000000000000000000017712300436054014064 0ustar if [ -d /var/lib/php5/module/ ]; then cp -a /var/lib/php5/module/ /var/lib/php5/modules/ rm -rf /var/lib/php5/module/ fi debian/php5-dev.prerm0000664000000000000000000000026612300436054011670 0ustar #!/bin/sh set -e if [ "$1" = "remove" -o "$1" = "purge" ]; then for i in php-config phpize; do update-alternatives --remove $i /usr/bin/"$i"5 done fi #DEBHELPER# exit 0 debian/php5-cli.prerm.extra0000664000000000000000000000015312300436054012776 0ustar if [ "$1" = "remove" -o "$1" = "deconfigure" ]; then update-alternatives --remove php /usr/bin/php5 fi debian/php5enmod0000664000000000000000000001433312300436054011013 0ustar #!/bin/sh # # php5enmod - a php5 module manager for Debian # # Copyright 2013 Ondřej Surý # # This program is licensed at your choice under the terms of the GNU General # Public License version 2+ or under the terms of the PHP License 3.01. # # For GPL-2+: # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. # # For PHP 3.01: # This source file is subject to version 3.01 of the PHP license, # that is bundled with this package in the file LICENSE, and is # available through the world-wide-web at the following url: # http://www.php.net/license/3_01.txt # If you did not receive a copy of the PHP license and are unable to # obtain it through the world-wide-web, please send a note to # license@php.net so we can mail you a copy immediately. # set -ue SCRIPT_NAME=${0##*/} QUIET=no NEED_RESTART=no MAINT_MODE=no . /usr/share/php5/php5-helper usage() { [ -n "$@" ] && warning $@ echo "usage: ${SCRIPT_NAME} [ -s ALL|sapi_name ] module_name [ module_name_2 ]" exit 1 } enmods() { local sapis="$1" local mods="$2" local register="$3" local sapi local mod for mod in $mods; do for sapi in $sapis; do enmod_ret=0 enmod $sapi $mod || enmod_ret=$? case $enmod_ret in 0) NEED_RESTART=yes record_state enabled $sapi $mod ;; esac done if [ "$register" = "yes" ]; then mod_registry register $mod fi done } dismods() { local sapis="$1" local mods="$2" local register="$3" local purge="$4" local sapi local mod for mod in $mods; do for sapi in $sapis; do local dismod_ret=0 dismod $sapi $mod $purge || dismod_ret=$? case $dismod_ret in 0) NEED_RESTART=yes record_state disabled $sapi $mod ;; esac done if [ "$purge" = "yes" ]; then remove_state enabled $sapi $mod remove_state disabled $sapi $mod mod_registry unregister $mod elif [ "$register" = "yes" ]; then mod_registry unregister $mod fi done } enmod() { local sapi=$1 local modname=$2 if ! module_exists $modname; then warning "Module $modname ini file doesn't exist under /etc/php5/mods-available" return 1 fi local priority=$(get_priority $sapi $modname) local live_link=$(get_live_link $sapi $modname $priority) local live_link_content=$(get_live_link_content $sapi $modname $priority) module_cleanup $sapi $modname $priority local module_state=0 php5query -q -s $sapi -m $modname || module_state=$? case $module_state in # module enabled, but re-enable the conf.d link just in case 0) ;; # module not yet enabled 1) ;; # module disabled by maintainer script 33) ;; # module disabled by site administrator # enable module only if not running in maintainer mode 32) if [ "$MAINT_MODE" = "yes" ]; then warning "Not enabling the ${modname} module for ${sapi} SAPI since the module" warning "was disabled by local administrator." return 1 fi ;; 34) warning "Not enabling the ${modname} module for ${sapi} SAPI since module symlink" warning "already exists in /etc/php5/${sapi}/conf.d with different content." return 1 ;; # fail if we get any different result *) warning "Unable to get module state, run php5query -s $sapi -m $modname manually" warning "and fix the module state." return 1 esac if [ -d "/etc/php5/$sapi/conf.d" ]; then if [ ! -h "${live_link}" ]; then ln -s "${live_link_content}" "${live_link}" fi else warning "Directory /etc/php5/$sapi/conf.d doesn't exist, not enabling the module" return 1 fi return 0 } dismod() { local sapi=$1 local modname=$2 local purge=$3 if ! module_exists $modname; then if [ "$purge" = "no" ]; then warning "Module $modname ini file doesn't exist under /etc/php5/mods-available" return 1 fi fi local priority=$(get_priority $sapi $modname) local live_link=$(get_live_link $sapi $modname $priority) local live_link_content=$(get_live_link_content $sapi $modname $priority) module_cleanup $sapi $modname $priority local module_state=0 php5query -q -s $sapi -m $modname || module_state=$? case $module_state in # module enabled 0) ;; # module not enabled, but re-remove the link just in case 1|32|33) ;; 34) warning "Not disabling module $modname for $sapi SAPI. The configuration was" warning "modified by local administrator." return 1 ;; # fail if we get any different result *) warning "Unable to get module state, run php5query -s $sapi -m $modname manually" warning "and fix the module state." return 1 esac if [ -d "/etc/php5/$sapi/conf.d" ]; then if [ -h "$live_link" ]; then rm -f "$live_link" fi fi return 0 } sapis= register=no purge=no while getopts pfs:mqr opt; do case $opt in r) register=yes;; s) if [ "$sapis" = "ALL" -o \( "$OPTARG" = "ALL" -a -n "$sapis" \) ]; then warning "You cannot specify ALL and individual sapis" usage fi sapis="${sapis}${sapis:+ }$OPTARG" ;; m) MAINT_MODE=yes;; p) purge=yes;; q) QUIET=yes;; \?) usage;; esac done shift $(expr $OPTIND - 1) mods="" for mod in $@; do mods="${mods}${mods:+ }${mod%%/*}" done if [ "$register" = "no" ]; then sapis="${sapis:-ALL}" if [ "$sapis" = "ALL" ]; then register=yes fi fi if [ "$sapis" = "ALL" ]; then sapis=$(php5query -S) fi [ -z "$mods" ] && usage case "${SCRIPT_NAME}" in php5enmod) enmods "$sapis" "$mods" "$register" ;; php5dismod) dismods "$sapis" "$mods" "$register" "$purge" ;; *) usage ;; esac exit 0 debian/php5query0000775000000000000000000001206112300436054011055 0ustar #!/bin/sh # # php5query - a php5 module manager for Debian # # Copyright 2013 Ondřej Surý # # This program is licensed at your choice under the terms of the GNU General # Public License version 2+ or under the terms of the PHP License 3.01. # # For GPL-2+: # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. # # For PHP 3.01: # This source file is subject to version 3.01 of the PHP license, # that is bundled with this package in the file LICENSE, and is # available through the world-wide-web at the following url: # http://www.php.net/license/3_01.txt # If you did not receive a copy of the PHP license and are unable to # obtain it through the world-wide-web, please send a note to # license@php.net so we can mail you a copy immediately. # set -ue SCRIPT_NAME=${0##*/} QUIET=no . /usr/share/php5/php5-helper usage() { [ -n "$@" ] && warning $@ echo "usage: ${SCRIPT_NAME} [ -q ] -s sapi_name [ -m module_name ] [ -M ] [ -S ]" exit 1 } check_mod() { local sapi=$1 local modname=$2 if ! module_exists $modname; then output "No module matches $modname" return 1 fi local priority=$(get_priority $sapi $modname) local live_link=$(get_live_link $sapi $modname $priority) local live_link_content=$(get_live_link_content $sapi $modname $priority) found=no if [ -e "${live_link}" ] ; then if [ -h "${live_link}" ] ; then local content="$(readlink "${live_link}")" if [ "${content}" = "${live_link_content}" ] ; then found=yes fi fi if [ "$found" != "yes" ]; then output "Module $modname symlink was modified by local administrator." return 34 fi fi local state_dir="$(get_state_dir $sapi)" if [ -e "${state_dir}/enabled_by_admin/$modname" ]; then output "$modname (Enabled for $sapi by local administrator)" return 0 elif [ -e "${state_dir}/enabled_by_maint/$modname" ]; then output "$modname (Enabled for $sapi by maintainer script)" return 0 elif [ -e "${state_dir}/disabled_by_admin/$modname" ]; then output "No module matches $modname (Disabled for $sapi by local administrator)" return 32 elif [ -e "${state_dir}/disabled_by_maint/$modname" ]; then output "No module matches $modname (Disabled for $sapi by maintainer script)" return 33 elif [ "$found" = "yes" ]; then output "$modname (Enabled for $sapi by unknown)" return 0 else output "No module matches $modname" return 1 fi } list_mod() { local verbose=$1 local registry_dir="$(get_registry_dir)" sapis=$(list_sapi) if [ -d "$registry_dir" ]; then for mod in $(list_parts "$registry_dir"); do if [ "$verbose" = "yes" ]; then for sapi in $sapis; do check_mod $sapi $mod done else echo $mod fi done return 0 fi } list_sapi() { local sapi_dir="$(get_sapi_dir)" if [ -d "$sapi_dir" ]; then for sapi in $(list_parts "$sapi_dir"); do echo $sapi; done fi } check_sapi() { local sapi=$1 local sapi_dir="$(get_sapi_dir)" if [ -e "$sapi_dir/$sapi" ]; then return 0 fi return 1 } QUIET=no verbose=no action= sapi= while getopts s:m:SMqv opt; do case $opt in s) if [ -n "$action" ]; then if [ "$action" != "check_mod" ]; then usage "Only one mode of operation can be used at the same time." else action="check_sapi" fi fi sapi="$OPTARG" ;; S) if [ -n "$action" ]; then usage "Only one mode of operation can be used at the same time." fi action="list_sapi" ;; m) if [ -n "$action" -a "$action" != "check_sapi" ]; then usage "Only one mode of operation can be used at the same time." fi action="check_mod" mod="$OPTARG" ;; M) [ -n "$action" ] && usage "Only one mode of operation can be used at the same time." action="list_mod" ;; q) QUIET=yes ;; v) verbose=yes ;; \?) usage "Unknown parameter specified";; esac done shift $(expr $OPTIND - 1) if [ -z "$action" ]; then usage "You need to specify at least one action." fi if [ -n "$sapi" ]; then check_sapi $sapi || usage "Invalid SAPI specified" fi ret=0 case "$action" in check_mod) [ -z "$sapi" ] && usage "You need to specify sapi" check_mod $sapi $mod || ret=$? ;; check_sapi) check_sapi $sapi || ret=$? if [ "$ret" -eq 0 ]; then output "$sapi" fi ;; list_mod) list_mod $verbose || ret=$?;; list_sapi) list_sapi || ret=$?;; *) usage "Unknown action $action" esac exit $ret debian/tests/0000775000000000000000000000000012300436341010326 5ustar debian/tests/cgi0000664000000000000000000000153612300436326011023 0ustar #!/bin/sh set -e # Author: Robie Basak # /etc/apache2/conf-available/php5-cgi.conf should exist. If this is renamed # to /etc/apache2/conf-available/php5-cgi in the future, then this test needs # to be updated. if [ ! -f /etc/apache2/conf-available/php5-cgi.conf ]; then echo "/etc/apache2/conf-available/php5-cgi.conf not found" >&2 exit 1 fi echo "Action application/x-httpd-php /cgi-bin/php5" >> /etc/apache2/conf-available/php5-cgi.conf cat > /var/www/html/hello.php < EOT # Make sure that any mod_php mechanism is disabled, since we want to get CGI # mode here. a2dismod php5 2>/dev/null || true a2enmod actions a2enmod cgi 2>/dev/null a2enconf php5-cgi service apache2 restart 2>/dev/null result=`wget -O- http://localhost/hello.php 2>/dev/null` test "$result" = "Hello, world!" debian/tests/control0000664000000000000000000000024312300436341011730 0ustar Tests: cli Depends: php5-cli Tests: cgi Depends: apache2, php5-cgi Restrictions: needs-root Tests: mod-php Depends: libapache2-mod-php5 Restrictions: needs-root debian/tests/mod-php0000664000000000000000000000075412300436326011626 0ustar #!/bin/sh set -e # Author: Robie Basak cat > /var/www/html/hello.php < EOT # Make sure that any CGI mechanism is disabled, since we want to test mod_php # mode here. a2dismod actions 2>/dev/null || true a2dismod cgi 2>/dev/null || true a2disconf php5-cgi 2>/dev/null || true a2enmod php5 2>/dev/null service apache2 restart 2>/dev/null result=`wget -O- http://localhost/hello.php 2>/dev/null` test "$result" = "Hello, world!" debian/tests/cli0000664000000000000000000000030412300436326011020 0ustar #!/bin/sh set -e # Author: Robie Basak cd "$ADTTMP" cat > hello.php < EOT result=`php5 hello.php` test "$result" = "Hello, world!" debian/php5-helper0000664000000000000000000001112512300436054011241 0ustar #!/bin/sh # # php5enmod - a php5 module manager for Debian # # Copyright 2013 Ondřej Surý # # This program is licensed at your choice under the terms of the GNU General # Public License version 2+ or under the terms of the PHP License 3.01. # # For GPL-2+: # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. # # For PHP 3.01: # This source file is subject to version 3.01 of the PHP license, # that is bundled with this package in the file LICENSE, and is # available through the world-wide-web at the following url: # http://www.php.net/license/3_01.txt # If you did not receive a copy of the PHP license and are unable to # obtain it through the world-wide-web, please send a note to # license@php.net so we can mail you a copy immediately. # warning() { echo "WARNING: ${@}" >&2 } remove_state() { local action=$1 local sapi=$2 local modname=$3 local state_dir="$(get_state_dir $sapi)" rm -f "${state_dir}/${action}_by_admin/$modname" rm -f "${state_dir}/${action}_by_maint/$modname" return 0 } mod_registry() { local action=$1 local modname=$2 local registry_dir="$(get_registry_dir)" local registry_file="$registry_dir/$modname" case $action in register) if [ ! -d "$registry_dir" ]; then mkdir -p "$registry_dir" fi touch "$registry_file" ;; unregister) rm -f "$registry_file" ;; status) if [ -e "$registry_file" ]; then return 0 else return 1 fi ;; *) return 1 ;; esac return 0 } record_state() { local action=$1 local sapi=$2 local modname=$3 local state_dir="/var/lib/php5/modules/${sapi}" local admin_state="${state_dir}/${action}_by_admin/$modname" local maint_state="${state_dir}/${action}_by_maint/$modname" if [ -e "$admin_state" ]; then return fi if [ -e "$maint_state" ]; then if [ "$MAINT_MODE" = "yes" ]; then return else rm "$maint_state" fi fi # cleanup previous state remove_state disabled $sapi $modname remove_state enabled $sapi $modname if [ "$MAINT_MODE" = "yes" ]; then mkdir -p "$(dirname $maint_state)" touch "$maint_state" else mkdir -p "$(dirname $admin_state)" touch "$admin_state" fi return 0 } output() { if [ "$QUIET" != "yes" ]; then echo "$@" fi } get_priority() { local sapi=$1 local modname=$2 local source_ini="/etc/php5/mods-available/${modname}.ini" module_ret=0 module_exists $modname || module_ret=$? if [ "$module_ret" -eq 0 ]; then priority=$(sed -ne "s/^; priority=\([0-9]\+\)$/\\1/p" $source_ini) [ -z "$priority" ] && priority=20 echo $priority return 0 fi return $module_ret } get_live_link() { local sapi=$1 local modname=$2 local priority=$3 echo "/etc/php5/$sapi/conf.d/$priority-$modname.ini" } get_live_link_content() { local sapi=$1 local modname=$2 local priority=$3 echo "../../mods-available/$modname.ini" } module_exists() { local modname=$1 local source_ini="/etc/php5/mods-available/${modname}.ini" if [ ! -r "${source_ini}" ]; then return 1 fi return 0 } module_cleanup() { local sapi=$1 local modname=$2 local priority=$3 if [ -L "/etc/php5/conf.d/$priority-$modname.ini" ]; then rm "/etc/php5/conf.d/$priority-$modname.ini"; fi } get_state_dir() { local sapi=$1 echo "/var/lib/php5/modules/$sapi" return 0 } get_registry_dir() { echo "/var/lib/php5/modules/registry" return 0 } get_sapi_dir() { echo "/usr/share/php5/sapi" return 0 } list_parts() { local dir=$1 local regex=${2:-} local args="! ( -name '*.dpkg-old' -name '*.dpkg-new' -name '*.dpkg-dist' -name '*~' -name '*.bak' -name '*.ucf-old' -name '*.ucf-new' -name '*.ucf-dist' -name '*%' )" if [ -d "$dir" ]; then if [ -n "$regex" ]; then args="${args} -regex '$regex'" fi find "$dir" -mindepth 1 -maxdepth 1 -printf '%f\n' $args return $? else return 1 fi } debian/php5-sybase.postrm.extra0000664000000000000000000000011712300436054013714 0ustar dpkg-maintscript-helper rm_conffile /etc/php5/conf.d/mssql.ini 5.2.3-1 -- "$@" debian/libapache2-mod-php5filter.dirs0000664000000000000000000000015412300436054014677 0ustar /etc/apache2/mods-available /etc/php5/apache2filter /etc/php5/apache2filter/conf.d /usr/lib/apache2/modules debian/php5filter.load0000664000000000000000000000010112300436054012100 0ustar LoadModule php5_module /usr/lib/apache2/modules/libphp5filter.so debian/php5-sapi.bug.script0000775000000000000000000000111012300436054012771 0ustar #!/bin/sh MATCH="^[[:space:]]*($|;)" echo "==== Additional PHP 5 information ====" >&3 echo "" >&3 echo "++++ PHP 5 SAPI (php5query -S): ++++" >&3 /usr/sbin/php5query -S >&3 echo "" >&3 echo "++++ PHP 5 Extensions (php5query -M -v): ++++" >&3 /usr/sbin/php5query -M -v >&3 echo "" >&3 echo "++++ Configuration files: ++++" >&3 "**** /etc/php5/@sapi@/php.ini ****" >&3 grep -Ev "$MATCH" /etc/php5/@sapi@/php.ini >&3 echo "" >&3 find /etc/php5/@sapi@/conf.d/ -name '*.ini' | \ while read CONF; do echo "**** $CONF ****" >&3 grep -Ev "$MATCH" "$CONF" >&3 echo "" >&3 done debian/php5-common.php5.cron.d0000664000000000000000000000077612300436054013321 0ustar # /etc/cron.d/php5: crontab fragment for php5 # This purges session files older than X, where X is defined in seconds # as the largest value of session.gc_maxlifetime from all your php.ini # files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime # Look for and purge old sessions every 30 minutes 09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime) debian/php5-fpm-checkconf0000664000000000000000000000035312300436054012466 0ustar #!/bin/sh set -e errors=$(/usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/php-fpm.conf -t 2>&1 | grep "\[ERROR\]" || true); if [ -n "$errors" ]; then echo "Please fix your configuration file..." echo $errors exit 1 fi exit 0 debian/libapache2-mod-php5.dirs0000664000000000000000000000014012300436054013464 0ustar /etc/apache2/mods-available /etc/php5/apache2 /etc/php5/apache2/conf.d /usr/lib/apache2/modules debian/php5-fpm.init0000664000000000000000000001046312300436054011512 0ustar #!/bin/sh ### BEGIN INIT INFO # Provides: php-fpm php5-fpm # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php5-fpm # Description: Starts The PHP FastCGI Process Manager Daemon ### END INIT INFO # Author: Ondrej Sury PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="PHP5 FastCGI Process Manager" NAME=php5-fpm DAEMON=/usr/sbin/$NAME DAEMON_ARGS="--daemonize --fpm-config /etc/php5/fpm/php-fpm.conf" PIDFILE=/var/run/php5-fpm.pid TIMEOUT=30 SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # Don't run if we are running upstart if init_is_upstart; then exit 1 fi # # Function to check the correctness of the config file # do_check() { /usr/lib/php5/php5-fpm-checkconf || return 1 return 0 } # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS 2>/dev/null \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=QUIT/$TIMEOUT/TERM/5/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/TERM/5/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_check $VERBOSE case "$?" in 0) do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; 1) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; check) do_check yes ;; reload|force-reload) log_daemon_msg "Reloading $DESC" "$NAME" do_reload log_end_msg $? ;; reopen-logs) log_daemon_msg "Reopening $DESC logs" $NAME if start-stop-daemon --stop --signal USR1 --oknodo --quiet \ --pidfile $PIDFILE --exec $DAEMON then log_end_msg 0 else log_end_msg 1 fi ;; restart) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2 exit 1 ;; esac : debian/libapache2-mod-php5.postinst.extra0000664000000000000000000000147712300436054015546 0ustar if [ -e /usr/share/apache2/apache2-maintscript-helper ]; then . /usr/share/apache2/apache2-maintscript-helper php5_enable() { mpm=$(a2query -M) case "$(a2query -M)" in prefork|itk) return 0;; *) if apache2_switch_mpm prefork; then return 0; fi;; esac apache2_msg err "Could not switch to prefork MPM, not enabling php5" return 1 } else echo "Warning: Could not load Apache 2.4 maintainer script helper." php5_enable() { return 1; } fi # we've registered a trigger to handle extension updates. if [ "$1" = "triggered" ] && [ "$2" = "/etc/php5/apache2/conf.d" ]; then if [ -e /usr/share/apache2/apache2-maintscript-helper ]; then . /usr/share/apache2/apache2-maintscript-helper apache2_reload restart fi exit 0 elif [ "$1" != "configure" ]; then exit 0 fi debian/php5-fpm.upstart0000664000000000000000000000104512321265412012246 0ustar # php5-fpm - The PHP FastCGI Process Manager description "The PHP FastCGI Process Manager" author "Ondřej Surý " start on runlevel [2345] stop on runlevel [016] # Precise upstart does not support reload signal, and thus rejects the # job. We'd rather start the daemon, instead of forcing users to # reboot https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1272788 # # reload signal USR2 pre-start exec /usr/lib/php5/php5-fpm-checkconf respawn exec /usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.conf debian/php5-dev.postinst0000664000000000000000000000042612300436054012424 0ustar #!/bin/sh set -e if [ "$1" = "configure" ]; then for i in php-config phpize; do update-alternatives \ --install /usr/bin/"$i" $i /usr/bin/"$i"5 50 \ --slave /usr/share/man/man1/"$i".1.gz "$i".1.gz /usr/share/man/man1/"$i"5.1.gz done fi #DEBHELPER# exit 0 debian/php5-cli.postinst.extra0000664000000000000000000000027012300436054013534 0ustar if [ "$1" = "configure" ]; then update-alternatives \ --install /usr/bin/php php /usr/bin/php5 50 \ --slave /usr/share/man/man1/php.1.gz php.1.gz /usr/share/man/man1/php5.1.gz fidebian/php5-dev.files0000664000000000000000000000017512300436054011644 0ustar usr/bin/php-config usr/bin/phpize usr/share/man/man1/php-config.1 usr/share/man/man1/phpize.1 usr/include usr/lib/php5/build debian/php5-sqlite.postinst.extra0000664000000000000000000000011712300436054014266 0ustar dpkg-maintscript-helper rm_conffile /etc/php5/conf.d/sqlite.ini 5.3.9~ -- "$@" debian/compat0000664000000000000000000000000212300436054010363 0ustar 5 debian/php5-common.README.Debian0000664000000000000000000002200612300436054013367 0ustar Table of Contents: ---------------------------------------------------------------------- * Using PHP 5 with threaded webservers (e.g. apache2-mpm-worker) * Problems starting Apache HTTP Server with PHP 5 * Session storage * Other caveats * PHP 5 and Apache 2 Multiviews (HTTP Content Negotiation) * PHP 5 CGI and Apache HTTP Server * Configuration layout * Timezone data from system timezone database * Further documentation, errata, etc Using PHP 5 with threaded webservers (e.g. apache2-mpm-worker) ---------------------------------------------------------------------- After much back-and-forth with upstream (and even building our packages thread-safe for a while), we're currently admitting defeat on that front, and are NOT building any thread-safe versions of PHP 5 for any webservers. Our recommendation is that, if you need to use a threaded webserver, you should use php5-fpm and interface to your webserver with FastCGI. Problems starting Apache HTTP Server with PHP 5 ---------------------------------------------------------------------- At the time of writing, there are no *known* incompatibilities between any of the PHP 5 modules we ship. However, there have been many bug reports in the past due to dynamically-loaded extensions, and it's possible there are still bugs in the released packages. If Apache fails to start after you install PHP 5, check your list of enabled extensions at the bottom of /etc/php5/apache2/php.ini (and in the per-SAPI configuration directory), and try commenting out or reordering the extensions until you find a combination that works. For example, in the past the mhash extension was incompatible with some other common extensions. To work around this, you could list the mhash extension first in php.ini. If you find an extension-related bug in the Debian packages, and you are willing to help debug the problem, please send us a bug report that lists all enabled PHP 5 extensions (extension=), in the order in which they appear in php.ini, as well as all enabled Apache modules (LoadModule), with version numbers where possible. Session storage ---------------------------------------------------------------------- Session files are stored in /var/lib/php5. For security purposes, this directory is unreadable to non-root users. This means that PHP 5 running from Apache HTTP Server, for example, will not be able to clean up stale session files. Instead, we have a cron job run every 30 minutes that cleans up stale session files; /etc/cron.d/php5. You may need to modify how often this runs, if you've modified session.gc_maxlifetime in your php.ini; otherwise, it may be too lax or overly aggressive in cleaning out stale session files. Other caveats ---------------------------------------------------------------------- Configuration directives extension_dir and include_path should be commented out, unless you need special settings for them so PHP will look in compiled-in paths. If you set them, you should also add appropriate PHP install directories there. PHP 5 and Apache 2 Multiviews (HTTP Content Negotiation) ---------------------------------------------------------------------- Apache 2’s mod_negotiation needs files to have a MIME-Type (amongst others) associated with them in order to be considered for HTTP content negotiation. Per default, the Debian PHP packages use Apache 2 handlers (SetHandler directive) to enable PHP interpretation, while no MIME-Type is being associated with the common PHP file extensions. Thus, by default, the HTTP content negotiation is disabled for PHP file extensions. Possible use cases: 1) You intend to use HTTP content negotiation in order to tidy up URLs: For example, you wanted the file “http://example.org/foo.php” being accessible as “http://example.org/foo”, too. In that case you really shouldn’t abuse mod_negotiation but use mod_rewrite. An example of rewrite-rules, which allow any file ending in “.php” to be accessed without this extension is: RewriteCond "%{REQUEST_FILENAME}" !-f RewriteCond "%{REQUEST_FILENAME}" !-d RewriteRule "^(.*)$" "$1.php" [last] Depending on your setup you may need to set other flags, too, especially “passthrough” or “qsappend”. 2) You really wanted to use HTTP content negotiation on PHP files (be they interpreted or not). An example for this might be, when you have the files http://example.org/foo.php http://example.org/foo.js which both do the same job, but the former is executed as PHP on the server-side, while the later is executed as JavaScript on the client-side. If you really want it, just add MIME type definitions for file extensions you need to your Apache 2 configuration. For example to recognize php and phps extensions you would add: AddType application/x-php php AddType application/x-php-source phps This scenario is really very rarely used (if at all)! PHP 5 CGI and Apache HTTP Server ---------------------------------------------------------------------- In simple cases, what you probably want isn't the php5-cgi package at all, but rather the libapache2-mod-php5 package, which will configure itself on installation and Just Work(tm). However, if you have a need to use the CGI version of PHP 5 with Apache HTTP Server, the following should help get you going, though there are dozens of different ways to do this. The current recommended approach is to install the php5-fpm package and use FastCGI to interface to your webserver. However, you will have to use the libapache2-mod-fastcgi package (from non-free) or a different FastCGI-capable webserver (such as nginx or lighttpd), since the libapache2-mod-fcgid available from the main archive has no way of interacting with external FastCGI servers. Please note that this process will never be made automatic, as php5-cgi is meant to be a webserver-agnostic package that can be used with any httpd, and we don't want it to conflict with the httpd-specific packages such as libapache2-mod-php5. If both were installed side-by-side and both were automatically enabled, the results would be a bit confusing, obviously. You should also be aware that a server deployed in CGI mode is open to several possible vulnerabilities. See the upstream CGI security page to learn how to defend yourself from such attacks: http://www.php.net/manual/en/security.cgi-bin.php To use php5-cgi with Apache HTTP Server: 1) activate php5_cgi module: run 'a2enconf php5-cgi' 2) this will also activate the mod_actions module as a dependency 3) comment out the last block of configuration in the /etc/apache2/mods-enabled/php5_cgi.conf file to enable server-wide PHP 5 CGI or add the mentioned configuration block to one or more virtual hosts or directories. 4) It's advised to not mix-and-match multiple SAPIs (such as php5-cgi along with libapache2-mod-php5) in the same apache2 configuration as it is likely to create unpredictable results. Configuration Layout ---------------------------------------------------------------------- Each SAPI (apache2/apache2filter/cgi/cli/fpm) has a different central configuration file /etc/php5/$SAPI/php.ini. Additionally, each SAPI is configured with the compile-time option --with-config-file-scan-dir=/etc/php5/$SAPI/conf.d which for all SAPIs is actually a symlink pointing to a central directory /etc/php5/conf.d. Any file found in this directory ending in .ini will be treated as a configuration file by the PHP SAPI. The rationale behind this method is that each SAPI can thus be identically configured with a minimal amount of conffile handling, but at the same time if you want to have SAPI-specific configuration, you can just remove the symlink. Note that the usage of the PHP_INI_SCAN_DIR environment variable overrides what is set with --with-config-file-scan-dir and thus the directory /etc/php5/$SAPI/conf.d will no longer be included. Timezone data from system timezone database ---------------------------------------------------------------------- Debian PHP has been patched to use the system wide timezone database from the tzdata package, making sure any updates there are automatically used by PHP as well. Note that this requires that the PHP process has access to /etc/localtime and /usr/share/zoneinfo. For any regular installation this should be the case, but in specific secured environments when reading the timezone database is impossible PHP will give a "Timezone database is corrupt - this should *never* happen!" error. Further documentation, errata, misc. ---------------------------------------------------------------------- Errata and other general information about PHP in Debian can be found in the debian wiki at: http://wiki.debian.org/PHP If after reading the documentation in this file you still have unanswered questions, that's a good next place to go. -- Ondřej Surý , Sun, 5 May 2013 22:00:06 +0200 debian/debhelper/0000775000000000000000000000000012300436054011117 5ustar debian/debhelper/postrm-php50000664000000000000000000000034712300436054013244 0ustar if [ "$1" = "purge" ] ; then if [ -e /usr/share/php5/php5-maintscript-helper ] ; then . /usr/share/php5/php5-maintscript-helper for conf in #NAMES# ; do php5_invoke #HELPER# ALL $conf || #ERROR_HANDLER# done fi fi debian/debhelper/postinst-php50000664000000000000000000000031212300436054013573 0ustar if [ -e /usr/share/php5/php5-maintscript-helper ] ; then . /usr/share/php5/php5-maintscript-helper for conf in #NAMES# ; do php5_invoke #HELPER# ALL $conf || #ERROR_HANDLER# done fi debian/debhelper/dh_php50000775000000000000000000002734612300436054012410 0ustar #! /usr/bin/perl # dh_php5 - PHP 5 configuration helper for debhelper # Copyright (C) 2012 Arno Töll # 2013 Ondřej Surý # # This program is licensed at your choice under the terms of the GNU General # Public License vserion 2+ or under the terms of the Apache Software License # 2.0. # # For GPL-2+: # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # For ASF 2.0: # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. use strict; use File::Find; use Debian::Debhelper::Dh_Lib; =head1 NAME dh_php5 - register configuration snippets to the PHP 5 =cut # auto-generated do not edit our $API = `php-config --phpapi`; our $MODULE_DIR = `php-config --extension-dir`; our $SERVER_VERSION = `php-config --version`; sub php5_api_version { return "phpapi-$API"; } sub php5_version { return ">= $SERVER_VERSION~"; } sub php5_api_installdir { return $MODULE_DIR; } sub php5_conf_installdir { my $type = shift; return "etc/php5/${type}-available/" } =head1 SYNOPSIS B [S>] [S>=I] [B<--error-handler=>I] [B<-n>|B<--noscripts>] =head1 DESCRIPTION B is a debhelper program that is responsible for correctly installing Php5 configuration snippets and setting postinst, prerm and dependencies in Php5 web server modules and web applications. It supports the following configuration types =over 4 =item * PHP 5 modules =item * PHP 5 configuration snippets =back B supports two modes: A limited auto-configuration heuristic or alternatively a configuration file driven approach. If a file named debian/package.php5 exists, actual actions are determined by that file. =head1 OPERATION MODES B can be used in two modes: A configuration file driven approach and a heuristic approach. The configuration driven mode is fully documented in the B section below. This mode is activated by supplying a L configuration file (e.g. debian/I.php5). The alternative is a heuristic mode, in which no files are installed through B. Instead the helper will scan the package installation directory for recognized files and guess their purpose depending on their installation path in the file system. Use with caution. =head1 INVOKATION B is not part of debhelper and might require information available in the php5-dev package. Packages making use of B should declare a build-dependency against the virtual B package. B supports both, called directly from a debian/rules file or as L addon. In the former case the helper should run after L or their respective counter parts in local implementations at earliest. Alternatively it can be used as L addon by invoking it with %: dh $@ --with php5 =head1 FILES =over 4 =item debian/I.php5 =item debian/php5 =back Lists files to be registered with the PHP 5. The file is interpreted as line separated list of installation stanzas, where each entry consists of whitespace separated values conforming to the file semantics below. =head2 FILE SEMANTICS Each line consists of a triple I I [I] where the values are interpreted as follows: =head3 I Denotes the type of file to be installed. Recognized values are B for PHP 5 global configuration snippets and B for PHP 5 modules. =head3 I Is interpreted as existing file name within the source package. No path expansion is effectuated. Just like L, B can not rename files. =head2 GLOBAL CONFIGURATION FILES Global configuration files (determined by the B type) must have a I<.conf> suffix and are installed to I. Moreover, the configuration is activated in the maintainer script at installation time. Such global configuration snippets are supposed to be used by web applications. Such stanzas accept an optional third I which is interpreted as dependency line of alternative web servers the package supports. See I below. B will set dependencies in B<${misc:Recommends}> accordingly when this type of configuration is found. Alternatives from the optional I is incorporated into this dependency line. =head2 MODULES Modules are handled specially and are determined by the B type. Modules can either have a I<.conf> or I<.load> suffix. In that case the file is interpreted as module load file or module configuration file respectively and is installed to I. If the file is ending with a I<.so> suffix it is interpreted as actual module shared object and is installed to the PHP 5 module directory. Moreover, if a I<.load> file is installed the configuration is activated in the maintainer script at installation time. A typical module configuration has two lines, one for the I<.load> file, and one for the I<.so> file, albeit the latter could be installed by upstream's makefile, too. B will set dependencies in B<${misc:Depends}> accordingly when this type of configuration is found. =head1 OPTIONS =over 4 =item B<--error-handler=>I Call the named shell I if running the maintainer script fails. The function should be provided in the F and F scripts, before the B<#DEBHELPER#> token. =item B<-e>, B<--noenable> Install maintainer scripts accordingly, but do not enable the scripts or configuration by default. =item B<-n>, B<--noscripts> Do not modify F/F/F maintainer scripts. =back =head1 NOTES Note that this command is not idempotent. L should be called between invocations of this command. Otherwise, it may cause multiple instances of the same text to be added to maintainer scripts. =head1 EXAMPLES The examples below lists valid entries for a debian/I.php5 file. For example, the two lines below install a fictional I PHP 5 module along a Debian specific I<.ini> file: mod src/foo/mod_foo.so mod debian/foo.ini =head1 SEE ALSO L(8), L(8), L(7), L(1) =head1 AUTHOR This manual and L was written by Arno Toell for Apache 2 and modified for PHP 5 by Ondřej Surý . =cut ## ## main code starts here ## init(options => { "e|noenable" => \$dh{NOENABLE}, }); foreach my $package ((@{$dh{DOPACKAGES}})) { my %PACKAGE_TYPE = ( has_a_module => [], has_a_conf_file => [], dependency_line => "", handler => $dh{ERROR_HANDLER}, ); my $file = pkgfile($package, "php5"); my $tmp = tmpdir($package); my @files_to_register = filedoublearray($file, ".") if $file; foreach my $line (@files_to_register) { my $type = lc(shift @{$line}) if $line->[0]; my $source = shift @{$line} if $line->[0]; my @arguments = map {"$_ "} @{$line}; $type .= "s" unless $type eq "conf"; my $installdir = $tmp . "/" . php5_conf_installdir($type); if ($type eq "mods" or $type eq "conf") { my $basesource = basename($source); if ($type eq "mods") { if ($basesource =~ m/\.ini$/) { my $enablename = $basesource; $enablename =~ s/\.ini$//; push @{$PACKAGE_TYPE{'has_a_module'}}, $enablename; verbose_print("Installing module configuration $enablename into $installdir\n"); } elsif ($basesource =~ m/\.so$/) { my $modinstalldir = $tmp . "/" . php5_api_installdir(); verbose_print("Installing module binary $source into $modinstalldir\n"); if (! -d $modinstalldir) { complex_doit("mkdir","-p", $modinstalldir); complex_doit("chmod","755","$modinstalldir"); } complex_doit("cp", $source, $modinstalldir); next; } error("module: \"$basesource\" needs .so or .ini suffix") if $basesource !~ m/\.(ini|so)/; } if (! -d $installdir) { complex_doit("mkdir","-p",$installdir); complex_doit("chmod","755","$installdir"); } complex_doit("cp",$source,$installdir); complex_doit("chmod","644","$installdir/$basesource"); } else { error("Unknown parameter: $type\n"); } } if (! $file) { # do black magic only if there is no .php5 configuration file find({ no_chdir => 1, wanted => sub { my ($dir, $file) = (dirname($File::Find::name), basename($File::Find::name)); # remove extension my $conf_name = $file; $conf_name =~ s/\.[^.]+$//; if ($dir =~ m#etc/php5/mods-available# and $file =~ m#.(load|conf)$#) { verbose_print("package $package appears to be a web server module\n"); push @{$PACKAGE_TYPE{'has_a_module'}}, $conf_name if $file =~ m/\.load/; } if ($dir =~ m#etc/php5/conf-available# and $file =~ m#.conf$#) { verbose_print("package $package appears to contain a global configuration file \n"); push @{$PACKAGE_TYPE{'has_a_conf_file'}}, $conf_name; } }}, tmpdir($package)); } my @postinst_autoscripts; if ($#{$PACKAGE_TYPE{'has_a_module'}} >= 0) { if ($package !~ m/php5-\w+?/) { warning("Package $package appears to be an PHP 5 module. It should comply to the package naming scheme php5-\n"); } addsubstvar($package, "misc:Depends", php5_api_version()); my $modules = ""; foreach my $module (@{$PACKAGE_TYPE{'has_a_module'}}) { $modules .= "$module "; } push @postinst_autoscripts, ["enmod", $modules]; } if ($#{$PACKAGE_TYPE{'has_a_conf_file'}} >= 0) { $PACKAGE_TYPE{'dependency_line'} .= "| php5"; addsubstvar($package, "misc:Recommends", "php5 (" . php5_version() . ") " . $PACKAGE_TYPE{'dependency_line'} ); my $confs = ""; foreach my $conf (@{$PACKAGE_TYPE{'has_a_conf_file'}}) { $confs .= "$conf "; } if ($confs) { push @postinst_autoscripts, ["enconf", $confs]; } } if (! $dh{NOSCRIPTS}) { foreach my $ref (@postinst_autoscripts) { for my $script_type (qw/postinst prerm postrm/) { if ($script_type eq "postinst" && $dh{NOENABLE}) { next } my %replacements = ( HELPER => $ref->[0], NAMES => $ref->[1], ERROR_HANDLER => $PACKAGE_TYPE{handler} ); if ($script_type eq "prerm" || $script_type eq "postrm") { $replacements{'HELPER'} =~ s/en/dis/; } my $sed_command = ""; foreach my $key (sort keys %replacements) { my $val = $replacements{$key}; # Use a control char as separator for sed, to # reduce escaping issues. Everything else is # passed verbatim, i.e. it must not contain any # shell or sed special characters. my $sep = "\x17"; $sed_command .= "s" . $sep . "#$key#" . $sep . $val . $sep . "g; "; } autoscript($package, "$script_type", "$script_type-php5", $sed_command); } } } } # vim: syntax=perl sw=8 sts=8 sr noet debian/debhelper/prerm-php50000664000000000000000000000040512300436054013040 0ustar if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ] ; then if [ -e /usr/share/php5/php5-maintscript-helper ] ; then . /usr/share/php5/php5-maintscript-helper for conf in #NAMES# ; do php5_invoke #HELPER# ALL $conf || #ERROR_HANDLER# done fi fi debian/debhelper/php5-maintscript-helper0000664000000000000000000002160412300436054015531 0ustar # php5-maintscript-helper - Php5 helper function for maintainer scripts # Copyright (C) 2012 Arno Töll # 2013 Ondřej Surý # # Permission is hereby granted, free of charge, to any person obtaining a copy of # this software and associated documentation files (the "Software"), to deal in # the Software without restriction, including without limitation the rights to # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of # the Software, and to permit persons to whom the Software is furnished to do so, # subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # VARIABLES # # global environment variables used by php5-maintscript-helper: # * PHP5_MAINTSCRIPT_DEBUG: # set this to any non-zero value to get debug output # * PHP5_MAINTSCRIPT_HELPER_QUIET: # set this to any non-zero value to omit any output # * EXPORT_PHP5_MAINTSCRIPT_HELPER: # will be defined by php5-maintscript-helper # to avoid inclusion loops. Do not set this # variable manually # * PHP5_NEED_ACTION: # will be defined if a function call wants to # override the behavior of php5_needs_action. # Do not rely on this variable. It is considered # an implementation detail. # * PHP5_MAINTSCRIPT_NAME # * PHP5_MAINTSCRIPT_PACKAGE # * PHP5_MAINTSCRIPT_METHOD # * PHP5_MAINTSCRIPT_ARGUMENT # these variables contain information about the # maintainer script which is calling the # maintscript-helper. It contains arguments which # dpkg supplies to maintainer scripts and similar # information. These variables are an # implementation detail and not to be changed. # # You might want to set them manually only if you # are calling php5-maintscript-helper from # some place which does not preserve the original # script arguments for example when calling from # a subfunction instead of the main function in # your maintainer script # # INITIALIZATION # if [ -n "${EXPORT_PHP5_MAINTSCRIPT_HELPER:-}" ] ; then return else EXPORT_PHP5_MAINTSCRIPT_HELPER=1 if [ -n "${PHP5_MAINTSCRIPT_DEBUG:-}" ] ; then set -x fi if [ -z "$1" ] ; then echo "You must invoke php5-maintscript-helper with an unmodified environment when sourcing it" >&2 return 1 fi PHP5_MAINTSCRIPT_NAME="$DPKG_MAINTSCRIPT_NAME" [ "$PHP5_MAINTSCRIPT_NAME" ] || PHP5_MAINTSCRIPT_NAME="${0##*.}" case "$PHP5_MAINTSCRIPT_NAME" in preinst|prerm|postrm|postinst) # yay - recognized script ;; *) echo "php5-maintscript-helper invoked from an unrecognized maintainer script: exiting" >&2 return 1 ;; esac PHP5_MAINTSCRIPT_PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE" if [ -z "$PHP5_MAINTSCRIPT_PACKAGE" ]; then PHP5_MAINTSCRIPT_PACKAGE="${0##*/}" PHP5_MAINTSCRIPT_PACKAGE="${PHP5_MAINTSCRIPT_PACKAGE%.*}" fi if [ -z "$PHP5_MAINTSCRIPT_METHOD" ] ; then PHP5_MAINTSCRIPT_METHOD="$1" fi case "$PHP5_MAINTSCRIPT_METHOD" in install|upgrade|abort-upgrade|configure|abort-remove|abort-remove|abort-deconfigure|remove|failed-upgrade|purge|disappear|abort-install) # yay - recognized script ;; *) echo "php5-maintscript-helper invoked from a modified environment. Please hint required arguments manually" >&2 return 1 ;; esac if [ -z "$PHP5_MAINTSCRIPT_ARGUMENT" ] ; then PHP5_MAINTSCRIPT_ARGUMENT="${2:-}" fi fi # # FUNCTIONS # # # Function php5_msg # print out a warning to both, the syslog and a local standard output. # This function should generally be used to display messages related to # the web server in maintainer scripts. # Parameters: # priority # The message priority. Recognized values are the same as defined # by syslog(3), thus: one among debug, info, notice, warning, # err, crit, alert, emerg. # If no known priority is recognized, the priority is set to # "warning". # message # The message as a string. It is printed out verbatim. # Behavior: # No message is displayed if PHP5_MAINTSCRIPT_HELPER_QUIET is defined # Returns: # this function always returns 0 # Since: 5.5.0+dfsg-7 php5_msg() { local PRIORITY="$1" local MSG="$2" case "$PRIORITY" in debug|info|notice|warning|err|crit|alert|emerg) ;; *) PRIORITY="warning" ;; esac [ -z "$PHP5_MAINTSCRIPT_HELPER_QUIET" ] && ( [ -n "${PHP5_MAINTSCRIPT_DEBUG:-}" ] || [ "$PRIORITY" != "debug" ] ) && echo "$MSG" >&2 [ -x /usr/bin/logger ] || return 0 local LOGGER="/usr/bin/logger -p daemon.$PRIORITY -t $PHP5_MAINTSCRIPT_PACKAGE " $LOGGER "$MSG" || return 0 } # # Function php5_invoke # invokes an Apache 2 configuration helper to enable or disable a # particular piece of configuration, a site or a module. It carefully # checks whether the supplied configuration snippet exists and reloads the # web server if the site administrator desires that by call dpkg trigger # /etc/php5/SAPI/conf.d which is defined for apache2, apache2filter and fpm. # # Parameters: # command - The command to invoke. Recognized commands are "enconf", # "enmod", "ensite", "disconf", "dismod", "dissite" # # sapi - Either the specific SAPI (apache2, apache2filter, fpm, # cgi, cli, embed) or ALL # # arguments # - A single argument (e.g. a module) which shall be # enabled or disabled respectively. # # Returns # 0 if the changes could be activated # 1 otherwise # Since: 5.5.0+dsfg-7 php5_invoke() { local CMD=$1 local SAPI=$2 local MOD=$3 local check_switch="" local invoke_string="" local rcd_action="" local rcd_scripts="" local sapi_list="" [ -x "/usr/sbin/php5$CMD" ] || return 1 [ -x "/usr/sbin/php5query" ] || return 1 sapi_list="$SAPI" case "$SAPI" in apache2|apache2filter|fpm|cli|cgi|embed) ;; ALL) sapi_list=$(php5query -S) case "$CMD" in enmod|dismod) php5$CMD -q -m -r "$MOD" || return 1 ;; *) return 1 ;; esac ;; *) return 1 ;; esac for SAPI in $sapi_list; do case "$CMD" in enmod) local php5query_ret=0 php5query -s "$SAPI" -m "$MOD" > /dev/null 2>&1 || php5query_ret=$? if [ "$php5query_ret" -eq 0 ] ; then # configuration is already enabled php5$CMD -m -s "$SAPI" -q "$MOD" > /dev/null 2>&1 || return 1 php5_msg "info" "php5_invoke $MOD: already enabled for $SAPI SAPI" PHP5_NEED_ACTION=1 elif [ "$php5query_ret" -eq 32 ] ; then # the maintainer disabled the module php5_msg "info" "php5_invoke $MOD: no action - module was disabled by maintainer for $SAPI SAPI" return 0 else # coming here either means: # a) we have no clue about the module (e.g. for upgrades prior to maintscript-helper # b) it's a fresh install PHP5_NEED_ACTION=1 php5$CMD -m -s "$SAPI" -q "$MOD" > /dev/null 2>&1 || return 1 php5_msg "info" "php5_invoke: Enable module $MOD for $SAPI SAPI" fi ;; dismod) local php5query_ret=0 php5query -s "$SAPI" -m "$MOD" > /dev/null 2>&1 || php5query_ret=$? if [ "$php5query_ret" -eq 0 ] ; then if [ "$PHP5_MAINTSCRIPT_NAME" = 'postrm' ] && [ "$PHP5_MAINTSCRIPT_METHOD" = "purge" ] ; then php5$CMD -p -f -s "$SAPI" -q "$MOD" || return 1 php5_msg "info" "php5_invoke $PHP5_MAINTSCRIPT_NAME: Purging module $MOD for $SAPI SAPI" PHP5_NEED_ACTION=1 elif [ "$PHP5_MAINTSCRIPT_NAME" = 'postrm' ] || [ "$PHP5_MAINTSCRIPT_NAME" = 'prerm' ] ; then if [ "$PHP5_MAINTSCRIPT_METHOD" = "remove" ] ; then php5$CMD -m -f -s "$SAPI" -q "$MOD" || return 1 php5_msg "info" "php5_invoke $PHP5_MAINTSCRIPT_NAME: Disable module $MOD for $SAPI SAPI" PHP5_NEED_ACTION=1 fi else php5_msg "error" "php5_invoke: module $MOD not supported in $PHP5_MAINTSCRIPT_NAME for $SAPI SAPI" return 1 fi elif [ "$php5query_ret" -eq 32 ] || [ "$php5query_ret" -eq 33 ] ; then if [ "$PHP5_MAINTSCRIPT_NAME" = 'postrm' ] && [ "$PHP5_MAINTSCRIPT_METHOD" = "purge" ] ; then php5_msg "info" "php5_invoke $PHP5_MAINTSCRIPT_NAME: Purging state for $MOD for $SAPI SAPI" # this will return RC=1 ( php5$CMD -p -f -s "$SAPI" -q "$MOD" > /dev/null 2>&1 ) else php5_msg "debug" "php5_invoke $MOD $PHP5_MAINTSCRIPT_NAME: No action required for $SAPI SAPI" fi else php5_msg "debug" "php5_invoke $MOD $PHP5_MAINTSCRIPT_NAME: No action required for $SAPI SAPI" fi ;; *) return 1 ;; esac if [ -n "${PHP_NEED_ACTION:-}" -a -n "$rcd_action" ]; then dpkg-trigger /etc/php5/$SAPI/conf.d fi done } # vim: syntax=sh sw=8 sts=8 sr noet debian/debhelper/php5.pm0000664000000000000000000000016512300436054012333 0ustar #!/usr/bin/perl use warnings; use strict; use Debian::Debhelper::Dh_Lib; insert_after("dh_install", "dh_php5"); 1; debian/php5-sapi.bug.control0000664000000000000000000000003112300436054013143 0ustar report-with: php5-common debian/dfsg-repack.sh0000775000000000000000000000117512300436054011716 0ustar #!/bin/bash set -e if [ ! -f "$3" ] && [ ! -f "$1" ]; then echo "This script must be run via uscan or by manually specifying the tarball" >&2 exit 1 fi tarball= [ -f "$3" ] && tarball="$3" [ -z "$tarball" -a -f "$1" ] && tarball="$1" fname="$(basename "$tarball")" tarball="$(readlink -f "$tarball")" tdir="$(mktemp -d)" trap '[ ! -d "$tdir" ] || rm -r "$tdir"' EXIT xzcat "$tarball" | \ tar --wildcards \ --delete '*/ext/json/*' \ > "$tdir/${fname/.xz}" xz "$tdir/${fname/.xz}" bare=$(dirname "$tarball")/$(basename "$(basename "${tarball}" .tar.xz)" .orig) mv "$tdir/$fname" "${bare}+dfsg.orig.tar.xz" debian/php5-module.triggers0000664000000000000000000000015012300436054013070 0ustar activate /etc/php5/apache2/conf.d activate /etc/php5/apache2filter/conf.d activate /etc/php5/fpm/conf.d debian/libapache2-mod-php5filter.postinst.extra0000664000000000000000000000147712300436054016754 0ustar if [ -e /usr/share/apache2/apache2-maintscript-helper ]; then . /usr/share/apache2/apache2-maintscript-helper php5_enable() { mpm=$(a2query -M) case "$(a2query -M)" in prefork|itk) return 0;; *) if apache2_switch_mpm prefork; then return 0; fi;; esac apache2_msg err "Could not switch to prefork MPM, not enabling php5" return 1 } else echo "Warning: Could not load Apache 2.4 maintainer script helper." php5_enable() { return 1; } fi # we've registered a trigger to handle extension updates. if [ "$1" = "triggered" ] && [ "$2" = "/etc/php5/apache2/conf.d" ]; then if [ -e /usr/share/apache2/apache2-maintscript-helper ]; then . /usr/share/apache2/apache2-maintscript-helper apache2_reload restart fi exit 0 elif [ "$1" != "configure" ]; then exit 0 fi debian/php5-dev.lintian-overrides0000664000000000000000000000020412300436054014171 0ustar php5-dev: script-not-executable ./usr/lib/php5/build/run-tests.php php5-dev: script-not-executable usr/lib/php5/build/run-tests.php debian/gbp.conf0000664000000000000000000000025012300436054010601 0ustar [DEFAULT] debian-branch = master debian-tag = debian/%(version)s upstream-branch = upstream upstream-tag = upstream/%(version)s pristine-tar = True [git-dch] meta = 1 debian/php-pear.doc-base.php-structures-graph0000664000000000000000000000047412300436054016413 0ustar Document: php-structures-graph Title: PEAR Structures_Graph Abstract: API documentation of the Structures_Graph module. Section: Programming Format: HTML Index: /usr/share/doc/php-pear/PEAR/Structures_Graph/docs/html/index.html Files: /usr/share/doc/php-pear/PEAR/Structures_Graph/docs/html/Structures_Graph/*.html debian/NEWS0000664000000000000000000002105312300436054007665 0ustar php5 (5.5.0~rc1+dfsg-1) experimental; urgency=low * Starting from this version, the JSON module is no longer compiled in due to licensing problems, and you need to install the JSON extension as external php5-json package that is using json-c library. -- Ondřej Surý Fri, 17 May 2013 14:43:04 +0200 php5 (5.5.0~beta4-2) experimental; urgency=low * short_open_tag configuration option now defaults to Off. This means that your PHP applications have to use '/php.ini again. -- Ondřej Surý Sun, 05 May 2013 23:37:54 +0200 php5 (5.4.4-7) unstable; urgency=low * As a side effect of the MIME-Type changes in the mime-support package, the default Apache 2 configuration will no longer perform HTTP content negotiation on the PHP file extensions, which was very questionable anyway. If you really want to re-enable this support then please read /usr/share/doc/php5-common/README.Debian file for further instructions. -- Ondřej Surý Wed, 29 Aug 2012 09:18:41 +0200 php5 (5.4.4-5) unstable; urgency=low * As a security measure the default configuration for Apache 2 has been changed to a stricter model. Only files which have the correct rightmost extension, and at least one character in the filename before that extension, are now interpreted by PHP. For a full list of handled extensions please see the Apache 2 configuration. At the time of writing this paragraph, the list includes the following regular expressions: 1. .+\.ph(p[345]?|t|tml)$ for PHP files (application/x-httpd-php) 2. .+\.phps$ for PHP source files (application/x-httpd-php-source) Previously, as a side effect of system MIME type definitions, the default configuration would allow the interpreting of files with a double extension, where the second extension was either unrecognised or a language or content encoding to be interpreted; e.g. an uploaded file named blackhat.php.foobar or index.php.cs would be interpreted by PHP. These non-standard definitions have been removed from the mime-support packages and all configuration of PHP handlers is now defined in the Apache 2 configuration files. The standard configuration now also denies access to files with names which consist of an extension and nothing more; e.g. accessing '/.php' will now return Access Denied instead of the output of the PHP script. You can use the following command to find whether there are any files on your system which would be affected by this change (change to the directory name where you store PHP files on your system): # find -name '*.ph[pt].*' -o -name '*.php[345s].*' -o \ -name '*.phtml.*' -o -name '.ph[pt]' -o \ -name '.php[345s]' -o -name '.phtml' -- Ondřej Surý Tue, 21 Aug 2012 09:14:47 +0200 php5 (5.4.0~rc8-1) unstable; urgency=low php5-fpm default www spool now listens on unix socket located in /var/run/php5-fpm.sock instead of localhost:9000. If you have configured your webserver to use localhost:9000, you will have to change your settings. -- Ondřej Surý Wed, 08 Feb 2012 08:25:30 +0100 php5 (5.4.0~rc6-2) unstable; urgency=low t1lib support was removed from PHP 5.4. t1lib has many security issues and is unmaintained by upstream for a very long time (3 years). For more information see: + http://bugs.debian.org/637488 + http://bugs.debian.org/638755 This unfortunately also means that following functions are not available in PHP5 from now: - imagepsloadfont - imagepsfreefont - imagepsencodefont - imagepsextendfont - imagepsslantfont - imagepstext - imagepsbbox If you really need those functions you will need to install t1lib from sources. You will need to install php5-dev and recompile GD extension (roughly) using following commands: cd /ext/gd/ phpize configure --with-gd=shared,/usr --enable-gd-native-ttf \ --with-t1lib= make make install -- Ondřej Surý Wed, 01 Feb 2012 18:19:45 +0100 php5 (5.3.9-4) unstable; urgency=low * The Suhosin patch is now disabled in the default build. If you want to re-enable it again for your installation, you can set the option PHP5_SUHOSIN=yes in debian/rules and recompile PHP. -- Ondřej Surý Sat, 28 Jan 2012 08:39:36 +0100 php5 (5.3.6-13) unstable; urgency=low * Updated blowfish crypt() algorithm fixes the 8-bit character handling vulnerability (CVE-2011-2483) and adds more self-tests. Unfortunately this change is incompatible with some old (wrong) generated hashes for passwords containing 8-bit characters. It is recommended that any passwords containing characters with the 8th bit set be changed after this upgrade. In order to allow users to log in after the upgrade even if they have a potentially affected password, the newly introduced backwards compatibility hash encoding prefix of "$2x$" may be used (in place of the usual "$2a$"). Such password hashes should only be used during a transition period; when passwords are changed, the usual "$2a$" prefix is used, denoting the correct algorithm. -- Ondřej Surý Mon, 04 Jul 2011 10:31:16 +0200 php5 (5.3.1-3) unstable; urgency=low * mod_php disabled in userdirs. The default Debian libapache2-mod-php5 package now disables the PHP engine on ~/public_html directories when mod_userdir is enabled, for security reasons. Although discouraged, it can be re-enabled by commenting the block in /etc/apache2/mods-available/php5.conf * PHP 5.2 compatibility settings Given the short time to the Squeeze release freeze, the short_open_tag setting has been turned On again (upstream now defaults to Off on the php.ini files.) However, the request_order and auto_globals_jit settings continue to be the default from upstream ("GP" and On, respectively.) -- Raphael Geissert Mon, 11 Jan 2010 16:49:28 -0600 php5 (5.2.11.dfsg.1-2) unstable; urgency=high * Maximum number of file uploads per request limited To prevent Denial of Service attacks by exhausting the number of available temporary file names, upstream introduced the max_file_uploads option in 5.3.1 and 5.2.12. Due to the nature of this new option a default limit has been set to 50, hoping it is sensible enough to not to cause disruptions on existing services. The value of this new limit can be changed in the php.ini file. If you installed the php5-suhosin extension there was a limiting mechanism in place already. In this case you may want to make sure the new limit imposed by PHP itself is not smaller than suhosin's. -- Raphael Geissert Sat, 21 Nov 2009 13:37:51 -0600 php5 (5.2.6-1) unstable; urgency=medium * Now uses system timezone database. Debian PHP now makes use of the system wide timezone database from the tzdata package, making sure any updates there are automatically used by PHP aswell. Note that this requires that the PHP process has access to /etc/localtime and /usr/share/zoneinfo (this is usually the case). * New php5-dbg package. We are now shipping a php5-dgb package which will greatly aid in finding the cause of many crashes that you may experience. So if you are going to report a bug for a reproducible crash, please install this package before sending a backtrace. * New libapache2-mod-php5filter package. We are now also shipping a new libapache2-mod-php5filter package which uses the "Apache 2.0 filter-module support via DSO through APXS". -- Thijs Kinkhorst Wed, 23 Jul 2008 17:42:06 +0200 php5 (5.2.3-2) unstable; urgency=low The Suhosin patch is now enabled by default! For more information, see . Special thanks to Blars Blarson for providing a sparc machine for testing that the patch seems to work okay on that architecture. If you experience otherwise let us know! Suggestions are welcome for default configuration options, examples, documentation, etc. In any event please report successes and/or failures to us at pkg-php-maint@lists.alioth.debian.org. -- sean finney Thu, 12 Jul 2007 23:38:43 +0200 debian/libapache2-mod-php5filter.apache20000664000000000000000000000014512300436054015241 0ustar mod apache2filter-build/.libs/libphp5filter.so mod debian/php5filter.load mod debian/php5filter.conf debian/php5-fpm-reopenlogs0000664000000000000000000000045012506505025012721 0ustar #!/bin/sh CONFFILE=/etc/php5/fpm/php-fpm.conf [ -r /etc/default/php5-fpm ] && . /etc/default/php5-fpm CONF_PIDFILE=$(sed -n 's/^[[:space:]]*pid[[:space:]]*=[[:space:]]*//p' $CONFFILE) PIDFILE=${CONF_PIDFILE:-/run/php5-fpm.pid} [ -r "$PIDFILE" ] && kill -USR1 $(cat "$PIDFILE") > /dev/null exit 0 debian/php5-common.postrm.extra0000664000000000000000000000005312300436054013715 0ustar [ "$1" = "purge" ] && rm -rf /var/lib/php5 debian/php5-common.postinst.extra0000664000000000000000000000024212300436054014254 0ustar for sapi in apache2 apache2filter cli cgi embed fpm; do CONFDIR=/etc/php5/$sapi/conf.d if [ -L $CONFDIR ]; then rm $CONFDIR mkdir $CONFDIR fi done debian/php5-fpm.dirs0000664000000000000000000000012012300436054011475 0ustar /etc/php5/fpm /etc/php5/fpm/conf.d /etc/php5/fpm/pool.d /usr/sbin /usr/lib/php5 debian/php5-sqlite.postrm.extra0000664000000000000000000000011712300436054013727 0ustar dpkg-maintscript-helper rm_conffile /etc/php5/conf.d/sqlite.ini 5.3.9~ -- "$@" debian/libphp5-embed.postrm.extra0000664000000000000000000000004012300436054014164 0ustar [ "$1" = "remove" ] && ldconfig debian/libapache2-mod-php5.apache20000664000000000000000000000011512300436054014030 0ustar mod apache2-build/.libs/libphp5.so mod debian/php5.load mod debian/php5.conf debian/php5-cgi.prerm.extra0000664000000000000000000000023612300436054012773 0ustar if [ "$1" = "remove" ]; then update-alternatives --remove php-cgi /usr/bin/php5-cgi update-alternatives --remove php-cgi-bin /usr/lib/cgi-bin/php5 fi debian/php5-cgi.dirs0000664000000000000000000000015512300436054011465 0ustar /etc/apache2/mods-available /etc/php5/cgi /etc/php5/cgi/conf.d /usr/lib/cgi-bin /usr/bin /usr/share/man/man1 debian/php5.load0000664000000000000000000000007312300436054010702 0ustar LoadModule php5_module /usr/lib/apache2/modules/libphp5.so debian/php5-sapi.postinst0000664000000000000000000000112712300436324012601 0ustar #!/bin/sh set -e #EXTRA# CONFDIR=/etc/php5/@sapi@/conf.d if [ -L $CONFDIR ]; then rm $CONFDIR mkdir $CONFDIR fi if [ "$1" = "configure" ]; then phpini="/etc/php5/@sapi@/php.ini" if [ "@sapi@" = "cli" ]; then ucf /usr/share/php5/php.ini-production.@sapi@ $phpini else ucf /usr/share/php5/php.ini-production $phpini fi ucfr @package@ $phpini if [ -e /usr/share/php5/php5-maintscript-helper ]; then . /usr/share/php5/php5-maintscript-helper mods=$(php5query -M) for mod in $mods; do php5_invoke enmod @sapi@ $mod done fi fi #DEBHELPER# exit 0 debian/php5-common.dirs0000664000000000000000000000026212300436054012212 0ustar /usr/lib/php5 /usr/share/lintian/overrides /usr/share/doc/php5-common /usr/share/php5 /usr/share/php5/sapi /var/lib/php5/modules /usr/lib/php5 /etc/php5/mods-available /usr/sbin debian/source.lintian-overrides0000664000000000000000000000007212300436054014044 0ustar php5 source: license-problem-json-evil README.REDIST.BINS debian/libphp5-embed.dirs0000664000000000000000000000006012300436054012461 0ustar /etc/php5/embed /etc/php5/embed/conf.d /usr/lib debian/php5-fpm.postrm.extra0000664000000000000000000000014712300436054013213 0ustar dpkg-maintscript-helper mv_conffile /etc/php5/fpm/main.conf /etc/php5/fpm/php-fpm.conf 5.3.5-1 -- "$@" debian/patches/0000775000000000000000000000000013457376706010641 5ustar debian/patches/CVE-2016-9935-1.patch0000664000000000000000000000324213046673233013420 0ustar From 266ecb6d0a1ab5a37b4d652ca774a8adc4b06578 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 5 Dec 2016 21:40:55 -0800 Subject: [PATCH] Fix bug #73631 - Invalid read when wddx decodes empty boolean element --- NEWS | 4 ++++ ext/wddx/tests/bug73631.phpt | 19 +++++++++++++++++++ ext/wddx/wddx.c | 5 +++++ 3 files changed, 28 insertions(+) create mode 100644 ext/wddx/tests/bug73631.phpt Index: php5-5.5.9+dfsg/ext/wddx/tests/bug73631.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug73631.phpt 2017-02-08 14:50:48.604823123 -0500 @@ -0,0 +1,19 @@ +--TEST-- +Bug #73631 (Memory leak due to invalid wddx stack processing) +--SKIPIF-- + +--FILE-- + + +1234 + + +EOF; +$wddx = wddx_deserialize($xml); +var_dump($wddx); +?> +--EXPECTF-- +int(1234) + Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2017-02-08 14:50:48.608823182 -0500 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2017-02-08 14:50:48.608823182 -0500 @@ -803,6 +803,11 @@ php_wddx_process_data(user_data, atts[i+1], strlen(atts[i+1])); break; } + } else { + ent.type = ST_BOOLEAN; + SET_STACK_VARNAME; + ZVAL_FALSE(&ent.data); + wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); } } else if (!strcmp(name, EL_NULL)) { ent.type = ST_NULL; debian/patches/CVE-2016-10160.patch0000664000000000000000000000256513047111414013314 0ustar From b28b8b2fee6dfa6fcd13305c581bb835689ac3be Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Fri, 30 Dec 2016 15:57:24 -0800 Subject: [PATCH] Fix bug #73768 - Memory corruption when loading hostile phar --- ext/phar/phar.c | 3 +-- ext/phar/tests/bug73768.phar | Bin 0 -> 219 bytes ext/phar/tests/bug73768.phpt | 16 ++++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 ext/phar/tests/bug73768.phar create mode 100644 ext/phar/tests/bug73768.phpt Index: php5-5.5.9+dfsg/ext/phar/phar.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar.c 2017-02-09 11:04:26.075490657 -0500 +++ php5-5.5.9+dfsg/ext/phar/phar.c 2017-02-09 11:04:26.071490595 -0500 @@ -980,7 +980,6 @@ /* if the alias is stored we enforce it (implicit overrides explicit) */ if (alias && alias_len && (alias_len != (int)tmp_len || strncmp(alias, buffer, tmp_len))) { - buffer[tmp_len] = '\0'; php_stream_close(fp); if (signature) { @@ -988,7 +987,7 @@ } if (error) { - spprintf(error, 0, "cannot load phar \"%s\" with implicit alias \"%s\" under different alias \"%s\"", fname, buffer, alias); + spprintf(error, 0, "cannot load phar \"%s\" with implicit alias \"%.*s\" under different alias \"%s\"", fname, tmp_len, buffer, alias); } efree(savebuf); debian/patches/CVE-2016-7479.patch0000664000000000000000000007012413047062247013264 0ustar Backport of: From 0426b916df396a23e5c34514e4f2f0627efdcdf0 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 5 Jan 2017 00:19:26 +0100 Subject: [PATCH] Implement delayed __wakeup --- ext/standard/var_unserializer.c | 1227 ++++++++++++++++++++------------------ ext/standard/var_unserializer.re | 84 ++- 2 files changed, 699 insertions(+), 612 deletions(-) Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2017-02-09 07:36:07.107643011 -0500 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2017-02-09 07:40:06.270626277 -0500 @@ -26,6 +26,11 @@ #define VAR_ENTRIES_MAX 1024 #define VAR_ENTRIES_DBG 0 +#define VAR_WAKEUP_FLAG 1 +#define WITH_WAKEUP_FLAG(zv_ptr) ((zval *) ((zend_uintptr_t) zv_ptr | VAR_WAKEUP_FLAG)) +#define WITHOUT_WAKEUP_FLAG(zv_ptr) ((zval *) ((zend_uintptr_t) zv_ptr & ~VAR_WAKEUP_FLAG)) +#define HAS_WAKEUP_FLAG(zv_ptr) ((zend_uintptr_t) zv_ptr & VAR_WAKEUP_FLAG) + typedef struct { zval *data[VAR_ENTRIES_MAX]; long used_slots; @@ -56,12 +61,12 @@ var_hash->data[var_hash->used_slots++] = *rval; } -PHPAPI void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval) +static inline zval **get_var_push_dtor_slot(php_unserialize_data_t *var_hashx) { var_entries *var_hash; if (!var_hashx || !*var_hashx) { - return; + return NULL; } var_hash = (*var_hashx)->last_dtor; @@ -83,8 +88,14 @@ (*var_hashx)->last_dtor = var_hash; } + return &var_hash->data[var_hash->used_slots++]; +} + +PHPAPI void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval) +{ + zval **slot = get_var_push_dtor_slot(var_hashx); Z_ADDREF_PP(rval); - var_hash->data[var_hash->used_slots++] = *rval; + *slot = *rval; } PHPAPI void var_push_dtor_no_addref(php_unserialize_data_t *var_hashx, zval **rval) @@ -162,6 +173,9 @@ void *next; long i; var_entries *var_hash = (*var_hashx)->first; + zend_bool wakeup_failed = 0; + TSRMLS_FETCH(); + #if VAR_ENTRIES_DBG fprintf(stderr, "var_destroy(%ld)\n", var_hash?var_hash->used_slots:-1L); #endif @@ -176,10 +190,35 @@ while (var_hash) { for (i = 0; i < var_hash->used_slots; i++) { + zval *zv = var_hash->data[i]; #if VAR_ENTRIES_DBG fprintf(stderr, "var_destroy dtor(%p, %ld)\n", var_hash->data[i], Z_REFCOUNT_P(var_hash->data[i])); #endif - zval_ptr_dtor(&var_hash->data[i]); + + if (HAS_WAKEUP_FLAG(zv)) { + zv = WITHOUT_WAKEUP_FLAG(zv); + if (!wakeup_failed) { + zval *retval_ptr = NULL; + zval wakeup_name; + INIT_PZVAL(&wakeup_name); + ZVAL_STRINGL(&wakeup_name, "__wakeup", sizeof("__wakeup") - 1, 0); + + BG(serialize_lock)++; + if (call_user_function_ex(CG(function_table), &zv, &wakeup_name, &retval_ptr, 0, 0, 1, NULL TSRMLS_CC) == FAILURE || retval_ptr == NULL) { + wakeup_failed = 1; + zend_object_store_ctor_failed(zv TSRMLS_CC); + } + BG(serialize_lock)--; + + if (retval_ptr) { + zval_ptr_dtor(&retval_ptr); + } + } else { + zend_object_store_ctor_failed(zv TSRMLS_CC); + } + } + + zval_ptr_dtor(&zv); } next = var_hash->next; efree(var_hash); @@ -422,15 +461,12 @@ #endif static inline int object_common2(UNSERIALIZE_PARAMETER, long elements) { - zval *retval_ptr = NULL; - zval fname; - if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements, 1)) { - /* We've got partially constructed object on our hands here. Wipe it. */ - if(Z_TYPE_PP(rval) == IS_OBJECT) { - zend_hash_clean(Z_OBJPROP_PP(rval)); - zend_object_store_ctor_failed(*rval TSRMLS_CC); - } + /* We've got partially constructed object on our hands here. Wipe it. */ + if (Z_TYPE_PP(rval) == IS_OBJECT) { + zend_hash_clean(Z_OBJPROP_PP(rval)); + zend_object_store_ctor_failed(*rval TSRMLS_CC); + } ZVAL_NULL(*rval); return 0; } @@ -440,20 +476,16 @@ } if (Z_OBJCE_PP(rval) != PHP_IC_ENTRY && - zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup"))) { - INIT_PZVAL(&fname); - ZVAL_STRINGL(&fname, "__wakeup", sizeof("__wakeup") - 1, 0); - BG(serialize_lock)++; - call_user_function_ex(CG(function_table), rval, &fname, &retval_ptr, 0, 0, 1, NULL TSRMLS_CC); - BG(serialize_lock)--; - } - - if (retval_ptr) { - zval_ptr_dtor(&retval_ptr); - } - - if (EG(exception)) { - return 0; + zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup")) + ) { + /* Store object for delayed __wakeup call. Remove references. */ + zval **slot = get_var_push_dtor_slot(var_hash); + zval *zv = *rval; + Z_ADDREF_P(zv); + if (PZVAL_IS_REF(zv)) { + SEPARATE_ZVAL(&zv); + } + *slot = WITH_WAKEUP_FLAG(zv); } return finish_nested_data(UNSERIALIZE_PASSTHRU); Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2017-02-09 07:35:54.335483571 -0500 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2017-02-09 07:46:25.467347766 -0500 @@ -1,9 +1,9 @@ -/* Generated by re2c 0.13.5 */ +/* Generated by re2c 0.13.5 on Thu Feb 9 07:46:25 2017 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2014 The PHP Group | + | Copyright (c) 1997-2013 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -27,6 +27,11 @@ #define VAR_ENTRIES_MAX 1024 #define VAR_ENTRIES_DBG 0 +#define VAR_WAKEUP_FLAG 1 +#define WITH_WAKEUP_FLAG(zv_ptr) ((zval *) ((zend_uintptr_t) zv_ptr | VAR_WAKEUP_FLAG)) +#define WITHOUT_WAKEUP_FLAG(zv_ptr) ((zval *) ((zend_uintptr_t) zv_ptr & ~VAR_WAKEUP_FLAG)) +#define HAS_WAKEUP_FLAG(zv_ptr) ((zend_uintptr_t) zv_ptr & VAR_WAKEUP_FLAG) + typedef struct { zval *data[VAR_ENTRIES_MAX]; long used_slots; @@ -57,12 +62,12 @@ var_hash->data[var_hash->used_slots++] = *rval; } -PHPAPI void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval) +static inline zval **get_var_push_dtor_slot(php_unserialize_data_t *var_hashx) { var_entries *var_hash; if (!var_hashx || !*var_hashx) { - return; + return NULL; } var_hash = (*var_hashx)->last_dtor; @@ -84,8 +89,14 @@ (*var_hashx)->last_dtor = var_hash; } + return &var_hash->data[var_hash->used_slots++]; +} + +PHPAPI void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval) +{ + zval **slot = get_var_push_dtor_slot(var_hashx); Z_ADDREF_PP(rval); - var_hash->data[var_hash->used_slots++] = *rval; + *slot = *rval; } PHPAPI void var_push_dtor_no_addref(php_unserialize_data_t *var_hashx, zval **rval) @@ -163,6 +174,9 @@ void *next; long i; var_entries *var_hash = (*var_hashx)->first; + zend_bool wakeup_failed = 0; + TSRMLS_FETCH(); + #if VAR_ENTRIES_DBG fprintf(stderr, "var_destroy(%ld)\n", var_hash?var_hash->used_slots:-1L); #endif @@ -177,10 +191,35 @@ while (var_hash) { for (i = 0; i < var_hash->used_slots; i++) { + zval *zv = var_hash->data[i]; #if VAR_ENTRIES_DBG fprintf(stderr, "var_destroy dtor(%p, %ld)\n", var_hash->data[i], Z_REFCOUNT_P(var_hash->data[i])); #endif - zval_ptr_dtor(&var_hash->data[i]); + + if (HAS_WAKEUP_FLAG(zv)) { + zv = WITHOUT_WAKEUP_FLAG(zv); + if (!wakeup_failed) { + zval *retval_ptr = NULL; + zval wakeup_name; + INIT_PZVAL(&wakeup_name); + ZVAL_STRINGL(&wakeup_name, "__wakeup", sizeof("__wakeup") - 1, 0); + + BG(serialize_lock)++; + if (call_user_function_ex(CG(function_table), &zv, &wakeup_name, &retval_ptr, 0, 0, 1, NULL TSRMLS_CC) == FAILURE || retval_ptr == NULL) { + wakeup_failed = 1; + zend_object_store_ctor_failed(zv TSRMLS_CC); + } + BG(serialize_lock)--; + + if (retval_ptr) { + zval_ptr_dtor(&retval_ptr); + } + } else { + zend_object_store_ctor_failed(zv TSRMLS_CC); + } + } + + zval_ptr_dtor(&zv); } next = var_hash->next; efree(var_hash); @@ -416,38 +455,31 @@ #endif static inline int object_common2(UNSERIALIZE_PARAMETER, long elements) { - zval *retval_ptr = NULL; - zval fname; - if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements, 1)) { - /* We've got partially constructed object on our hands here. Wipe it */ - if(Z_TYPE_PP(rval) == IS_OBJECT) { - zend_hash_clean(Z_OBJPROP_PP(rval)); - zend_object_store_ctor_failed(*rval TSRMLS_CC); - } + /* We've got partially constructed object on our hands here. Wipe it. */ + if (Z_TYPE_PP(rval) == IS_OBJECT) { + zend_hash_clean(Z_OBJPROP_PP(rval)); + zend_object_store_ctor_failed(*rval TSRMLS_CC); + } ZVAL_NULL(*rval); return 0; } - if (Z_TYPE_PP(rval) != IS_OBJECT) { - return 0; - } + if (Z_TYPE_PP(rval) != IS_OBJECT) { + return 0; + } if (Z_OBJCE_PP(rval) != PHP_IC_ENTRY && - zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup"))) { - INIT_PZVAL(&fname); - ZVAL_STRINGL(&fname, "__wakeup", sizeof("__wakeup") - 1, 0); - BG(serialize_lock)++; - call_user_function_ex(CG(function_table), rval, &fname, &retval_ptr, 0, 0, 1, NULL TSRMLS_CC); - BG(serialize_lock)--; - } - - if (retval_ptr) { - zval_ptr_dtor(&retval_ptr); - } - - if (EG(exception)) { - return 0; + zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup")) + ) { + /* Store object for delayed __wakeup call. Remove references. */ + zval **slot = get_var_push_dtor_slot(var_hash); + zval *zv = *rval; + Z_ADDREF_P(zv); + if (PZVAL_IS_REF(zv)) { + SEPARATE_ZVAL(&zv); + } + *slot = WITH_WAKEUP_FLAG(zv); } return finish_nested_data(UNSERIALIZE_PASSTHRU); @@ -480,40 +512,6 @@ { YYCTYPE yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); yych = *YYCURSOR; @@ -535,49 +533,72 @@ } yy2: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy95; + switch (yych) { + case ':': goto yy95; + default: goto yy3; + } yy3: { return 0; } yy4: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy89; - goto yy3; + switch (yych) { + case ':': goto yy89; + default: goto yy3; + } yy5: yych = *++YYCURSOR; - if (yych == ';') goto yy87; - goto yy3; + switch (yych) { + case ';': goto yy87; + default: goto yy3; + } yy6: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy83; - goto yy3; + switch (yych) { + case ':': goto yy83; + default: goto yy3; + } yy7: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy77; - goto yy3; + switch (yych) { + case ':': goto yy77; + default: goto yy3; + } yy8: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy53; - goto yy3; + switch (yych) { + case ':': goto yy53; + default: goto yy3; + } yy9: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy46; - goto yy3; + switch (yych) { + case ':': goto yy46; + default: goto yy3; + } yy10: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy39; - goto yy3; + switch (yych) { + case ':': goto yy39; + default: goto yy3; + } yy11: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy32; - goto yy3; + switch (yych) { + case ':': goto yy32; + default: goto yy3; + } yy12: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy25; - goto yy3; + switch (yych) { + case ':': goto yy25; + default: goto yy3; + } yy13: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy17; - goto yy3; + switch (yych) { + case ':': goto yy17; + default: goto yy3; + } yy14: ++YYCURSOR; { @@ -590,29 +611,63 @@ goto yy3; yy17: yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy20; + switch (yych) { + case '+': goto yy19; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy20; + default: goto yy18; } - if (yych == '+') goto yy19; yy18: YYCURSOR = YYMARKER; goto yy3; yy19: yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy20; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy20; + default: goto yy18; } - goto yy18; yy20: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy20; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy20; + case ':': goto yy22; + default: goto yy18; } - if (yych != ':') goto yy18; +yy22: yych = *++YYCURSOR; - if (yych != '"') goto yy18; + switch (yych) { + case '"': goto yy23; + default: goto yy18; + } +yy23: ++YYCURSOR; { size_t len, len2, len3, maxlen; @@ -762,27 +817,61 @@ } yy25: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy18; - } else { - if (yych <= '-') goto yy26; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy27; - goto yy18; + switch (yych) { + case '+': + case '-': goto yy26; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy27; + default: goto yy18; } yy26: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy27; + default: goto yy18; + } yy27: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy27; - if (yych >= ';') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy27; + case ':': goto yy29; + default: goto yy18; + } +yy29: yych = *++YYCURSOR; - if (yych != '"') goto yy18; + switch (yych) { + case '"': goto yy30; + default: goto yy18; + } +yy30: ++YYCURSOR; { if (!var_hash) return 0; @@ -794,23 +883,60 @@ } yy32: yych = *++YYCURSOR; - if (yych == '+') goto yy33; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy34; - goto yy18; + switch (yych) { + case '+': goto yy33; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy34; + default: goto yy18; + } yy33: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy34; + default: goto yy18; + } yy34: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy34; - if (yych >= ';') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy34; + case ':': goto yy36; + default: goto yy18; + } +yy36: yych = *++YYCURSOR; - if (yych != '{') goto yy18; + switch (yych) { + case '{': goto yy37; + default: goto yy18; + } +yy37: ++YYCURSOR; { long elements = parse_iv(start + 2); @@ -834,23 +960,60 @@ } yy39: yych = *++YYCURSOR; - if (yych == '+') goto yy40; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy41; - goto yy18; + switch (yych) { + case '+': goto yy40; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy41; + default: goto yy18; + } yy40: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy41; + default: goto yy18; + } yy41: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy41; - if (yych >= ';') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy41; + case ':': goto yy43; + default: goto yy18; + } +yy43: yych = *++YYCURSOR; - if (yych != '"') goto yy18; + switch (yych) { + case '"': goto yy44; + default: goto yy18; + } +yy44: ++YYCURSOR; { size_t len, maxlen; @@ -882,23 +1045,60 @@ } yy46: yych = *++YYCURSOR; - if (yych == '+') goto yy47; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy48; - goto yy18; + switch (yych) { + case '+': goto yy47; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy48; + default: goto yy18; + } yy47: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy48; + default: goto yy18; + } yy48: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy48; - if (yych >= ';') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy48; + case ':': goto yy50; + default: goto yy18; + } +yy50: yych = *++YYCURSOR; - if (yych != '"') goto yy18; + switch (yych) { + case '"': goto yy51; + default: goto yy18; + } +yy51: ++YYCURSOR; { size_t len, maxlen; @@ -929,88 +1129,124 @@ } yy53: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych <= ',') { - if (yych == '+') goto yy57; - goto yy18; - } else { - if (yych <= '-') goto yy55; - if (yych <= '.') goto yy60; - goto yy18; - } - } else { - if (yych <= 'I') { - if (yych <= '9') goto yy58; - if (yych <= 'H') goto yy18; - goto yy56; - } else { - if (yych != 'N') goto yy18; - } + switch (yych) { + case '+': goto yy57; + case '-': goto yy55; + case '.': goto yy60; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy58; + case 'I': goto yy56; + case 'N': goto yy54; + default: goto yy18; } +yy54: yych = *++YYCURSOR; - if (yych == 'A') goto yy76; - goto yy18; + switch (yych) { + case 'A': goto yy76; + default: goto yy18; + } yy55: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy60; - goto yy18; - } else { - if (yych <= '9') goto yy58; - if (yych != 'I') goto yy18; + switch (yych) { + case '.': goto yy60; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy58; + case 'I': goto yy56; + default: goto yy18; } yy56: yych = *++YYCURSOR; - if (yych == 'N') goto yy72; - goto yy18; + switch (yych) { + case 'N': goto yy72; + default: goto yy18; + } yy57: yych = *++YYCURSOR; - if (yych == '.') goto yy60; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '.': goto yy60; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy58; + default: goto yy18; + } yy58: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - if (yych <= ':') { - if (yych <= '.') { - if (yych <= '-') goto yy18; - goto yy70; - } else { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy58; - goto yy18; - } - } else { - if (yych <= 'E') { - if (yych <= ';') goto yy63; - if (yych <= 'D') goto yy18; - goto yy65; - } else { - if (yych == 'e') goto yy65; - goto yy18; - } + switch (yych) { + case '.': goto yy70; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy58; + case ';': goto yy63; + case 'E': + case 'e': goto yy65; + default: goto yy18; } yy60: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy61; + default: goto yy18; + } yy61: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - if (yych <= ';') { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy61; - if (yych <= ':') goto yy18; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy18; - goto yy65; - } else { - if (yych == 'e') goto yy65; - goto yy18; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy61; + case ';': goto yy63; + case 'E': + case 'e': goto yy65; + default: goto yy18; } yy63: ++YYCURSOR; @@ -1025,61 +1261,104 @@ } yy65: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy18; - } else { - if (yych <= '-') goto yy66; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy67; - goto yy18; + switch (yych) { + case '+': + case '-': goto yy66; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy67; + default: goto yy18; } yy66: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy69; - goto yy18; - } else { - if (yych <= '-') goto yy69; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '+': + case '-': goto yy69; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy67; + default: goto yy18; } yy67: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy67; - if (yych == ';') goto yy63; - goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy67; + case ';': goto yy63; + default: goto yy18; + } yy69: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy67; - goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy67; + default: goto yy18; + } yy70: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - if (yych <= ';') { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy70; - if (yych <= ':') goto yy18; - goto yy63; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy18; - goto yy65; - } else { - if (yych == 'e') goto yy65; - goto yy18; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy70; + case ';': goto yy63; + case 'E': + case 'e': goto yy65; + default: goto yy18; } yy72: yych = *++YYCURSOR; - if (yych != 'F') goto yy18; + switch (yych) { + case 'F': goto yy73; + default: goto yy18; + } yy73: yych = *++YYCURSOR; - if (yych != ';') goto yy18; + switch (yych) { + case ';': goto yy74; + default: goto yy18; + } +yy74: ++YYCURSOR; { *p = YYCURSOR; @@ -1097,29 +1376,61 @@ } yy76: yych = *++YYCURSOR; - if (yych == 'N') goto yy73; - goto yy18; + switch (yych) { + case 'N': goto yy73; + default: goto yy18; + } yy77: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy18; - } else { - if (yych <= '-') goto yy78; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy79; - goto yy18; + switch (yych) { + case '+': + case '-': goto yy78; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy79; + default: goto yy18; } yy78: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy79; + default: goto yy18; + } yy79: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy79; - if (yych != ';') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy79; + case ';': goto yy81; + default: goto yy18; + } +yy81: ++YYCURSOR; { #if SIZEOF_LONG == 4 @@ -1149,10 +1460,18 @@ } yy83: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= '2') goto yy18; + switch (yych) { + case '0': + case '1': goto yy84; + default: goto yy18; + } +yy84: yych = *++YYCURSOR; - if (yych != ';') goto yy18; + switch (yych) { + case ';': goto yy85; + default: goto yy18; + } +yy85: ++YYCURSOR; { *p = YYCURSOR; @@ -1170,25 +1489,55 @@ } yy89: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy18; - } else { - if (yych <= '-') goto yy90; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy91; - goto yy18; + switch (yych) { + case '+': + case '-': goto yy90; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy91; + default: goto yy18; } yy90: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy91; + default: goto yy18; + } yy91: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy91; - if (yych != ';') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy91; + case ';': goto yy93; + default: goto yy18; + } +yy93: ++YYCURSOR; { long id; @@ -1214,25 +1563,55 @@ } yy95: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych != '+') goto yy18; - } else { - if (yych <= '-') goto yy96; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy97; - goto yy18; + switch (yych) { + case '+': + case '-': goto yy96; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy97; + default: goto yy18; } yy96: yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy97; + default: goto yy18; + } yy97: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy97; - if (yych != ';') goto yy18; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy97; + case ';': goto yy99; + default: goto yy18; + } +yy99: ++YYCURSOR; { long id; debian/patches/CVE-2016-10159.patch0000664000000000000000000000247213047111403013317 0ustar From ca46d0acbce55019b970fcd4c1e8a10edfdded93 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Fri, 30 Dec 2016 15:34:46 -0800 Subject: [PATCH] Fix int overflows in phar (bug #73764) --- ext/phar/phar.c | 4 ++-- ext/phar/tests/bug73764.phar | Bin 0 -> 138 bytes ext/phar/tests/bug73764.phpt | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 ext/phar/tests/bug73764.phar create mode 100644 ext/phar/tests/bug73764.phpt Index: php5-5.5.9+dfsg/ext/phar/phar.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar.c 2017-02-09 11:04:17.711361862 -0500 +++ php5-5.5.9+dfsg/ext/phar/phar.c 2017-02-09 11:04:17.711361862 -0500 @@ -1054,7 +1054,7 @@ entry.is_persistent = mydata->is_persistent; for (manifest_index = 0; manifest_index < manifest_count; ++manifest_index) { - if (buffer + 4 > endbuffer) { + if (buffer + 24 > endbuffer) { MAPPHAR_FAIL("internal corruption of phar \"%s\" (truncated manifest entry)") } @@ -1068,7 +1068,7 @@ entry.manifest_pos = manifest_index; } - if (entry.filename_len + 20 > endbuffer - buffer) { + if (entry.filename_len > endbuffer - buffer - 20) { MAPPHAR_FAIL("internal corruption of phar \"%s\" (truncated manifest entry)"); } debian/patches/CVE-2016-4539.patch0000664000000000000000000000251612717366575013274 0ustar From dccda88f27a084bcbbb30198ace12b4e7ae961cc Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 24 Apr 2016 23:50:57 -0700 Subject: [PATCH] Fix bug #72099: xml_parse_into_struct segmentation fault --- ext/xml/tests/bug72099.phpt | 17 +++++++ ext/xml/xml.c | 106 ++++++++++++++++++++++---------------------- 2 files changed, 70 insertions(+), 53 deletions(-) create mode 100644 ext/xml/tests/bug72099.phpt diff --git a/ext/xml/tests/bug72099.phpt b/ext/xml/tests/bug72099.phpt new file mode 100644 index 0000000..50173a6 --- /dev/null +++ b/ext/xml/tests/bug72099.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #72099: xml_parse_into_struct segmentation fault +--SKIPIF-- + +--FILE-- +level <= XML_MAXLEVEL) { + if (parser->level <= XML_MAXLEVEL && parser->level > 0) { MAKE_STD_ZVAL(tag); array_init(tag); debian/patches/CVE-2018-14883.patch0000664000000000000000000000240013347655563013347 0ustar From 1baeae42703f9b2ec21fff787146eeca08d45535 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 19 Jun 2018 16:26:36 -0700 Subject: [PATCH] Fix bug #76423 - Int Overflow lead to Heap OverFlow in exif_thumbnail_extract of exif.c --- ext/exif/exif.c | 5 ++++- ext/exif/tests/bug76423.jpg | Bin 0 -> 1537 bytes ext/exif/tests/bug76423.phpt | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 ext/exif/tests/bug76423.jpg create mode 100644 ext/exif/tests/bug76423.phpt Index: php5-5.5.9+dfsg/ext/exif/exif.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/exif/exif.c 2018-09-17 03:44:49.270385024 -0400 +++ php5-5.5.9+dfsg/ext/exif/exif.c 2018-09-17 03:44:49.270385024 -0400 @@ -2566,7 +2566,10 @@ static void exif_thumbnail_extract(image return; } /* Check to make sure we are not going to go past the ExifLength */ - if ((ImageInfo->Thumbnail.offset + ImageInfo->Thumbnail.size) > length) { + if (ImageInfo->Thumbnail.size > length + || (ImageInfo->Thumbnail.offset + ImageInfo->Thumbnail.size) > length + || ImageInfo->Thumbnail.offset > length - ImageInfo->Thumbnail.size + ) { EXIF_ERRLOG_THUMBEOF(ImageInfo) return; } debian/patches/php-fpm-man-section-and-cleanup.patch0000664000000000000000000000274512300436054017614 0ustar Description: Fix php-fpm's manpage section to match location of binary (/usr/sbin,) additionally, remove some stuff that is useless or doesn't apply to Debian. Origin: vendor Forwarded: http://bugs.php.net/52476 Last-Update: 2010-07-29 --- php5.orig/sapi/fpm/php-fpm.8.in +++ php5/sapi/fpm/php-fpm.8.in @@ -126,22 +126,8 @@ The configuration file for the php-fpm d .TP .B php.ini The standard php configuration file. -.SH EXAMPLES -For any unix systems which use init.d for their main process manager, you should use the init script provided to start and stop the php-fpm daemon. -.P -.PD 1 -.RS -sudo /etc/init.d/php-fpm start -.RE -.TP -For any unix systems which use systemd for their main process manager, you should use the unit file provided to start and stop the php-fpm daemon. -.P -.PD 1 -.RS -sudo systemctl start php-fpm.service -.RE -.TP -If your installation has no appropriate init script, launch php-fpm with no arguments. It will launch as a daemon (background process) by default. The file @php_fpm_localstatedir@/run/php-fpm.pid determines whether php-fpm is already up and running. Once started, php-fpm then responds to several POSIX signals: +.SH SIGNAL +Once started, php-fpm then responds to several POSIX signals: .P .PD 0 .RS @@ -155,10 +141,6 @@ If your installation has no appropriate .RE .PD 1 .P -.SH TIPS -The PHP-FPM CGI daemon will work well with most popular webservers, including Apache2, lighttpd and nginx. -.PD 1 -.P .SH SEE ALSO The PHP-FPM website: .PD 0 debian/patches/php-5.4.0-dlopen.patch0000664000000000000000000000144712300436054014353 0ustar --- php5.orig/Zend/zend.h +++ php5/Zend/zend.h @@ -90,11 +90,11 @@ # endif # if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(RTLD_PARENT) -# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT) +# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT) # elif defined(RTLD_DEEPBIND) -# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_DEEPBIND) +# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_DEEPBIND) # else -# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL) +# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL) # endif # define DL_UNLOAD dlclose # if defined(DLSYM_NEEDS_UNDERSCORE) debian/patches/bug71527.patch0000664000000000000000000000432112704222127013022 0ustar From fe13566c93f118a15a96320a546c7878fd0cfc5e Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 28 Mar 2016 00:45:19 +0200 Subject: [PATCH] Fixed bug #71527 Buffer over-write in finfo_open with malformed magic file The actual fix is applying the upstream patch from https://github.com/file/file/commit/6713ca45e7757297381f4b4cdb9cf5e624a9ad36 --- ext/fileinfo/libmagic/funcs.c | 2 +- ext/fileinfo/tests/bug71527.magic | 1 + ext/fileinfo/tests/bug71527.phpt | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 ext/fileinfo/tests/bug71527.magic create mode 100644 ext/fileinfo/tests/bug71527.phpt diff --git a/ext/fileinfo/libmagic/funcs.c b/ext/fileinfo/libmagic/funcs.c index 011ca42..def2f7b 100644 --- a/ext/fileinfo/libmagic/funcs.c +++ b/ext/fileinfo/libmagic/funcs.c @@ -414,7 +414,7 @@ file_check_mem(struct magic_set *ms, unsigned int level) size_t len; if (level >= ms->c.len) { - len = (ms->c.len += 20) * sizeof(*ms->c.li); + len = (ms->c.len += 20 + level) * sizeof(*ms->c.li); ms->c.li = CAST(struct level_info *, (ms->c.li == NULL) ? emalloc(len) : erealloc(ms->c.li, len)); diff --git a/ext/fileinfo/tests/bug71527.magic b/ext/fileinfo/tests/bug71527.magic new file mode 100644 index 0000000..14d7781 --- /dev/null +++ b/ext/fileinfo/tests/bug71527.magic @@ -0,0 +1 @@ +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> \ No newline at end of file diff --git a/ext/fileinfo/tests/bug71527.phpt b/ext/fileinfo/tests/bug71527.phpt new file mode 100644 index 0000000..f5b1d86 --- /dev/null +++ b/ext/fileinfo/tests/bug71527.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #71527 Buffer over-write in finfo_open with malformed magic file +--SKIPIF-- + +--EXPECTF-- +Warning: finfo_open(): Failed to load magic database at '%sbug71527.magic'. in %sbug71527.php on line %d + +Warning: finfo_file() expects parameter 1 to be resource, boolean given in %sbug71527.php on line %d +bool(false) -- 2.1.4 debian/patches/CVE-2015-8876.patch0000664000000000000000000000566412746374416013305 0ustar From e488690d957fce0dbdabe619adbe314ada498215 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 26 Jul 2015 17:09:34 -0700 Subject: [PATCH] Fix bug #70121 (unserialize() could lead to unexpected methods execution / NULL pointer deref) --- Zend/tests/bug70121.phpt | 9 +++++++++ Zend/zend_exceptions.c | 17 +++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 Zend/tests/bug70121.phpt Index: php5-5.5.9+dfsg/Zend/tests/bug70121.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/Zend/tests/bug70121.phpt 2016-07-28 08:22:36.107754568 -0400 @@ -0,0 +1,9 @@ +--TEST-- +Bug #70121 (unserialize() could lead to unexpected methods execution / NULL pointer deref) +--FILE-- + +OK +--EXPECT-- +OK Index: php5-5.5.9+dfsg/Zend/zend_exceptions.c =================================================================== --- php5-5.5.9+dfsg.orig/Zend/zend_exceptions.c 2016-07-28 08:22:36.111754616 -0400 +++ php5-5.5.9+dfsg/Zend/zend_exceptions.c 2016-07-28 08:22:36.107754568 -0400 @@ -41,7 +41,7 @@ if (exception == add_previous || !add_previous || !exception) { return; } - if (Z_TYPE_P(add_previous) != IS_OBJECT && !instanceof_function(Z_OBJCE_P(add_previous), default_exception_ce TSRMLS_CC)) { + if (Z_TYPE_P(add_previous) != IS_OBJECT || !instanceof_function(Z_OBJCE_P(add_previous), default_exception_ce TSRMLS_CC)) { zend_error(E_ERROR, "Cannot set non exception as previous exception"); return; } @@ -611,15 +611,15 @@ int len = 0; zend_fcall_info fci; zval fname; - + DEFAULT_0_PARAMS; - + str = estrndup("", 0); exception = getThis(); ZVAL_STRINGL(&fname, "gettraceasstring", sizeof("gettraceasstring")-1, 1); - while (exception && Z_TYPE_P(exception) == IS_OBJECT) { + while (exception && Z_TYPE_P(exception) == IS_OBJECT && instanceof_function(Z_OBJCE_P(exception), default_exception_ce TSRMLS_CC)) { prev_str = str; _default_exception_get_entry(exception, "message", sizeof("message")-1, &message TSRMLS_CC); _default_exception_get_entry(exception, "file", sizeof("file")-1, &file TSRMLS_CC); @@ -629,6 +629,7 @@ convert_to_string(&file); convert_to_long(&line); + trace = NULL; fci.size = sizeof(fci); fci.function_table = &Z_OBJCE_P(exception)->function_table; fci.function_name = &fname; @@ -641,7 +642,7 @@ zend_call_function(&fci, NULL TSRMLS_CC); - if (Z_TYPE_P(trace) != IS_STRING) { + if (trace && Z_TYPE_P(trace) != IS_STRING) { zval_ptr_dtor(&trace); trace = NULL; } debian/patches/CVE-2015-7803.patch0000664000000000000000000000201412613762210013236 0ustar Description: fix null pointer dereference in phar_get_fp_offset() Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=d698f0ae51f67c9cce870b09c59df3d6ba959244 Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=f98ab19dc0c978e3caaa2614579e4a61f2c317f5 Bug: https://bugs.php.net/bug.php?id=69720 Index: php5-5.6.11+dfsg/ext/phar/util.c =================================================================== --- php5-5.6.11+dfsg.orig/ext/phar/util.c 2015-07-09 20:33:32.000000000 -0400 +++ php5-5.6.11+dfsg/ext/phar/util.c 2015-10-27 16:45:38.051419680 -0400 @@ -494,7 +494,12 @@ (*ret)->is_tar = entry->is_tar; (*ret)->fp = phar_get_efp(entry, 1 TSRMLS_CC); if (entry->link) { - (*ret)->zero = phar_get_fp_offset(phar_get_link_source(entry TSRMLS_CC) TSRMLS_CC); + phar_entry_info *link = phar_get_link_source(entry TSRMLS_CC); + if(!link) { + efree(*ret); + return FAILURE; + } + (*ret)->zero = phar_get_fp_offset(link TSRMLS_CC); } else { (*ret)->zero = phar_get_fp_offset(entry TSRMLS_CC); } debian/patches/series0000664000000000000000000001201713457376137012055 0ustar 001-libtool_fixes.patch 002-static_openssl.patch 006-debian_quirks.patch libtool2.2.patch 033-we_WANT_libtool.patch 044-strtod_arm_fix.patch 052-phpinfo_no_configure.patch 053-extension_api.patch 057-no_apache_installed.patch 100-recode_is_shared.patch 112-proc_open.patch 113-php.ini_securitynotes.patch libdb_is_-ldb use_embedded_timezonedb.patch force_libmysqlclient_r.patch sybase-alias.patch strcmp_null-OnUpdateErrorLog.patch dont-gitclean-in-build.patch qdbm-is-usr_include_qdbm.patch use_embedded_timezonedb_fixes.patch session_save_path.patch php-fpm-man-section-and-cleanup.patch fpm-config.patch php-fpm-sysconfdir.patch lp564920-fix-big-files.patch temporary-path-fixes-for-multiarch.patch gdIOCtx.patch hurd-noptrace.diff php-5.3.9-mysqlnd.patch php-5.3.9-gnusrc.patch php-5.3.3-macropen.patch php-5.2.4-norpath.patch php-fpm-listen-on-unix-socket.patch php-5.2.4-embed.patch php-5.4.0-dlopen.patch php-fpm-m68k.patch expose_all_built_and_installed_apis.patch use_system_timezone.patch CVE-2014-1943.patch imageconvolution-regression.patch CVE-2014-2270.patch CVE-2014-0185.patch CVE-2014-0237.patch CVE-2014-0238.patch CVE-2014-4049.patch CVE-2014-0207.patch CVE-2014-3478.patch CVE-2014-3479.patch CVE-2014-3480.patch CVE-2014-3487.patch CVE-2014-3515.patch CVE-2014-4670.patch CVE-2014-4698.patch CVE-2014-4721.patch CVE-2014-3587.patch CVE-2014-3597.patch CVE-2014-3668.patch CVE-2014-3669.patch CVE-2014-3670.patch curl_embedded_null.patch remove_readelf.patch CVE-2014-8142.patch CVE-2014-9427.patch CVE-2014-9652.patch CVE-2015-0231.patch CVE-2015-0232.patch CVE-2015-1351.patch CVE-2015-1352.patch CVE-2014-8117.patch CVE-2014-9705.patch CVE-2015-0273.patch CVE-2015-2301.patch CVE-2015-2305.patch CVE-2015-2348.patch CVE-2015-2783.patch CVE-2015-2787.patch bug69218.patch bug69441.patch CVE-2015-2783-memleak.patch CVE-2015-3411.patch CVE-2015-4021.patch CVE-2015-4022.patch CVE-2015-4024.patch CVE-2015-4025.patch CVE-2015-4147.patch CVE-2015-4598.patch CVE-2015-4599.patch CVE-2015-4602.patch CVE-2015-4603.patch CVE-2015-4643.patch CVE-2015-4644.patch fix-68185-inconsistent-insteadof-definition.patch CVE-2015-5589-1.patch CVE-2015-5589-2.patch CVE-2015-5590.patch CVE-2015-6831-1.patch CVE-2015-6831-2.patch CVE-2015-6831-3.patch CVE-2015-6832.patch CVE-2015-6833-1.patch CVE-2015-6834-1.patch CVE-2015-6834-2.patch CVE-2015-6834-3.patch CVE-2015-6835-1.patch CVE-2015-6835-2.patch CVE-2015-6836.patch CVE-2015-6837-6838.patch CVE-2015-7803.patch CVE-2015-7804.patch CVE-2014-9767.patch CVE-2015-8835.patch CVE-2015-8838.patch CVE-2016-1903.patch CVE-2016-2554.patch CVE-2016-3141.patch CVE-2016-3142.patch bug64938.patch bug70014.patch bug71527.patch bug71704.patch bug71798.patch bug71860.patch bug71906.patch CVE-2016-4342.patch CVE-2016-4343.patch CVE-2016-4537.patch CVE-2016-4539.patch CVE-2016-4540.patch CVE-2016-4542.patch zlib-largefile-function-renaming.patch CVE-2015-4116.patch CVE-2015-8873.patch CVE-2015-8876.patch CVE-2015-8935.patch CVE-2016-5093.patch CVE-2016-5094.patch CVE-2016-5095.patch CVE-2016-5096.patch CVE-2016-5114.patch CVE-2016-5385.patch CVE-2016-5399.patch CVE-2016-5768.patch CVE-2016-5769.patch CVE-2016-5771.patch CVE-2016-5772.patch CVE-2016-5773.patch CVE-2016-6288.patch CVE-2016-6289.patch CVE-2016-6290.patch CVE-2016-6291.patch CVE-2016-6292.patch CVE-2016-6294.patch CVE-2016-6295.patch CVE-2016-6296.patch CVE-2016-6297.patch fix_exif_tests.patch CVE-2016-7124-1.patch CVE-2016-7124-2.patch CVE-2016-7125.patch CVE-2016-7125-2.patch CVE-2016-7127.patch CVE-2016-7128.patch CVE-2016-7129.patch CVE-2016-7130.patch CVE-2016-7131.patch CVE-2016-7411.patch CVE-2016-7412.patch CVE-2016-7413.patch CVE-2016-7414.patch CVE-2016-7416.patch CVE-2016-7417.patch CVE-2016-7417-2.patch CVE-2016-7418.patch CVE-2014-9912.patch CVE-2014-9912-2.patch CVE-2016-7478-pre.patch CVE-2016-7478-pre2.patch CVE-2016-7478.patch CVE-2016-9137.patch CVE-2016-9934.patch CVE-2016-9935-1.patch CVE-2016-9935-2.patch CVE-2016-9935-3.patch CVE-2016-7479-pre.patch CVE-2016-7479.patch CVE-2016-10158.patch CVE-2016-10159.patch CVE-2016-10160.patch CVE-2016-10161.patch CVE-2015-8994-1.patch CVE-2015-8994-2.patch CVE-2015-8994-3.patch CVE-2016-10397-1.patch CVE-2016-10397-2.patch CVE-2017-11143-1.patch CVE-2017-11143-2.patch CVE-2017-11144.patch CVE-2017-11147.patch CVE-2017-11362.patch CVE-2017-11628.patch CVE-2017-9224.patch CVE-2017-9226.patch CVE-2017-9227.patch CVE-2017-9228.patch CVE-2017-9229.patch CVE-2017-11145.patch CVE-2017-12933.patch CVE-2017-16642.patch CVE-2018-5712.patch CVE-2016-6291-regression.patch CVE-2016-10712.patch CVE-2016-10712-2.patch CVE-2018-7584.patch CVE-2018-10545.patch CVE-2018-10546-1.patch CVE-2018-10546-2.patch CVE-2018-10547.patch CVE-2018-10548.patch CVE-2018-14851.patch CVE-2018-14883.patch bug76582.patch CVE-2019-9020.patch CVE-2019-9021.patch CVE-2019-9023-1.patch CVE-2019-9023-2.patch CVE-2019-9023-3.patch CVE-2019-9023-4.patch CVE-2019-9024.patch CVE-2019-9637.patch CVE-2019-9638-and-CVE-2019-9639.patch CVE-2019-9640.patch CVE-2019-9641.patch Changed-the-way-MAKERNOTE-is-handled-in-case.patch CVE-2019-9675.patch CVE-2019-9022.patch debian/patches/hurd-noptrace.diff0000664000000000000000000000052412300436054014222 0ustar --- php5.orig/sapi/fpm/config.m4 +++ php5/sapi/fpm/config.m4 @@ -147,6 +147,11 @@ AC_DEFUN([AC_FPM_TRACE], pid_t child; int status; + /* broken ptrace on Hurd, avoid hanging */ + #ifdef __GNU__ + return 10; + #endif + if ( (child = fork()) ) { /* parent */ int ret = 0; debian/patches/CVE-2019-9023-3.patch0000664000000000000000000001314013437472473013416 0ustar From 31f59e1f3074ab344b473dde6077a6844ca87264 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 2 Jan 2019 00:36:30 -0800 Subject: [PATCH] Fix more issues with encodilng length Should fix bug #77381, bug #77382, bug #77385, bug #77394. --- ext/mbstring/oniguruma/enc/unicode.c | 1 + ext/mbstring/oniguruma/regcomp.c | 11 +++++------ ext/mbstring/oniguruma/regparse.c | 10 +++------- ext/mbstring/oniguruma/regparse.h | 12 ++++++++++++ ext/mbstring/tests/bug77371.phpt | 2 +- ext/mbstring/tests/bug77381.phpt | 16 ++++++++++++++++ 6 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 ext/mbstring/tests/bug77381.phpt Index: php5-5.5.9+dfsg/ext/mbstring/oniguruma/enc/unicode.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mbstring/oniguruma/enc/unicode.c 2019-03-05 08:10:16.340873845 -0500 +++ php5-5.5.9+dfsg/ext/mbstring/oniguruma/enc/unicode.c 2019-03-05 08:10:16.328873815 -0500 @@ -10971,6 +10971,7 @@ onigenc_unicode_mbc_case_fold(OnigEncodi code = ONIGENC_MBC_TO_CODE(enc, p, end); len = enclen(enc, p); + if (*pp + len > end) len = end - *pp; *pp += len; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI Index: php5-5.5.9+dfsg/ext/mbstring/oniguruma/regcomp.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mbstring/oniguruma/regcomp.c 2019-03-05 08:10:16.340873845 -0500 +++ php5-5.5.9+dfsg/ext/mbstring/oniguruma/regcomp.c 2019-03-05 08:10:16.328873815 -0500 @@ -469,13 +469,13 @@ compile_length_string_node(Node* node, r ambig = NSTRING_IS_AMBIG(node); p = prev = sn->s; - prev_len = enclen(enc, p); + SAFE_ENC_LEN(enc, p, sn->end, prev_len); p += prev_len; slen = 1; rlen = 0; for (; p < sn->end; ) { - len = enclen(enc, p); + SAFE_ENC_LEN(enc, p, sn->end, len); if (len == prev_len) { slen++; } @@ -518,13 +518,12 @@ compile_string_node(Node* node, regex_t* ambig = NSTRING_IS_AMBIG(node); p = prev = sn->s; - prev_len = enclen(enc, p); + SAFE_ENC_LEN(enc, p, end, prev_len); p += prev_len; slen = 1; for (; p < end; ) { - len = enclen(enc, p); - if (p + len > end) len = end - p; + SAFE_ENC_LEN(enc, p, end, len); if (len == prev_len) { slen++; } @@ -3392,7 +3391,7 @@ expand_case_fold_string(Node* node, rege goto err; } - len = enclen(reg->enc, p); + SAFE_ENC_LEN(reg->enc, p, end, len); if (n == 0) { if (IS_NULL(snode)) { Index: php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mbstring/oniguruma/regparse.c 2019-03-05 08:10:16.340873845 -0500 +++ php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.c 2019-03-05 08:10:16.328873815 -0500 @@ -246,12 +246,6 @@ strdup_with_null(OnigEncoding enc, UChar } #endif -#if (defined (__GNUC__) && __GNUC__ > 2 ) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX) -# define UNEXPECTED(condition) __builtin_expect(condition, 0) -#else -# define UNEXPECTED(condition) (condition) -#endif - /* scan pattern methods */ #define PEND_VALUE 0 @@ -3582,7 +3576,9 @@ fetch_token(OnigToken* tok, UChar** src, tok->u.code = (OnigCodePoint )num; } else { /* string */ - p = tok->backp + enclen(enc, tok->backp); + int len; + SAFE_ENC_LEN(enc, tok->backp, end, len); + p = tok->backp + len; } break; } Index: php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.h =================================================================== --- php5-5.5.9+dfsg.orig/ext/mbstring/oniguruma/regparse.h 2019-03-05 08:10:16.340873845 -0500 +++ php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.h 2019-03-05 08:10:16.336873834 -0500 @@ -348,4 +348,16 @@ extern int onig_print_names(FILE*, regex #endif #endif +#if (defined (__GNUC__) && __GNUC__ > 2 ) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX) +# define UNEXPECTED(condition) __builtin_expect(condition, 0) +#else +# define UNEXPECTED(condition) (condition) +#endif + +#define SAFE_ENC_LEN(enc, p, end, res) do { \ + int __res = enclen(enc, p); \ + if (UNEXPECTED(p + __res > end)) __res = end - p; \ + res = __res; \ +} while(0); + #endif /* REGPARSE_H */ Index: php5-5.5.9+dfsg/ext/mbstring/tests/bug77371.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/mbstring/tests/bug77371.phpt 2019-03-05 08:10:16.340873845 -0500 +++ php5-5.5.9+dfsg/ext/mbstring/tests/bug77371.phpt 2019-03-05 08:10:16.336873834 -0500 @@ -4,7 +4,7 @@ Bug #77371 (heap buffer overflow in mb r --FILE-- --EXPECT-- bool(false) \ No newline at end of file Index: php5-5.5.9+dfsg/ext/mbstring/tests/bug77381.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/mbstring/tests/bug77381.phpt 2019-03-05 08:10:16.336873834 -0500 @@ -0,0 +1,16 @@ +--TEST-- +Bug #77381 (heap buffer overflow in multibyte match_at) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +int(1) +bool(false) +bool(false) +bool(false) debian/patches/CVE-2014-3668.patch0000664000000000000000000000641712423726125013261 0ustar From 44035de79f5b9646064d9bdd0329a946b0c5372a Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 28 Sep 2014 17:33:44 -0700 Subject: [PATCH] Fix bug #68027 - fix date parsing in XMLRPC lib --- ext/xmlrpc/libxmlrpc/xmlrpc.c | 13 ++++++++----- ext/xmlrpc/tests/bug68027.phpt | 44 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 ext/xmlrpc/tests/bug68027.phpt diff --git a/ext/xmlrpc/libxmlrpc/xmlrpc.c b/ext/xmlrpc/libxmlrpc/xmlrpc.c index ce70c2a..b766a54 100644 --- a/ext/xmlrpc/libxmlrpc/xmlrpc.c +++ b/ext/xmlrpc/libxmlrpc/xmlrpc.c @@ -219,16 +219,19 @@ static int date_from_ISO8601 (const char *text, time_t * value) { n = 10; tm.tm_mon = 0; for(i = 0; i < 2; i++) { - XMLRPC_IS_NUMBER(text[i]) + XMLRPC_IS_NUMBER(text[i+4]) tm.tm_mon += (text[i+4]-'0')*n; n /= 10; } tm.tm_mon --; + if(tm.tm_mon < 0 || tm.tm_mon > 11) { + return -1; + } n = 10; tm.tm_mday = 0; for(i = 0; i < 2; i++) { - XMLRPC_IS_NUMBER(text[i]) + XMLRPC_IS_NUMBER(text[i+6]) tm.tm_mday += (text[i+6]-'0')*n; n /= 10; } @@ -236,7 +239,7 @@ static int date_from_ISO8601 (const char *text, time_t * value) { n = 10; tm.tm_hour = 0; for(i = 0; i < 2; i++) { - XMLRPC_IS_NUMBER(text[i]) + XMLRPC_IS_NUMBER(text[i+9]) tm.tm_hour += (text[i+9]-'0')*n; n /= 10; } @@ -244,7 +247,7 @@ static int date_from_ISO8601 (const char *text, time_t * value) { n = 10; tm.tm_min = 0; for(i = 0; i < 2; i++) { - XMLRPC_IS_NUMBER(text[i]) + XMLRPC_IS_NUMBER(text[i+12]) tm.tm_min += (text[i+12]-'0')*n; n /= 10; } @@ -252,7 +255,7 @@ static int date_from_ISO8601 (const char *text, time_t * value) { n = 10; tm.tm_sec = 0; for(i = 0; i < 2; i++) { - XMLRPC_IS_NUMBER(text[i]) + XMLRPC_IS_NUMBER(text[i+15]) tm.tm_sec += (text[i+15]-'0')*n; n /= 10; } diff --git a/ext/xmlrpc/tests/bug68027.phpt b/ext/xmlrpc/tests/bug68027.phpt new file mode 100644 index 0000000..a5c96f1 --- /dev/null +++ b/ext/xmlrpc/tests/bug68027.phpt @@ -0,0 +1,44 @@ +--TEST-- +Bug #68027 (buffer overflow in mkgmtime() function) +--SKIPIF-- + +--FILE-- +$datetime"); +print_r($obj); + +$datetime = "34770-0-08T21:46:40-0400"; +$obj = xmlrpc_decode("$datetime"); +print_r($obj); + +echo "Done\n"; +?> +--EXPECTF-- +object(stdClass)#1 (3) { + ["scalar"]=> + string(16) "6-01-01 20:00:00" + ["xmlrpc_type"]=> + string(8) "datetime" + ["timestamp"]=> + int(%d) +} +stdClass Object +( + [scalar] => 2001-0-08T21:46:40-0400 + [xmlrpc_type] => datetime + [timestamp] => %s +) +stdClass Object +( + [scalar] => 34770-0-08T21:46:40-0400 + [xmlrpc_type] => datetime + [timestamp] => %d +) +Done -- 2.1.0 debian/patches/Changed-the-way-MAKERNOTE-is-handled-in-case.patch0000664000000000000000000000433013456142245021421 0ustar From d5796fb298abb2a3e389818ad924589fa35e58b9 Mon Sep 17 00:00:00 2001 From: Kalle Sommer Nielsen Date: Wed, 3 Aug 2016 17:05:31 +0200 Subject: [PATCH] Changed the way MAKERNOTE is handled in case we do not have a matching signature (Remi). Before this patch, exif_process_IFD_in_MAKERNOTE() would return false, then causing the rest of the EXIF parsing to be interrupted. This is a regression from earlier which was most likely a part of a security fix for MAKERNOTE. The new behavior is to instead of stopping to parse, to continue so we can still fetch data like thumbnail and GPS, thrus allowing yet unsupported formats to parse. If EXIF's debugging mode is enabled, a notice will display in case we do not match against a valid MAKERNOTE signature. This should temporarily fix bug #72682 (exif_read_data() fails to read all data for some images) until I get around to debug it further. (cherry picked from commit aabcb5481d9e717df77192dab2894468b9fc63b4) diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 8f6a3784..e602d99c 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -1733,6 +1733,10 @@ static void exif_iif_add_value(image_info_type *image_info, int section_index, c if (!length) break; case TAG_FMT_UNDEFINED: + if (tag == TAG_MAKER_NOTE) { + length = MIN(length, strlen(value)); + } + if (value) { /* do not recompute length here */ info_value->s = estrndup(value, length); @@ -2752,8 +2756,14 @@ static int exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * valu int data_len; for (i=0; i<=sizeof(maker_note_array)/sizeof(maker_note_type); i++) { - if (i==sizeof(maker_note_array)/sizeof(maker_note_type)) - return FALSE; + if (i==sizeof(maker_note_array)/sizeof(maker_note_type)) { +#ifdef EXIF_DEBUG + exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "No maker note data found. Detected maker: %s (length = %d)", ImageInfo->make, strlen(ImageInfo->make)); +#endif + /* unknown manufacturer, not an error, use it as a string */ + return TRUE; + } + maker_note = maker_note_array+i; /*exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "check (%s,%s)", maker_note->make?maker_note->make:"", maker_note->model?maker_note->model:"");*/ debian/patches/CVE-2019-9638-and-CVE-2019-9639.patch0000664000000000000000000000453313444735563015454 0ustar From b82437eeddadf6a3a8c0f492acb6861682cd4d93 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 2 Mar 2019 15:07:40 -0800 Subject: [PATCH] Fix bug #77563 - Uninitialized read in exif_process_IFD_in_MAKERNOTE Also fix for bug #77659 --- ext/exif/exif.c | 3 ++- ext/exif/tests/bug77563.jpg | Bin 0 -> 63 bytes ext/exif/tests/bug77563.phpt | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 ext/exif/tests/bug77563.jpg create mode 100644 ext/exif/tests/bug77563.phpt diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 7fd53888..029d04ed 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -2766,7 +2766,7 @@ static int exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * valu break; } - if (maker_note->offset >= value_len) { + if (value_len < 2 || maker_note->offset >= value_len - 1) { /* Do not go past the value end */ exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "IFD data too short: 0x%04X offset 0x%04X", value_len, maker_note->offset); return FALSE; @@ -2819,6 +2819,7 @@ static int exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * valu break; default: case MN_OFFSET_NORMAL: + data_len = value_len; break; } #diff --git a/ext/exif/tests/bug77563.jpg b/ext/exif/tests/bug77563.jpg #new file mode 100644 #index 0000000000000000000000000000000000000000..d6280151f096c2bbeb25477ce88360c0096f476e #GIT binary patch #literal 63 #zcmex=;~|5MYei-n1B0(GgBAk=0}l{0FfcLlGcW>aRv=cJR0C#n0@>Prp5Fd`ewo?% #Hc_1+Wd}j(# # #literal 0 #HcmV?d00001 # diff --git a/ext/exif/tests/bug77563.phpt b/ext/exif/tests/bug77563.phpt new file mode 100644 index 00000000..c1458866 --- /dev/null +++ b/ext/exif/tests/bug77563.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug 77563 (Uninitialized read in exif_process_IFD_in_MAKERNOTE) +--SKIPIF-- + +--FILE-- + +DONE +--EXPECTF-- +Warning: exif_thumbnail(bug77563.jpg): Illegal IFD offset in %s/bug77563.php on line %d + +Warning: exif_thumbnail(bug77563.jpg): File structure corrupted in %s/bug77563.php on line %d + +Warning: exif_thumbnail(bug77563.jpg): Invalid JPEG file in %s/bug77563.php on line %d +DONE \ No newline at end of file -- 2.20.1 debian/patches/CVE-2015-8935.patch0000664000000000000000000000675612746433545013303 0ustar Description: fix XSS in header() with Internet Explorer Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=996faf964bba1aec06b153b370a7f20d3dd2bb8b Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=9ba4db5e5d6aae8b1df934fbe26ea976b026576d Bug: https://bugs.php.net/bug.php?id=68978 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1594041 Index: php5-5.5.9+dfsg/ext/standard/tests/general_functions/bug60227_2.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/general_functions/bug60227_2.phpt 2016-07-28 12:45:20.883908619 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/general_functions/bug60227_2.phpt 2016-07-28 12:46:55.273158831 -0400 @@ -1,14 +1,15 @@ --TEST-- Bug #60227 (header() cannot detect the multi-line header with CR), \r before \n +--INI-- +expose_php=0 --FILE-- --EXPECTF-- + Warning: Header may not contain more than a single header, new line detected in %s on line %d foo --EXPECTHEADERS-- -X-foo: e -foo +Content-type: text/html Index: php5-5.5.9+dfsg/ext/standard/tests/general_functions/bug60227_3.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/general_functions/bug60227_3.phpt 2016-07-28 12:45:20.883908619 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/general_functions/bug60227_3.phpt 2016-07-28 12:46:55.273158831 -0400 @@ -1,8 +1,9 @@ --TEST-- Bug #60227 (header() cannot detect the multi-line header with CR), \0 before \n +--INI-- +expose_php=0 --FILE-- @@ -10,5 +11,4 @@ Warning: Header may not contain NUL bytes in %s on line %d foo --EXPECTHEADERS-- -X-foo: e -foo +Content-type: text/html Index: php5-5.5.9+dfsg/ext/standard/tests/general_functions/bug60227_4.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/general_functions/bug60227_4.phpt 2016-07-28 12:45:20.883908619 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/general_functions/bug60227_4.phpt 2016-07-28 12:46:55.273158831 -0400 @@ -1,8 +1,9 @@ --TEST-- Bug #60227 (header() cannot detect the multi-line header with CR), CRLF +--INI-- +expose_php=0 --FILE-- @@ -10,5 +11,4 @@ Warning: Header may not contain more than a single header, new line detected in %s on line %d foo --EXPECTHEADERS-- -X-foo: e - foo +Content-type: text/html Index: php5-5.5.9+dfsg/main/SAPI.c =================================================================== --- php5-5.5.9+dfsg.orig/main/SAPI.c 2016-07-28 12:45:20.883908619 -0400 +++ php5-5.5.9+dfsg/main/SAPI.c 2016-07-28 12:45:20.883908619 -0400 @@ -743,13 +743,8 @@ /* new line/NUL character safety check */ int i; for (i = 0; i < header_line_len; i++) { - /* RFC 2616 allows new lines if followed by SP or HT */ - int illegal_break = - (header_line[i+1] != ' ' && header_line[i+1] != '\t') - && ( - header_line[i] == '\n' - || (header_line[i] == '\r' && header_line[i+1] != '\n')); - if (illegal_break) { + /* RFC 7230 ch. 3.2.4 deprecates folding support */ + if (header_line[i] == '\n' || header_line[i] == '\r') { efree(header_line); sapi_module.sapi_error(E_WARNING, "Header may not contain " "more than a single header, new line detected"); debian/patches/bug76582.patch0000664000000000000000000000151713347655614013053 0ustar From 23b057742e3cf199612fa8050ae86cae675e214e Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 28 Jul 2018 22:16:29 -0700 Subject: [PATCH] Fix for bug #76582 The brigade seems to end up in a messed up state if something fails in shutdown, so we clean it up. --- sapi/apache2handler/sapi_apache2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c index 6fa2521..0ebca9b 100644 --- a/sapi/apache2handler/sapi_apache2.c +++ b/sapi/apache2handler/sapi_apache2.c @@ -678,6 +678,7 @@ zend_first_try { if (!parent_req) { php_apache_request_dtor(r TSRMLS_CC); ctx->request_processed = 1; + apr_brigade_cleanup(brigade); bucket = apr_bucket_eos_create(r->connection->bucket_alloc); APR_BRIGADE_INSERT_TAIL(brigade, bucket); -- 2.1.4 debian/patches/CVE-2016-9137.patch0000664000000000000000000001021513046611225013243 0ustar From 0e6fe3a4c96be2d3e88389a5776f878021b4c59f Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 25 Sep 2016 19:53:59 -0700 Subject: [PATCH] Fix bug #73147: Use After Free in PHP7 unserialize() --- Zend/zend_API.c | 24 ++++++++++++++++++++++++ Zend/zend_API.h | 1 + ext/curl/curl_file.c | 5 ++++- ext/curl/tests/bug73147.phpt | 20 ++++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 ext/curl/tests/bug73147.phpt Index: php5-5.5.9+dfsg/Zend/zend_API.c =================================================================== --- php5-5.5.9+dfsg.orig/Zend/zend_API.c 2017-02-08 07:44:03.042957677 -0500 +++ php5-5.5.9+dfsg/Zend/zend_API.c 2017-02-08 07:44:03.042957677 -0500 @@ -3721,6 +3721,30 @@ } /* }}} */ +ZEND_API void zend_unset_property(zend_class_entry *scope, zval *object, const char *name, int name_length TSRMLS_DC) /* {{{ */ +{ + zval *property; + zend_class_entry *old_scope = EG(scope); + + EG(scope) = scope; + + if (!Z_OBJ_HT_P(object)->unset_property) { + const char *class_name; + zend_uint class_name_len; + + zend_get_object_classname(object, &class_name, &class_name_len TSRMLS_CC); + + zend_error(E_CORE_ERROR, "Property %s of class %s cannot be unset", name, class_name); + } + MAKE_STD_ZVAL(property); + ZVAL_STRINGL(property, name, name_length, 1); + Z_OBJ_HT_P(object)->unset_property(object, property, 0 TSRMLS_CC); + zval_ptr_dtor(&property); + + EG(scope) = old_scope; +} +/* }}} */ + ZEND_API void zend_update_property_null(zend_class_entry *scope, zval *object, const char *name, int name_length TSRMLS_DC) /* {{{ */ { zval *tmp; Index: php5-5.5.9+dfsg/Zend/zend_API.h =================================================================== --- php5-5.5.9+dfsg.orig/Zend/zend_API.h 2017-02-08 07:44:03.042957677 -0500 +++ php5-5.5.9+dfsg/Zend/zend_API.h 2017-02-08 07:44:03.042957677 -0500 @@ -327,6 +327,7 @@ ZEND_API void zend_update_property_double(zend_class_entry *scope, zval *object, const char *name, int name_length, double value TSRMLS_DC); ZEND_API void zend_update_property_string(zend_class_entry *scope, zval *object, const char *name, int name_length, const char *value TSRMLS_DC); ZEND_API void zend_update_property_stringl(zend_class_entry *scope, zval *object, const char *name, int name_length, const char *value, int value_length TSRMLS_DC); +ZEND_API void zend_unset_property(zend_class_entry *scope, zval *object, const char *name, int name_length TSRMLS_DC); ZEND_API int zend_update_static_property(zend_class_entry *scope, const char *name, int name_length, zval *value TSRMLS_DC); ZEND_API int zend_update_static_property_null(zend_class_entry *scope, const char *name, int name_length TSRMLS_DC); Index: php5-5.5.9+dfsg/ext/curl/curl_file.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/curl/curl_file.c 2017-02-08 07:44:03.042957677 -0500 +++ php5-5.5.9+dfsg/ext/curl/curl_file.c 2017-02-08 07:44:03.042957677 -0500 @@ -137,7 +137,10 @@ Unserialization handler */ ZEND_METHOD(CURLFile, __wakeup) { - zend_update_property_string(curl_CURLFile_class, getThis(), "name", sizeof("name")-1, "" TSRMLS_CC); + zval *_this = getThis(); + + zend_unset_property(curl_CURLFile_class, _this, "name", sizeof("name")-1 TSRMLS_CC); + zend_update_property_string(curl_CURLFile_class, _this, "name", sizeof("name")-1, "" TSRMLS_CC); zend_throw_exception(NULL, "Unserialization of CURLFile instances is not allowed", 0 TSRMLS_CC); } /* }}} */ Index: php5-5.5.9+dfsg/ext/curl/tests/bug73147.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/curl/tests/bug73147.phpt 2017-02-08 07:44:03.042957677 -0500 @@ -0,0 +1,20 @@ +--TEST-- +Bug #73147: Use After Free in PHP7 unserialize() +--SKIPIF-- + +--FILE-- +getMessage(); +} +?> +--EXPECT-- +Unserialization of CURLFile instances is not allowed debian/patches/006-debian_quirks.patch0000664000000000000000000001353112300436054014763 0ustar Description: Changes to make php use versioned paths and other minor cleanup changes. Origin: vendor Forwarded: not-needed Last-Update: 2010-01-18 --- php5.orig/configure.in +++ php5/configure.in @@ -1068,7 +1068,7 @@ if test "$PHP_CLI" = "no"; then fi PHP_ARG_WITH(pear, [whether to install PEAR], -[ --with-pear=DIR Install PEAR in DIR @<:@PREFIX/lib/php@:>@ +[ --with-pear=DIR Install PEAR in DIR @<:@PREFIX/lib/php5@:>@ --without-pear Do not install PEAR], DEFAULT, yes) if test "$PHP_PEAR" != "no"; then @@ -1098,7 +1098,7 @@ dnl if test "$PHP_PEAR" = "DEFAULT" || test "$PHP_PEAR" = "yes"; then case $PHP_LAYOUT in GNU) PEAR_INSTALLDIR=$datadir/pear;; - *) PEAR_INSTALLDIR=$libdir/php;; + *) PEAR_INSTALLDIR=$libdir/php5;; esac fi @@ -1153,12 +1153,12 @@ test "$program_suffix" = "NONE" && progr case $libdir in '${exec_prefix}/lib') - libdir=$libdir/php + libdir=$libdir/php5 ;; esac case $datadir in '${prefix}/share') - datadir=$datadir/php + datadir=$datadir/php5 ;; esac @@ -1225,7 +1225,7 @@ EXPANDED_SYSCONFDIR=`eval echo $sysconfd EXPANDED_DATADIR=$datadir EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"` EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"` -INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR +INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR:/usr/share/pear exec_prefix=$old_exec_prefix libdir=$old_libdir --- php5.orig/ext/ext_skel +++ php5/ext/ext_skel @@ -70,7 +70,7 @@ if test -d "$extname" ; then fi if test -z "$skel_dir"; then - skel_dir="skeleton" + skel_dir="/usr/lib/php5/skeleton" fi ## convert skel_dir to full path --- php5.orig/php.ini-development +++ php5/php.ini-development @@ -703,7 +703,7 @@ default_mimetype = "text/html" ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: "/path1:/path2" -;include_path = ".:/php/includes" +;include_path = ".:/usr/share/php" ; ; Windows: "\path1;\path2" ;include_path = ".;c:\php\includes" --- php5.orig/php.ini-production +++ php5/php.ini-production @@ -703,7 +703,7 @@ default_mimetype = "text/html" ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: "/path1:/path2" -;include_path = ".:/php/includes" +;include_path = ".:/usr/share/php" ; ; Windows: "\path1;\path2" ;include_path = ".;c:\php\includes" @@ -864,50 +864,6 @@ default_socket_timeout = 60 ; If you only provide the name of the extension, PHP will look for it in its ; default extension directory. ; -; Windows Extensions -; Note that ODBC support is built in, so no dll is needed for it. -; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5) -; extension folders as well as the separate PECL DLL download (PHP 5). -; Be sure to appropriately set the extension_dir directive. -; -;extension=php_bz2.dll -;extension=php_curl.dll -;extension=php_fileinfo.dll -;extension=php_gd2.dll -;extension=php_gettext.dll -;extension=php_gmp.dll -;extension=php_intl.dll -;extension=php_imap.dll -;extension=php_interbase.dll -;extension=php_ldap.dll -;extension=php_mbstring.dll -;extension=php_exif.dll ; Must be after mbstring as it depends on it -;extension=php_mysql.dll -;extension=php_mysqli.dll -;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client -;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client -;extension=php_openssl.dll -;extension=php_pdo_firebird.dll -;extension=php_pdo_mysql.dll -;extension=php_pdo_oci.dll -;extension=php_pdo_odbc.dll -;extension=php_pdo_pgsql.dll -;extension=php_pdo_sqlite.dll -;extension=php_pgsql.dll -;extension=php_pspell.dll -;extension=php_shmop.dll - -; The MIBS data available in the PHP distribution must be installed. -; See http://www.php.net/manual/en/snmp.installation.php -;extension=php_snmp.dll - -;extension=php_soap.dll -;extension=php_sockets.dll -;extension=php_sqlite3.dll -;extension=php_sybase_ct.dll -;extension=php_tidy.dll -;extension=php_xmlrpc.dll -;extension=php_xsl.dll ;;;;;;;;;;;;;;;;;;; ; Module Settings ; --- php5.orig/sapi/cli/php.1.in +++ php5/sapi/cli/php.1.in @@ -374,13 +374,14 @@ Shows configuration for extension Show configuration file names .SH FILES .TP 15 -.B php\-cli.ini +.B /etc/php5/cli/php.ini The configuration file for the CLI version of PHP. .TP -.B php.ini -The standard configuration file will only be used when -.B php\-cli.ini -cannot be found. +.B /etc/php5/cgi/php.ini +The configuration file for the CGI version of PHP. +.TP +.B /etc/php5/apache2/php.ini +The configuration file for the version of PHP that apache2 uses. .SH EXAMPLES .TP 5 \fIphp \-r 'echo "Hello World\\n";'\fP --- php5.orig/scripts/Makefile.frag +++ php5/scripts/Makefile.frag @@ -3,8 +3,8 @@ # Build environment install # -phpincludedir = $(includedir)/php -phpbuilddir = $(libdir)/build +phpincludedir = $(includedir)/php5 +phpbuilddir = $(prefix)/lib/php5/build BUILD_FILES = \ scripts/phpize.m4 \ --- php5.orig/scripts/php-config.in +++ php5/scripts/php-config.in @@ -6,9 +6,9 @@ datarootdir="@datarootdir@" exec_prefix="@exec_prefix@" version="@PHP_VERSION@" vernum="@PHP_VERSION_ID@" -include_dir="@includedir@/php" -includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/lib" -ldflags="@PHP_LDFLAGS@" +include_dir="@includedir@/php5" +includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/lib $(getconf LFS_CFLAGS)" +ldflags="-L$prefix/lib/php5 @PHP_LDFLAGS@" libs="@EXTRA_LIBS@" extension_dir='@EXTENSION_DIR@' man_dir=`eval echo @mandir@` --- php5.orig/scripts/phpize.in +++ php5/scripts/phpize.in @@ -4,8 +4,8 @@ prefix='@prefix@' datarootdir='@datarootdir@' exec_prefix="`eval echo @exec_prefix@`" -phpdir="`eval echo @libdir@`/build" -includedir="`eval echo @includedir@`/php" +phpdir="$prefix/lib/php5/build" +includedir="$prefix/include/php5" builddir="`pwd`" SED="@SED@" debian/patches/CVE-2018-10545.patch0000664000000000000000000000774113275032404013332 0ustar From d20bebfe1340986f795769e2ad6810f36eadf2ca Mon Sep 17 00:00:00 2001 From: Jakub Zelenka Date: Wed, 7 Mar 2018 18:12:56 +0000 Subject: [PATCH] Do not set PR_SET_DUMPABLE by default --- sapi/fpm/fpm/fpm_conf.c | 3 +++ sapi/fpm/fpm/fpm_conf.h | 1 + sapi/fpm/fpm/fpm_unix.c | 2 +- sapi/fpm/php-fpm.conf.in | 6 ++++++ 4 files changed, 11 insertions(+), 1 deletion(-) Index: php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_conf.c =================================================================== --- php5-5.5.9+dfsg.orig/sapi/fpm/fpm/fpm_conf.c 2018-05-10 08:02:33.455380891 -0400 +++ php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_conf.c 2018-05-10 08:03:03.591377029 -0400 @@ -128,6 +128,7 @@ static struct ini_value_parser_s ini_fpm { "listen.mode", &fpm_conf_set_string, WPO(listen_mode) }, { "listen.allowed_clients", &fpm_conf_set_string, WPO(listen_allowed_clients) }, { "process.priority", &fpm_conf_set_integer, WPO(process_priority) }, + { "process.dumpable", &fpm_conf_set_boolean, WPO(process_dumpable) }, { "pm", &fpm_conf_set_pm, WPO(pm) }, { "pm.max_children", &fpm_conf_set_integer, WPO(pm_max_children) }, { "pm.start_servers", &fpm_conf_set_integer, WPO(pm_start_servers) }, @@ -603,6 +604,7 @@ static void *fpm_worker_pool_config_allo wp->config->listen_backlog = FPM_BACKLOG_DEFAULT; wp->config->pm_process_idle_timeout = 10; /* 10s by default */ wp->config->process_priority = 64; /* 64 means unset */ + wp->config->process_dumpable = 0; if (!fpm_worker_all_pools) { fpm_worker_all_pools = wp; @@ -1580,6 +1582,7 @@ static void fpm_conf_dump() /* {{{ */ } else { zlog(ZLOG_NOTICE, "\tprocess.priority = %d", wp->config->process_priority); } + zlog(ZLOG_NOTICE, "\tprocess.dumpable = %s", BOOL2STR(wp->config->process_dumpable)); zlog(ZLOG_NOTICE, "\tpm = %s", PM2STR(wp->config->pm)); zlog(ZLOG_NOTICE, "\tpm.max_children = %d", wp->config->pm_max_children); zlog(ZLOG_NOTICE, "\tpm.start_servers = %d", wp->config->pm_start_servers); Index: php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_conf.h =================================================================== --- php5-5.5.9+dfsg.orig/sapi/fpm/fpm/fpm_conf.h 2018-05-10 08:02:33.455380891 -0400 +++ php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_conf.h 2018-05-10 08:02:33.455380891 -0400 @@ -63,6 +63,7 @@ struct fpm_worker_pool_config_s { char *listen_mode; char *listen_allowed_clients; int process_priority; + int process_dumpable; int pm; int pm_max_children; int pm_start_servers; Index: php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_unix.c =================================================================== --- php5-5.5.9+dfsg.orig/sapi/fpm/fpm/fpm_unix.c 2018-05-10 08:02:33.455380891 -0400 +++ php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_unix.c 2018-05-10 08:02:33.455380891 -0400 @@ -214,7 +214,7 @@ int fpm_unix_init_child(struct fpm_worke } #ifdef HAVE_PRCTL - if (0 > prctl(PR_SET_DUMPABLE, 1, 0, 0, 0)) { + if (wp->config->process_dumpable && 0 > prctl(PR_SET_DUMPABLE, 1, 0, 0, 0)) { zlog(ZLOG_SYSERROR, "[pool %s] failed to prctl(PR_SET_DUMPABLE)", wp->config->name); } #endif Index: php5-5.5.9+dfsg/sapi/fpm/php-fpm.conf.in =================================================================== --- php5-5.5.9+dfsg.orig/sapi/fpm/php-fpm.conf.in 2018-05-10 08:02:33.455380891 -0400 +++ php5-5.5.9+dfsg/sapi/fpm/php-fpm.conf.in 2018-05-10 08:02:33.455380891 -0400 @@ -191,6 +191,12 @@ listen = /var/run/php5-fpm.sock ; Default Value: no set ; priority = -19 +; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user +; or group is differrent than the master process user. It allows to create process +; core dump and ptrace the process for the pool user. +; Default Value: no +; process.dumpable = yes + ; Choose how the process manager will control the number of child processes. ; Possible Values: ; static - a fixed number (pm.max_children) of child processes; debian/patches/CVE-2014-0237.patch0000664000000000000000000000331512350617025013235 0ustar From 68ce2d0ea6da79b12a365e375e1c2ce882c77480 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 26 May 2014 17:50:14 -0700 Subject: [PATCH] Fix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degradation) Upstream patch: https://github.com/file/file/commit/b8acc83781d5a24cc5101e525d15efe0482c280d --- ext/fileinfo/libmagic/cdf.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index dd7177e..8dacd2f 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -942,7 +942,7 @@ int cdf_unpack_summary_info(const cdf_stream_t *sst, const cdf_header_t *h, cdf_summary_info_header_t *ssi, cdf_property_info_t **info, size_t *count) { - size_t i, maxcount; + size_t maxcount; const cdf_summary_info_header_t *si = CAST(const cdf_summary_info_header_t *, sst->sst_tab); const cdf_section_declaration_t *sd = @@ -957,21 +957,13 @@ cdf_unpack_summary_info(const cdf_stream_t *sst, const cdf_header_t *h, ssi->si_os = CDF_TOLE2(si->si_os); ssi->si_class = si->si_class; cdf_swap_class(&ssi->si_class); - ssi->si_count = CDF_TOLE2(si->si_count); + ssi->si_count = CDF_TOLE4(si->si_count); *count = 0; maxcount = 0; *info = NULL; - for (i = 0; i < CDF_TOLE4(si->si_count); i++) { - if (i >= CDF_LOOP_LIMIT) { - DPRINTF(("Unpack summary info loop limit")); - errno = EFTYPE; - return -1; - } - if (cdf_read_property_info(sst, h, CDF_TOLE4(sd->sd_offset), - info, count, &maxcount) == -1) { + if (cdf_read_property_info(sst, h, CDF_TOLE4(sd->sd_offset), info, + count, &maxcount) == -1) return -1; - } - } return 0; } -- 1.9.2 debian/patches/CVE-2017-11143-2.patch0000664000000000000000000000263213141101254013445 0ustar From f269cdcd4f76accbecd03884f327cffb9a7f1ca9 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Jul 2017 21:10:08 -0700 Subject: [PATCH] Improve fix for #74145 --- ext/wddx/wddx.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2017-08-04 10:20:26.218862666 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2017-08-04 10:20:26.214862666 -0400 @@ -791,18 +791,23 @@ static void php_wddx_push_element(void * } else if (!strcmp(name, EL_BOOLEAN)) { int i; - ALLOC_ZVAL(ent.data); - INIT_PZVAL(ent.data); - Z_TYPE_P(ent.data) = IS_BOOL; - ent.type = ST_BOOLEAN; - SET_STACK_VARNAME; if (atts) for (i = 0; atts[i]; i++) { if (!strcmp(atts[i], EL_VALUE) && atts[i+1] && atts[i+1][0]) { + ALLOC_ZVAL(ent.data); + INIT_PZVAL(ent.data); + Z_TYPE_P(ent.data) = IS_BOOL; + ent.type = ST_BOOLEAN; + SET_STACK_VARNAME; wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); php_wddx_process_data(user_data, atts[i+1], strlen(atts[i+1])); break; } } else { + ALLOC_ZVAL(ent.data); + INIT_PZVAL(ent.data); + Z_TYPE_P(ent.data) = IS_BOOL; + ent.type = ST_BOOLEAN; + SET_STACK_VARNAME; ZVAL_FALSE(ent.data); wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); } debian/patches/CVE-2016-2554.patch0000664000000000000000000000633612704222025013244 0ustar Backport of: From 07c7df68bd68bbe706371fccc77c814ebb335d9e Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 31 Jan 2016 19:37:56 -0800 Subject: [PATCH] Fixed bug #71488: Stack overflow when decompressing tar archives --- ext/phar/tar.c | 22 ++++++++++++++++------ ext/phar/tests/bug71488.phpt | 16 ++++++++++++++++ ext/phar/tests/bug71488.tar | Bin 0 -> 10240 bytes 3 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 ext/phar/tests/bug71488.phpt create mode 100644 ext/phar/tests/bug71488.tar Index: php5-5.5.9+dfsg/ext/phar/tar.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/tar.c 2016-04-15 13:25:09.268858120 -0400 +++ php5-5.5.9+dfsg/ext/phar/tar.c 2016-04-15 13:25:09.264858068 -0400 @@ -192,6 +192,13 @@ } /* }}} */ +#if !HAVE_STRNLEN +static size_t strnlen(const char *s, size_t maxlen) { + char *r = (char *)memchr(s, '\0', maxlen); + return r ? r-s : maxlen; +} +#endif + int phar_parse_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, int alias_len, phar_archive_data** pphar, int is_data, php_uint32 compression, char **error TSRMLS_DC) /* {{{ */ { char buf[512], *actual_alias = NULL, *p; @@ -201,6 +208,7 @@ php_uint32 sum1, sum2, size, old; phar_archive_data *myphar, **actual; int last_was_longlink = 0; + int linkname_len; if (error) { *error = NULL; @@ -255,7 +263,7 @@ size = entry.uncompressed_filesize = entry.compressed_filesize = phar_tar_number(hdr->size, sizeof(hdr->size)); - if (((!old && hdr->prefix[0] == 0) || old) && strlen(hdr->name) == sizeof(".phar/signature.bin")-1 && !strncmp(hdr->name, ".phar/signature.bin", sizeof(".phar/signature.bin")-1)) { + if (((!old && hdr->prefix[0] == 0) || old) && strnlen(hdr->name, 100) == sizeof(".phar/signature.bin")-1 && !strncmp(hdr->name, ".phar/signature.bin", sizeof(".phar/signature.bin")-1)) { off_t curloc; if (size > 511) { @@ -465,20 +473,22 @@ } entry.link = NULL; - + /* link field is null-terminated unless it has 100 non-null chars. + * Thus we can not use strlen. */ + linkname_len = strnlen(hdr->linkname, 100); if (entry.tar_type == TAR_LINK) { - if (!zend_hash_exists(&myphar->manifest, hdr->linkname, strlen(hdr->linkname))) { + if (!zend_hash_exists(&myphar->manifest, hdr->linkname, linkname_len)) { if (error) { - spprintf(error, 4096, "phar error: \"%s\" is a corrupted tar file - hard link to non-existent file \"%s\"", fname, hdr->linkname); + spprintf(error, 4096, "phar error: \"%s\" is a corrupted tar file - hard link to non-existent file \"%.*s\"", fname, linkname_len, hdr->linkname); } pefree(entry.filename, entry.is_persistent); php_stream_close(fp); phar_destroy_phar_data(myphar TSRMLS_CC); return FAILURE; } - entry.link = estrdup(hdr->linkname); + entry.link = estrndup(hdr->linkname, linkname_len); } else if (entry.tar_type == TAR_SYMLINK) { - entry.link = estrdup(hdr->linkname); + entry.link = estrndup(hdr->linkname, linkname_len); } phar_set_inode(&entry TSRMLS_CC); zend_hash_add(&myphar->manifest, entry.filename, entry.filename_len, (void*)&entry, sizeof(phar_entry_info), (void **) &newentry); debian/patches/CVE-2014-3515.patch0000664000000000000000000000513012355546267013252 0ustar From 88223c5245e9b470e1e6362bfd96829562ffe6ab Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 21 Jun 2014 19:46:16 -0700 Subject: [PATCH] Fix bug #67492: unserialize() SPL ArrayObject / SPLObjectStorage Type Confusion --- NEWS | 2 ++ ext/spl/spl_array.c | 2 +- ext/spl/spl_observer.c | 2 +- ext/spl/tests/SplObjectStorage_unserialize_bad.phpt | 5 ++++- 4 files changed, 8 insertions(+), 3 deletions(-) Index: php5-5.5.9+dfsg/ext/spl/spl_array.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_array.c 2014-07-04 11:48:04.114114313 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_array.c 2014-07-04 11:48:04.110114313 -0400 @@ -1789,7 +1789,7 @@ ++p; ALLOC_INIT_ZVAL(pmembers); - if (!php_var_unserialize(&pmembers, &p, s + buf_len, &var_hash TSRMLS_CC)) { + if (!php_var_unserialize(&pmembers, &p, s + buf_len, &var_hash TSRMLS_CC) || Z_TYPE_P(pmembers) != IS_ARRAY) { zval_ptr_dtor(&pmembers); goto outexcept; } Index: php5-5.5.9+dfsg/ext/spl/spl_observer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_observer.c 2014-07-04 11:48:04.114114313 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_observer.c 2014-07-04 11:48:04.110114313 -0400 @@ -898,7 +898,7 @@ ++p; ALLOC_INIT_ZVAL(pmembers); - if (!php_var_unserialize(&pmembers, &p, s + buf_len, &var_hash TSRMLS_CC)) { + if (!php_var_unserialize(&pmembers, &p, s + buf_len, &var_hash TSRMLS_CC) || Z_TYPE_P(pmembers) != IS_ARRAY) { zval_ptr_dtor(&pmembers); goto outexcept; } Index: php5-5.5.9+dfsg/ext/spl/tests/SplObjectStorage_unserialize_bad.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/tests/SplObjectStorage_unserialize_bad.phpt 2014-07-04 11:48:04.114114313 -0400 +++ php5-5.5.9+dfsg/ext/spl/tests/SplObjectStorage_unserialize_bad.phpt 2014-07-04 11:48:04.110114313 -0400 @@ -7,6 +7,7 @@ 'x:i:2;i:0;,i:1;;i:0;,i:2;;m:a:0:{}', 'x:i:3;O:8:"stdClass":0:{},O:8:"stdClass":0:{};R:2;,i:1;;O:8:"stdClass":0:{},r:2;;m:a:0:{}', 'x:i:3;O:8:"stdClass":0:{},O:8:"stdClass":0:{};r:2;,i:1;;O:8:"stdClass":0:{},r:2;;m:a:0:{}', +'x:i:1;O:8:"stdClass":0:{},N;;m:s:40:"1234567890123456789012345678901234567890"', ); foreach($badblobs as $blob) { try { @@ -17,6 +18,7 @@ echo $e->getMessage()."\n"; } } +echo "DONE\n"; --EXPECTF-- Error at offset 6 of 34 bytes Error at offset 46 of 89 bytes @@ -42,4 +44,5 @@ } } } - +Error at offset 79 of 78 bytes +DONE debian/patches/use_system_timezone.patch0000664000000000000000000000252412300436341015751 0ustar Subject: Use system timezone Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730771 Bug-Ubuntu: https://launchpad.net/bugs/1244343 Forwarded: not-needed Acked-By: Robie Basak Last-Update: 2014-01-21 Upstream don't want this patch. See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730771 for a summary. This delta is recovered from previous versions of the system timezone patch in Debian, and appears to have inadvertently been dropped. Author unknown. To be used in tandem with use_embedded_timezonedb.patch and use_embedded_timezonedb_fixes.patch. --- --- php5.orig/ext/date/php_date.c +++ php5/ext/date/php_date.c @@ -969,6 +969,23 @@ static char* guess_timezone(const timeli DATEG(timezone_valid) = 1; return DATEG(default_timezone); } + /* Try to guess timezone from system information */ + { + struct tm *ta, tmbuf; + time_t the_time; + char *tzid = NULL; + + the_time = time(NULL); + ta = php_localtime_r(&the_time, &tmbuf); + if (ta) { + tzid = timelib_timezone_id_from_abbr(ta->tm_zone, ta->tm_gmtoff, ta->tm_isdst); + } + if (! tzid) { + tzid = "UTC"; + } + + return tzid; + } /* Fallback to UTC */ php_error_docref(NULL TSRMLS_CC, E_WARNING, DATE_TZ_ERRMSG "We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone."); return "UTC"; debian/patches/CVE-2018-10548.patch0000664000000000000000000000514113275032444013331 0ustar From 49782c54994ecca2ef2a061063bd5a7079c43527 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 22 Apr 2018 22:01:35 -0700 Subject: [PATCH] Fix bug #76248 - Malicious LDAP-Server Response causes Crash --- ext/ldap/ldap.c | 6 +++++- ext/ldap/tests/bug76248.phpt | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 ext/ldap/tests/bug76248.phpt Index: php5-5.5.9+dfsg/ext/ldap/ldap.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/ldap/ldap.c 2018-05-10 08:03:44.503374475 -0400 +++ php5-5.5.9+dfsg/ext/ldap/ldap.c 2018-05-10 08:03:44.503374475 -0400 @@ -988,7 +988,11 @@ PHP_FUNCTION(ldap_get_entries) add_assoc_long(tmp1, "count", num_attrib); dn = ldap_get_dn(ldap, ldap_result_entry); - add_assoc_string(tmp1, "dn", dn, 1); + if (dn) { + add_assoc_string(tmp1, "dn", dn, 1); + } else { + add_assoc_null(tmp1, "dn"); + } #if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS ldap_memfree(dn); #else Index: php5-5.5.9+dfsg/ext/ldap/tests/bug76248.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/ldap/tests/bug76248.phpt 2018-05-10 08:03:44.503374475 -0400 @@ -0,0 +1,40 @@ +--TEST-- +Bug #76248 (Malicious LDAP-Server Response causes Crash) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +array(2) { + ["count"]=> + int(1) + [0]=> + array(2) { + ["count"]=> + int(0) + ["dn"]=> + NULL + } +} \ No newline at end of file debian/patches/CVE-2016-3141.patch0000664000000000000000000000557612704222045013244 0ustar From b1bd4119bcafab6f9a8f84d92cd65eec3afeface Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 14 Feb 2016 22:34:39 -0800 Subject: [PATCH] Fixed bug #71587 - Use-After-Free / Double-Free in WDDX Deserialize --- ext/wddx/tests/bug71587.phpt | 43 +++++++++++++++++++++++++++++++++++++++++++ ext/wddx/wddx.c | 19 +++++++++++++++---- 2 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 ext/wddx/tests/bug71587.phpt Index: php5-5.5.9+dfsg/ext/wddx/tests/bug71587.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug71587.phpt 2016-04-15 13:25:55.489442998 -0400 @@ -0,0 +1,43 @@ +--TEST-- +Bug #71587 (Use-After-Free / Double-Free in WDDX Deserialize) +--SKIPIF-- + +--FILE-- + + + + + + manhluat + + + + + +EOF; + +$wddx = wddx_deserialize($xml); +var_dump($wddx); +// Print mem leak +foreach($wddx as $k=>$v) + printf("Key: %s\nValue: %s\n",bin2hex($k),bin2hex($v)); + +?> +DONE +--EXPECTF-- +array(2) { + [0]=> + string(8) "manhluat" + [1]=> + bool(true) +} +Key: 30 +Value: 6d616e686c756174 +Key: 31 +Value: 31 +DONE Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2016-04-15 13:25:55.493443048 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2016-04-15 13:25:55.493443048 -0400 @@ -933,6 +933,16 @@ !strcmp(name, EL_DATETIME)) { wddx_stack_top(stack, (void**)&ent1); + if (!ent1->data) { + if (stack->top > 1) { + stack->top--; + } else { + stack->done = 1; + } + efree(ent1); + return; + } + if (!strcmp(name, EL_BINARY)) { int new_len=0; unsigned char *new_str; @@ -1028,6 +1038,7 @@ } } else if (!strcmp(name, EL_VAR) && stack->varname) { efree(stack->varname); + stack->varname = NULL; } else if (!strcmp(name, EL_FIELD)) { st_entry *ent; wddx_stack_top(stack, (void **)&ent); @@ -1047,7 +1058,7 @@ if (!wddx_stack_is_empty(stack) && !stack->done) { wddx_stack_top(stack, (void**)&ent); - switch (Z_TYPE_P(ent)) { + switch (ent->type) { case ST_STRING: if (Z_STRLEN_P(ent->data) == 0) { STR_FREE(Z_STRVAL_P(ent->data)); @@ -1086,11 +1097,11 @@ } else if (!strcmp(s, "false")) { Z_LVAL_P(ent->data) = 0; } else { - stack->top--; zval_ptr_dtor(&ent->data); - if (ent->varname) + if (ent->varname) { efree(ent->varname); - efree(ent); + } + ent->data = NULL; } break; debian/patches/033-we_WANT_libtool.patch0000664000000000000000000000154212300436054015132 0ustar Description: upstream ships an out of date version of libtool. this ensures that we build against an up-to-date version of libtool by running libtoolize as part of our build process (this is called indirectly via ./buildconf.sh from debian/rules) . note that we don't touch the libtool.m4 that they ship here, and this file gets included in the build process as part of the phpize stuff. however, this is solved in ./debian/rules where it's overwritten with a symlink. Origin: vendor Forwarded: no Last-Update: 2010-01-18 --- php5.orig/build/build2.mk +++ php5/build/build2.mk @@ -46,7 +46,8 @@ $(TOUCH_FILES): aclocal.m4: configure.in acinclude.m4 @echo rebuilding $@ - cat acinclude.m4 ./build/libtool.m4 > $@ + libtoolize --copy --install --automake --force + aclocal configure: aclocal.m4 configure.in $(config_m4_files) @echo rebuilding $@ debian/patches/CVE-2016-6290.patch0000664000000000000000000000437512746377661013275 0ustar From 3798eb6fd5dddb211b01d41495072fd9858d4e32 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 12 Jul 2016 23:27:45 -0700 Subject: [PATCH] Fix bug #72562 - destroy var_hash properly --- ext/session/session.c | 3 ++- ext/session/tests/bug72562.phpt | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 ext/session/tests/bug72562.phpt Index: php5-5.5.9+dfsg/ext/session/session.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/session/session.c 2016-07-28 08:50:54.756053264 -0400 +++ php5-5.5.9+dfsg/ext/session/session.c 2016-07-28 08:50:54.752053217 -0400 @@ -929,6 +929,7 @@ namelen = ((unsigned char)(*p)) & (~PS_BIN_UNDEF); if (namelen < 0 || namelen > PS_BIN_MAX || (p + namelen) >= endptr) { + PHP_VAR_UNSERIALIZE_DESTROY(var_hash); return FAILURE; } Index: php5-5.5.9+dfsg/ext/session/tests/bug72562.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/session/tests/bug72562.phpt 2016-07-28 08:50:54.752053217 -0400 @@ -0,0 +1,44 @@ +--TEST-- +Bug #72562: Use After Free in unserialize() with Unexpected Session Deserialization +--SKIPIF-- + +--FILE-- +>= 8; + } + return $out; +} +?> +--EXPECTF-- +Warning: session_decode(): Failed to decode session object. Session has been destroyed in %s/bug72562.php on line %d + +Notice: unserialize(): Error at offset 0 of 1 bytes in %s/bug72562.php on line %d + +Notice: unserialize(): Error at offset 4 of 4 bytes in %s/bug72562.php on line %d +bool(false) debian/patches/CVE-2014-4698.patch0000664000000000000000000000370012355546320013256 0ustar From 22882a9d89712ff2b6ebc20a689a89452bba4dcd Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 2 Jul 2014 17:57:42 +0800 Subject: [PATCH] Fixed bug #67539 (ArrayIterator use-after-free due to object change during sorting) --- NEWS | 2 ++ ext/spl/spl_array.c | 7 +++++++ ext/spl/tests/bug67539.phpt | 15 +++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 ext/spl/tests/bug67539.phpt Index: php5-5.5.9+dfsg/ext/spl/spl_array.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_array.c 2014-07-04 11:48:29.554114457 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_array.c 2014-07-04 11:48:29.550114457 -0400 @@ -1726,6 +1726,7 @@ const unsigned char *p, *s; php_unserialize_data_t var_hash; zval *pmembers, *pflags = NULL; + HashTable *aht; long flags; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &buf, &buf_len) == FAILURE) { @@ -1737,6 +1738,12 @@ return; } + aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC); + if (aht->nApplyCount > 0) { + zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited"); + return; + } + /* storage */ s = p = (const unsigned char*)buf; PHP_VAR_UNSERIALIZE_INIT(var_hash); Index: php5-5.5.9+dfsg/ext/spl/tests/bug67539.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/spl/tests/bug67539.phpt 2014-07-04 11:48:29.550114457 -0400 @@ -0,0 +1,15 @@ +--TEST-- +Bug #67539 (ArrayIterator use-after-free due to object change during sorting) +--FILE-- +unserialize($GLOBALS['it']->serialize()); + return TRUE; +} + +$it->uksort('badsort'); +--EXPECTF-- +Warning: Modification of ArrayObject during sorting is prohibited in %sbug67539.php on line %d debian/patches/CVE-2014-3479.patch0000664000000000000000000000253712355546241013263 0ustar From 5c9f96799961818944d43b22c241cc56c215c2e4 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 10 Jun 2014 14:13:14 +0200 Subject: [PATCH] Fixed Bug #67411 fileinfo: cdf_check_stream_offset insufficient boundary check Upstream: https://github.com/file/file/commit/36fadd29849b8087af9f4586f89dbf74ea45be67 --- ext/fileinfo/libmagic/cdf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index 16649f1..c9a5d50 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -277,13 +277,15 @@ cdf_check_stream_offset(const cdf_stream_t *sst, const cdf_header_t *h, { const char *b = (const char *)sst->sst_tab; const char *e = ((const char *)p) + tail; + size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ? + CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h); (void)&line; - if (e >= b && (size_t)(e - b) <= CDF_SEC_SIZE(h) * sst->sst_len) + if (e >= b && (size_t)(e - b) <= ss * sst->sst_len) return 0; DPRINTF(("%d: offset begin %p < end %p || %" SIZE_T_FORMAT "u" " > %" SIZE_T_FORMAT "u [%" SIZE_T_FORMAT "u %" SIZE_T_FORMAT "u]\n", line, b, e, (size_t)(e - b), - CDF_SEC_SIZE(h) * sst->sst_len, CDF_SEC_SIZE(h), sst->sst_len)); + ss * sst->sst_len, ss, sst->sst_len)); errno = EFTYPE; return -1; } -- 1.9.2 debian/patches/use_embedded_timezonedb_fixes.patch0000664000000000000000000000314312300436054017661 0ustar Author: Sean Finney Forwarded: no (upstream doesn't want it) Description: Silence warnings about using the default system timezone info In vanilla upstream php, this is considered an error (i.e. the user must set the timezone explicitly), though with our use of the system timezonedb patch, we actually feel quite comfortable using the default timezone info. Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=571762 --- php5.orig/ext/date/tests/date_default_timezone_set-1.phpt +++ php5/ext/date/tests/date_default_timezone_set-1.phpt @@ -22,9 +22,6 @@ date.timezone= echo date(DATE_ISO8601, $date4), "\n"; ?> --EXPECTF-- -Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in %sdate_default_timezone_set-1.php on line 3 - -Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in %sdate_default_timezone_set-1.php on line 4 America/Indiana/Knox 2005-01-12T03:00:00-0500 2005-07-12T03:00:00-0500 debian/patches/CVE-2014-4670.patch0000664000000000000000000000321312355546306013247 0ustar From df78c48354f376cf419d7a97f88ca07d572f00fb Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 2 Jul 2014 17:45:09 +0800 Subject: [PATCH] Fixed Bug #67538 (SPL Iterators use-after-free) --- NEWS | 3 +++ ext/spl/spl_dllist.c | 7 +++++-- ext/spl/tests/bug67538.phpt | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 ext/spl/tests/bug67538.phpt diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c index 39a0733..0b44d41 100644 --- a/ext/spl/spl_dllist.c +++ b/ext/spl/spl_dllist.c @@ -43,12 +43,10 @@ PHPAPI zend_class_entry *spl_ce_SplStack; #define SPL_LLIST_DELREF(elem) if(!--(elem)->rc) { \ efree(elem); \ - elem = NULL; \ } #define SPL_LLIST_CHECK_DELREF(elem) if((elem) && !--(elem)->rc) { \ efree(elem); \ - elem = NULL; \ } #define SPL_LLIST_ADDREF(elem) (elem)->rc++ @@ -916,6 +914,11 @@ SPL_METHOD(SplDoublyLinkedList, offsetUnset) llist->dtor(element TSRMLS_CC); } + if (intern->traverse_pointer == element) { + SPL_LLIST_DELREF(element); + intern->traverse_pointer = NULL; + } + zval_ptr_dtor((zval **)&element->data); element->data = NULL; diff --git a/ext/spl/tests/bug67538.phpt b/ext/spl/tests/bug67538.phpt new file mode 100644 index 0000000..b6f3848 --- /dev/null +++ b/ext/spl/tests/bug67538.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #67538 (SPL Iterators use-after-free) +--FILE-- +push('a'); +$list->push('b'); + +$list->rewind(); +$list->offsetUnset(0); +$list->push('b'); +$list->offsetUnset(0); +$list->next(); +echo "okey"; +?> +--EXPECTF-- +okey -- 1.9.2 debian/patches/CVE-2017-12933.patch0000664000000000000000000000774113237117003013331 0ustar Backport of: (also includes backport of: http://git.php.net/?p=php-src.git;a=commitdiff;h=f76a6cd02368f28f5d11858a0a9a81a0d1f9041e) From f8c514ba6b7962a219296a837b2dbc22f749e736 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 25 Jun 2017 21:15:26 +0200 Subject: [PATCH] Fixed bug #74111 --- ext/standard/tests/serialize/bug25378.phpt | 2 +- ext/standard/tests/serialize/bug74111.phpt | 10 + ext/standard/var_unserializer.c | 1153 ++++++++++++++-------------- ext/standard/var_unserializer.re | 11 +- 4 files changed, 580 insertions(+), 596 deletions(-) create mode 100644 ext/standard/tests/serialize/bug74111.phpt Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug25378.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/serialize/bug25378.phpt 2018-02-08 13:57:37.288915978 -0500 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug25378.phpt 2018-02-08 13:57:37.288915978 -0500 @@ -42,7 +42,7 @@ bool(false) Notice: unserialize(): Error at offset 17 of 33 bytes in %sbug25378.php on line %d bool(false) -Notice: unserialize(): Error at offset 33 of 32 bytes in %sbug25378.php on line %d +Notice: unserialize(): Error at offset 32 of 32 bytes in %sbug25378.php on line %d bool(false) Notice: unserialize(): Error at offset 2 of 13 bytes in %sbug25378.php on line %d Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug74111.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug74111.phpt 2018-02-08 13:57:37.288915978 -0500 @@ -0,0 +1,10 @@ +--TEST-- +Bug #74111: Heap buffer overread (READ: 1) finish_nested_data from unserialize +--FILE-- + +--EXPECTF-- +Notice: unserialize(): Error at offset 25 of 23 bytes in %s on line %d +bool(false) Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2018-02-08 13:57:37.288915978 -0500 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2018-02-08 13:57:37.288915978 -0500 @@ -410,13 +410,12 @@ static inline int process_nested_data(UN static inline int finish_nested_data(UNSERIALIZE_PARAMETER) { - if (*((*p)++) == '}') - return 1; + if (*p >= max || **p != '}') { + return 0; + } -#if SOMETHING_NEW_MIGHT_LEAD_TO_CRASH_ENABLE_IF_YOU_ARE_BRAVE - zval_ptr_dtor(rval); -#endif - return 0; + (*p)++; + return 1; } static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2018-02-08 13:57:37.288915978 -0500 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2018-02-08 13:57:37.288915978 -0500 @@ -404,13 +404,12 @@ static inline int process_nested_data(UN static inline int finish_nested_data(UNSERIALIZE_PARAMETER) { - if (*((*p)++) == '}') - return 1; + if (*p >= max || **p != '}') { + return 0; + } -#if SOMETHING_NEW_MIGHT_LEAD_TO_CRASH_ENABLE_IF_YOU_ARE_BRAVE - zval_ptr_dtor(rval); -#endif - return 0; + (*p)++; + return 1; } static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) Index: php5-5.5.9+dfsg/ext/standard/tests/strings/bug72663_3.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/strings/bug72663_3.phpt 2018-02-08 13:57:36.756915483 -0500 +++ php5-5.5.9+dfsg/ext/standard/tests/strings/bug72663_3.phpt 2018-02-08 13:58:03.532940371 -0500 @@ -14,5 +14,5 @@ unserialize($poc); ?> DONE --EXPECTF-- -Notice: unserialize(): Error at offset 51 of 50 bytes in %sbug72663_3.php on line %d -DONE \ No newline at end of file +Notice: unserialize(): Error at offset 50 of 50 bytes in %sbug72663_3.php on line %d +DONE debian/patches/CVE-2015-4599.patch0000664000000000000000000000172612543257265013273 0ustar From 51856a76f87ecb24fe1385342be43610fb6c86e4 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 19 Mar 2015 11:36:01 +0300 Subject: [PATCH] Fixed bug #69152 --- ext/soap/soap.c | 6 ++++++ 1 file changed, 6 insertions(+) Index: php5-5.5.12+dfsg/ext/soap/soap.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/soap/soap.c 2015-06-26 08:46:28.223848332 -0400 +++ php5-5.5.12+dfsg/ext/soap/soap.c 2015-06-26 08:46:28.223848332 -0400 @@ -925,6 +925,12 @@ zend_call_function(&fci, NULL TSRMLS_CC); + convert_to_string(faultcode); + convert_to_string(faultstring); + convert_to_string(file); + convert_to_long(line); + convert_to_string(trace); + len = spprintf(&str, 0, "SoapFault exception: [%s] %s in %s:%ld\nStack trace:\n%s", Z_STRVAL_P(faultcode), Z_STRVAL_P(faultstring), Z_STRVAL_P(file), Z_LVAL_P(line), Z_STRLEN_P(trace) ? Z_STRVAL_P(trace) : "#0 {main}\n"); debian/patches/CVE-2018-7584.patch0000664000000000000000000000400213252477445013263 0ustar From 523f230c831d7b33353203fa34aee4e92ac12bba Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 20 Feb 2018 15:34:43 -0800 Subject: [PATCH] Fix bug #75981: prevent reading beyond buffer start --- ext/standard/http_fopen_wrapper.c | 4 ++-- ext/standard/tests/http/bug75981.phpt | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 ext/standard/tests/http/bug75981.phpt Index: php5-5.5.9+dfsg/ext/standard/http_fopen_wrapper.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/http_fopen_wrapper.c 2018-03-15 10:11:46.113255151 -0400 +++ php5-5.5.9+dfsg/ext/standard/http_fopen_wrapper.c 2018-03-15 10:11:46.093255126 -0400 @@ -692,9 +692,9 @@ finish: tmp_line, response_code); } } - if (tmp_line[tmp_line_len - 1] == '\n') { + if (tmp_line_len >= 1 && tmp_line[tmp_line_len - 1] == '\n') { --tmp_line_len; - if (tmp_line[tmp_line_len - 1] == '\r') { + if (tmp_line_len >= 1 &&tmp_line[tmp_line_len - 1] == '\r') { --tmp_line_len; } } Index: php5-5.5.9+dfsg/ext/standard/tests/http/bug75981.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/http/bug75981.phpt 2018-03-15 10:11:46.093255126 -0400 @@ -0,0 +1,32 @@ +--TEST-- +Bug #75981 (stack-buffer-overflow while parsing HTTP response) +--INI-- +allow_url_fopen=1 +--SKIPIF-- + +--FILE-- + [ + 'protocol_version' => '1.1', + 'header' => 'Connection: Close' + ], +]; + +$ctx = stream_context_create($options); + +$responses = [ + "data://text/plain,000000000100\xA\xA" +]; +$pid = http_server('tcp://127.0.0.1:12342', $responses); + +echo @file_get_contents('http://127.0.0.1:12342/', false, $ctx); + +http_server_kill($pid); + +?> +DONE +--EXPECT-- +DONE debian/patches/CVE-2019-9023-2.patch0000664000000000000000000000251613437472461013417 0ustar From 28362ed4fae6969b5a8878591a5a06eadf114e03 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 29 Dec 2018 20:06:08 -0800 Subject: [PATCH] Fix bug #77371 (heap buffer overflow in mb regex functions - compile_string_node) --- ext/mbstring/oniguruma/regcomp.c | 1 + ext/mbstring/tests/bug77371.phpt | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 ext/mbstring/tests/bug77371.phpt diff --git a/ext/mbstring/oniguruma/regcomp.c b/ext/mbstring/oniguruma/regcomp.c index 995e1d886155..4469f33a56dd 100644 --- a/ext/mbstring/oniguruma/regcomp.c +++ b/ext/mbstring/oniguruma/regcomp.c @@ -524,6 +524,7 @@ compile_string_node(Node* node, regex_t* reg) for (; p < end; ) { len = enclen(enc, p); + if (p + len > end) len = end - p; if (len == prev_len) { slen++; } diff --git a/ext/mbstring/tests/bug77371.phpt b/ext/mbstring/tests/bug77371.phpt new file mode 100644 index 000000000000..f23445bd0917 --- /dev/null +++ b/ext/mbstring/tests/bug77371.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #77371 (heap buffer overflow in mb regex functions - compile_string_node) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(false) \ No newline at end of file debian/patches/CVE-2016-7127.patch0000664000000000000000000000307512773246316013261 0ustar From 1bd103df00f49cf4d4ade2cfe3f456ac058a4eae Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 10 Aug 2016 00:14:58 -0700 Subject: [PATCH] Fix bug #72730 - imagegammacorrect allows arbitrary write access --- ext/gd/gd.c | 5 +++++ ext/gd/tests/bug72730.phpt | 15 +++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 ext/gd/tests/bug72730.phpt Index: php5-5.5.9+dfsg/ext/gd/gd.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/gd/gd.c 2016-09-29 13:18:03.869714858 -0400 +++ php5-5.5.9+dfsg/ext/gd/gd.c 2016-09-29 13:18:03.865714812 -0400 @@ -3036,6 +3036,11 @@ return; } + if ( input <= 0.0 || output <= 0.0 ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Gamma values should be positive"); + RETURN_FALSE; + } + ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd); if (gdImageTrueColor(im)) { Index: php5-5.5.9+dfsg/ext/gd/tests/bug72730.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/gd/tests/bug72730.phpt 2016-09-29 13:18:03.865714812 -0400 @@ -0,0 +1,15 @@ +--TEST-- +Bug #72730: imagegammacorrect allows arbitrary write access +--SKIPIF-- + +--FILE-- + +DONE +--EXPECTF-- +Warning: imagegammacorrect(): Gamma values should be positive in %sbug72730.php on line %d +DONE \ No newline at end of file debian/patches/CVE-2016-5769.patch0000664000000000000000000000276112746377120013272 0ustar From 6c5211a0cef0cc2854eaa387e0eb036e012904d0 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 20 Jun 2016 21:51:42 -0700 Subject: [PATCH] Fix bug #72455: Heap Overflow due to integer overflows --- ext/mcrypt/mcrypt.c | 92 +++++++++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 42 deletions(-) Index: php5-5.5.9+dfsg/ext/mcrypt/mcrypt.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mcrypt/mcrypt.c 2016-07-28 08:45:01.419855566 -0400 +++ php5-5.5.9+dfsg/ext/mcrypt/mcrypt.c 2016-07-28 08:45:01.419855566 -0400 @@ -677,6 +677,10 @@ if (mcrypt_enc_is_block_mode(pm->td) == 1) { /* It's a block algorithm */ block_size = mcrypt_enc_get_block_size(pm->td); data_size = (((data_len - 1) / block_size) + 1) * block_size; + if (data_size <= 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Integer overflow in data size"); + RETURN_FALSE; + } data_s = emalloc(data_size + 1); memset(data_s, 0, data_size); memcpy(data_s, data, data_len); @@ -722,6 +726,10 @@ if (mcrypt_enc_is_block_mode(pm->td) == 1) { /* It's a block algorithm */ block_size = mcrypt_enc_get_block_size(pm->td); data_size = (((data_len - 1) / block_size) + 1) * block_size; + if (data_size <= 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Integer overflow in data size"); + RETURN_FALSE; + } data_s = emalloc(data_size + 1); memset(data_s, 0, data_size); memcpy(data_s, data, data_len); debian/patches/CVE-2016-6294.patch0000664000000000000000000000513612746400261013254 0ustar From aa82e99ed8003c01f1ef4f0940e56b85c5b032d4 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 12 Jul 2016 22:37:36 -0700 Subject: [PATCH] Fix bug #72533 (locale_accept_from_http out-of-bounds access) --- ext/intl/locale/locale_methods.c | 18 ++++++++++++++++++ ext/intl/tests/bug72533.phpt | 30 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 ext/intl/tests/bug72533.phpt Index: php5-5.5.9+dfsg/ext/intl/locale/locale_methods.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/intl/locale/locale_methods.c 2016-07-28 08:53:07.073632058 -0400 +++ php5-5.5.9+dfsg/ext/intl/locale/locale_methods.c 2016-07-28 08:55:09.395197223 -0400 @@ -1586,6 +1586,24 @@ "locale_accept_from_http: unable to parse input parameters", 0 TSRMLS_CC ); RETURN_FALSE; } + if(http_accept_len > ULOC_FULLNAME_CAPACITY) { + /* check each fragment, if any bigger than capacity, can't do it due to bug #72533 */ + char *start = http_accept; + char *end; + size_t len; + do { + end = strchr(start, ','); + len = end ? end-start : http_accept_len-(start-http_accept); + if(len > ULOC_FULLNAME_CAPACITY) { + intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, + "locale_accept_from_http: locale string too long", 0 TSRMLS_CC ); + RETURN_FALSE; + } + if(end) { + start = end+1; + } + } while(end != NULL); + } available = ures_openAvailableLocales(NULL, &status); INTL_CHECK_STATUS(status, "locale_accept_from_http: failed to retrieve locale list"); Index: php5-5.5.9+dfsg/ext/intl/tests/bug72533.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/intl/tests/bug72533.phpt 2016-07-28 08:53:07.069632007 -0400 @@ -0,0 +1,30 @@ +--TEST-- +Bug #72533 (locale_accept_from_http out-of-bounds access) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +false +'locale_accept_from_http: locale string too long: U_ILLEGAL_ARGUMENT_ERROR' +'en' \ No newline at end of file debian/patches/CVE-2015-8838.patch0000664000000000000000000000454112704221624013256 0ustar Backport of: From 97aa752fee61fccdec361279adbfb17a3c60f3f4 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 5 Jul 2015 00:00:53 -0700 Subject: [PATCH] Fix bug #69669 (mysqlnd is vulnerable to BACKRONYM) --- ext/mysqlnd/mysqlnd.c | 65 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 25 deletions(-) Index: php5-5.5.9+dfsg/ext/mysqlnd/mysqlnd.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mysqlnd/mysqlnd.c 2016-04-15 13:19:15.688371594 -0400 +++ php5-5.5.9+dfsg/ext/mysqlnd/mysqlnd.c 2016-04-15 13:21:16.665909219 -0400 @@ -464,27 +464,41 @@ } #ifdef MYSQLND_SSL_SUPPORTED - if ((greet_packet->server_capabilities & CLIENT_SSL) && (mysql_flags & CLIENT_SSL)) { - zend_bool verify = mysql_flags & CLIENT_SSL_VERIFY_SERVER_CERT? TRUE:FALSE; - DBG_INF("Switching to SSL"); - if (!PACKET_WRITE(auth_packet, conn)) { - CONN_SET_STATE(conn, CONN_QUIT_SENT); - conn->m->send_close(conn TSRMLS_CC); - SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone); - goto end; - } + if (mysql_flags & CLIENT_SSL) { + zend_bool server_has_ssl = (greet_packet->server_capabilities & CLIENT_SSL)? TRUE:FALSE; + if (server_has_ssl == FALSE) { + goto close_conn; + } else { + zend_bool verify = mysql_flags & CLIENT_SSL_VERIFY_SERVER_CERT? TRUE:FALSE; + DBG_INF("Switching to SSL"); + if (!PACKET_WRITE(auth_packet, conn)) { + goto close_conn; + } - conn->net->data->m.set_client_option(conn->net, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (const char *) &verify TSRMLS_CC); + conn->net->data->m.set_client_option(conn->net, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (const char *) &verify TSRMLS_CC); - if (FAIL == conn->net->data->m.enable_ssl(conn->net TSRMLS_CC)) { - goto end; + if (FAIL == conn->net->data->m.enable_ssl(conn->net TSRMLS_CC)) { + goto end; + } } } +#else + auth_packet->client_flags &= ~CLIENT_SSL; + if (!PACKET_WRITE(auth_packet, conn)) { + goto close_conn; + } #endif ret = PASS; end: PACKET_FREE(auth_packet); DBG_RETURN(ret); + +close_conn: + CONN_SET_STATE(conn, CONN_QUIT_SENT); + conn->m->send_close(conn TSRMLS_CC); + SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone); + PACKET_FREE(auth_packet); + DBG_RETURN(ret); } /* }}} */ debian/patches/CVE-2017-9226.patch0000664000000000000000000000364313141101777013254 0ustar From 4e68b2c52b1f7bb899295521df15c631a37b3994 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 30 May 2017 15:35:42 +0200 Subject: [PATCH] Patch from the upstream git https://github.com/kkos/oniguruma/issues/55 (CVE-2017-9226) b4bf968ad52afe14e60a2dc8a95d3555c543353a Modified for onig 5.9.6 f015fbdd95f76438cd86366467bb2b39870dd7c6 Modified for onig 5.9.6 Thanks to Mamoru TASAKA --- ext/mbstring/oniguruma/regparse.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) Index: php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mbstring/oniguruma/regparse.c 2017-08-04 10:26:05.530850236 -0400 +++ php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.c 2017-08-04 10:26:05.526850237 -0400 @@ -3059,7 +3059,7 @@ fetch_token_in_cc(OnigToken* tok, UChar* PUNFETCH; prev = p; num = scan_unsigned_octal_number(&p, end, 3, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; + if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } @@ -3431,7 +3431,7 @@ fetch_token(OnigToken* tok, UChar** src, if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { prev = p; num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; + if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } @@ -4081,7 +4081,11 @@ next_state_val(CClassNode* cc, OnigCodeP switch (*state) { case CCS_VALUE: if (*type == CCV_SB) + { + if (*vs > 0xff) + return ONIGERR_INVALID_CODE_POINT_VALUE; BITSET_SET_BIT(cc->bs, (int )(*vs)); + } else if (*type == CCV_CODE_POINT) { r = add_code_range(&(cc->mbuf), env, *vs, *vs); if (r < 0) return r; debian/patches/044-strtod_arm_fix.patch0000664000000000000000000000273612300436054015176 0ustar --- php5.orig/Zend/zend_strtod.c +++ php5/Zend/zend_strtod.c @@ -152,14 +152,25 @@ typedef unsigned long int uint32_t; #define IEEE_LITTLE_ENDIAN #endif -#if defined(__arm__) && !defined(__VFP_FP__) -/* - * * Although the CPU is little endian the FP has different - * * byte and word endianness. The byte order is still little endian - * * but the word order is big endian. - * */ -#define IEEE_BIG_ENDIAN +#if defined(__arm__) || defined(__thumb__) +/* ARM traditionally used big-endian words; and within those words the + byte ordering was big or little endian depending upon the target. + Modern floating-point formats are naturally ordered; in this case + __VFP_FP__ will be defined, even if soft-float. */ #undef IEEE_LITTLE_ENDIAN +#undef IEEE_BIG_ENDIAN +#if defined(__VFP_FP__) || defined(__MAVERICK__) +# ifdef __ARMEL__ +# define IEEE_LITTLE_ENDIAN +# else +# define IEEE_BIG_ENDIAN +# endif +#else +# define IEEE_BIG_ENDIAN +# ifdef __ARMEL__ +# define IEEE_BYTES_LITTLE_ENDIAN +# endif +#endif #endif #ifdef __vax__ @@ -287,7 +298,7 @@ BEGIN_EXTERN_C() * An alternative that might be better on some machines is * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff) */ -#if defined(IEEE_LITTLE_ENDIAN) + defined(VAX) + defined(__arm__) +#if defined(IEEE_LITTLE_ENDIAN) + defined(VAX) + defined(IEEE_BYTES_LITTLE_ENDIAN) #define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b, \ ((unsigned short *)a)[0] = (unsigned short)c, a++) #else debian/patches/CVE-2014-8142.patch0000664000000000000000000000512512467421325013246 0ustar From 630f9c33c23639de85c3fd306b209b538b73b4c9 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Thu, 11 Dec 2014 19:28:32 -0800 Subject: [PATCH] Fix bug #68594 - Use after free vulnerability in unserialize() --- NEWS | 2 + ext/standard/tests/serialize/bug68594.phpt | 23 ++++++++++ ext/standard/var_unserializer.c | 68 ++++++++++++++++-------------- ext/standard/var_unserializer.re | 3 ++ 4 files changed, 64 insertions(+), 32 deletions(-) create mode 100644 ext/standard/tests/serialize/bug68594.phpt Index: php5-5.5.12+dfsg/ext/standard/tests/serialize/bug68594.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.12+dfsg/ext/standard/tests/serialize/bug68594.phpt 2015-02-13 10:05:12.756213147 -0500 @@ -0,0 +1,23 @@ +--TEST-- +Bug #68545 Use after free vulnerability in unserialize() +--FILE-- +aaa = array(1,2,&$u,4,5); + $m->bbb = 1; + $m->ccc = &$u; + $m->ddd = str_repeat("A", $i); + + $z = serialize($m); + $z = str_replace("bbb", "aaa", $z); + $y = unserialize($z); + $z = serialize($y); +} +?> +===DONE=== +--EXPECTF-- +===DONE=== Index: php5-5.5.12+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/var_unserializer.c 2015-02-13 10:05:12.764213213 -0500 +++ php5-5.5.12+dfsg/ext/standard/var_unserializer.c 2015-02-13 10:05:12.756213147 -0500 @@ -334,6 +334,9 @@ } else { /* object properties should include no integers */ convert_to_string(key); + if (zend_symtable_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) { + var_push_dtor(var_hash, old_data); + } zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof data, NULL); } Index: php5-5.5.12+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/var_unserializer.re 2015-02-13 10:05:12.764213213 -0500 +++ php5-5.5.12+dfsg/ext/standard/var_unserializer.re 2015-02-13 10:05:12.756213147 -0500 @@ -340,6 +340,9 @@ } else { /* object properties should include no integers */ convert_to_string(key); + if (zend_symtable_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) { + var_push_dtor(var_hash, old_data); + } zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof data, NULL); } debian/patches/CVE-2018-10547.patch0000664000000000000000000001745213275032431013334 0ustar From 6e64aba47f4e41d97c4d010024c68320c0855f45 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 27 Mar 2018 21:22:28 -0700 Subject: [PATCH] Fix #76129 - remove more potential unfiltered outputs for phar --- ext/phar/phar_object.c | 6 ++---- ext/phar/tests/cache_list/frontcontroller10.phpt | 2 +- ext/phar/tests/cache_list/frontcontroller6.phpt | 2 +- ext/phar/tests/cache_list/frontcontroller8.phpt | 2 +- ext/phar/tests/frontcontroller10.phpt | 2 +- ext/phar/tests/frontcontroller6.phpt | 2 +- ext/phar/tests/frontcontroller8.phpt | 2 +- ext/phar/tests/tar/frontcontroller10.phar.phpt | 2 +- ext/phar/tests/tar/frontcontroller6.phar.phpt | 2 +- ext/phar/tests/tar/frontcontroller8.phar.phpt | 2 +- ext/phar/tests/zip/frontcontroller10.phar.phpt | 2 +- ext/phar/tests/zip/frontcontroller6.phar.phpt | 2 +- ext/phar/tests/zip/frontcontroller8.phar.phpt | 2 +- 13 files changed, 14 insertions(+), 16 deletions(-) diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index 64d7a6c76eee..a6f56ac8af29 100644 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -340,8 +340,7 @@ static void phar_do_403(char *entry, int entry_len TSRMLS_DC) /* {{{ */ sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); sapi_send_headers(TSRMLS_C); PHPWRITE("\n \n Access Denied\n \n \n

403 - File ", sizeof("\n \n Access Denied\n \n \n

403 - File ") - 1); - PHPWRITE(entry, entry_len); - PHPWRITE(" Access Denied

\n \n", sizeof(" Access Denied\n \n") - 1); + PHPWRITE("Access Denied\n \n", sizeof("Access Denied\n \n") - 1); } /* }}} */ @@ -365,8 +364,7 @@ static void phar_do_404(phar_archive_data *phar, char *fname, int fname_len, cha sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); sapi_send_headers(TSRMLS_C); PHPWRITE("\n \n File Not Found\n \n \n

404 - File ", sizeof("\n \n File Not Found\n \n \n

404 - File ") - 1); - PHPWRITE(entry, entry_len); - PHPWRITE(" Not Found

\n \n", sizeof(" Not Found\n \n") - 1); + PHPWRITE("Not Found\n \n", sizeof("Not Found\n \n") - 1); } /* }}} */ diff --git a/ext/phar/tests/cache_list/frontcontroller10.phpt b/ext/phar/tests/cache_list/frontcontroller10.phpt index 00177d4ff558..5fd986895d56 100644 --- a/ext/phar/tests/cache_list/frontcontroller10.phpt +++ b/ext/phar/tests/cache_list/frontcontroller10.phpt @@ -20,6 +20,6 @@ Status: 403 Access Denied Access Denied -

403 - File /hi Access Denied

+

403 - File Access Denied

diff --git a/ext/phar/tests/cache_list/frontcontroller6.phpt b/ext/phar/tests/cache_list/frontcontroller6.phpt index 2480be41293a..a79c95851712 100644 --- a/ext/phar/tests/cache_list/frontcontroller6.phpt +++ b/ext/phar/tests/cache_list/frontcontroller6.phpt @@ -18,6 +18,6 @@ Status: 404 Not Found File Not Found -

404 - File /notfound.php Not Found

+

404 - File Not Found

\ No newline at end of file diff --git a/ext/phar/tests/cache_list/frontcontroller8.phpt b/ext/phar/tests/cache_list/frontcontroller8.phpt index bf9b390defc4..e04f9e5a3afe 100644 --- a/ext/phar/tests/cache_list/frontcontroller8.phpt +++ b/ext/phar/tests/cache_list/frontcontroller8.phpt @@ -18,6 +18,6 @@ Status: 404 Not Found File Not Found -

404 - File /index.php Not Found

+

404 - File Not Found

\ No newline at end of file diff --git a/ext/phar/tests/frontcontroller10.phpt b/ext/phar/tests/frontcontroller10.phpt index 667d5c243cd4..b3f5e640dd7b 100644 --- a/ext/phar/tests/frontcontroller10.phpt +++ b/ext/phar/tests/frontcontroller10.phpt @@ -19,6 +19,6 @@ Status: 403 Access Denied Access Denied -

403 - File /hi Access Denied

+

403 - File Access Denied

diff --git a/ext/phar/tests/frontcontroller6.phpt b/ext/phar/tests/frontcontroller6.phpt index 1a2cc2cd23d1..c5dd382b10ac 100644 --- a/ext/phar/tests/frontcontroller6.phpt +++ b/ext/phar/tests/frontcontroller6.phpt @@ -16,6 +16,6 @@ Status: 404 Not Found File Not Found -

404 - File /notfound.php Not Found

+

404 - File Not Found

\ No newline at end of file diff --git a/ext/phar/tests/frontcontroller8.phpt b/ext/phar/tests/frontcontroller8.phpt index 36e3206d6687..77d33dac38b7 100644 --- a/ext/phar/tests/frontcontroller8.phpt +++ b/ext/phar/tests/frontcontroller8.phpt @@ -16,6 +16,6 @@ Status: 404 Not Found File Not Found -

404 - File /index.php Not Found

+

404 - File Not Found

\ No newline at end of file diff --git a/ext/phar/tests/tar/frontcontroller10.phar.phpt b/ext/phar/tests/tar/frontcontroller10.phar.phpt index f1fc6e3d0fd0..23ce6f37e255 100644 --- a/ext/phar/tests/tar/frontcontroller10.phar.phpt +++ b/ext/phar/tests/tar/frontcontroller10.phar.phpt @@ -19,6 +19,6 @@ Status: 403 Access Denied Access Denied -

403 - File /hi Access Denied

+

403 - File Access Denied

\ No newline at end of file diff --git a/ext/phar/tests/tar/frontcontroller6.phar.phpt b/ext/phar/tests/tar/frontcontroller6.phar.phpt index 5375beef8cc8..b811f00f75d9 100644 --- a/ext/phar/tests/tar/frontcontroller6.phar.phpt +++ b/ext/phar/tests/tar/frontcontroller6.phar.phpt @@ -16,6 +16,6 @@ Status: 404 Not Found File Not Found -

404 - File /notfound.php Not Found

+

404 - File Not Found

\ No newline at end of file diff --git a/ext/phar/tests/tar/frontcontroller8.phar.phpt b/ext/phar/tests/tar/frontcontroller8.phar.phpt index 19844cb19942..a180e2010aec 100644 --- a/ext/phar/tests/tar/frontcontroller8.phar.phpt +++ b/ext/phar/tests/tar/frontcontroller8.phar.phpt @@ -16,6 +16,6 @@ Status: 404 Not Found File Not Found -

404 - File /index.php Not Found

+

404 - File Not Found

\ No newline at end of file diff --git a/ext/phar/tests/zip/frontcontroller10.phar.phpt b/ext/phar/tests/zip/frontcontroller10.phar.phpt index 56d16c2064ab..5bbe9e1affba 100644 --- a/ext/phar/tests/zip/frontcontroller10.phar.phpt +++ b/ext/phar/tests/zip/frontcontroller10.phar.phpt @@ -19,6 +19,6 @@ Status: 403 Access Denied Access Denied -

403 - File /hi Access Denied

+

403 - File Access Denied

\ No newline at end of file diff --git a/ext/phar/tests/zip/frontcontroller6.phar.phpt b/ext/phar/tests/zip/frontcontroller6.phar.phpt index 15489f6ca728..63f7c62e88d2 100644 --- a/ext/phar/tests/zip/frontcontroller6.phar.phpt +++ b/ext/phar/tests/zip/frontcontroller6.phar.phpt @@ -17,6 +17,6 @@ Status: 404 Not Found File Not Found -

404 - File /notfound.php Not Found

+

404 - File Not Found

\ No newline at end of file diff --git a/ext/phar/tests/zip/frontcontroller8.phar.phpt b/ext/phar/tests/zip/frontcontroller8.phar.phpt index 1b0d133bc717..d4c3a3f9ea05 100644 --- a/ext/phar/tests/zip/frontcontroller8.phar.phpt +++ b/ext/phar/tests/zip/frontcontroller8.phar.phpt @@ -16,6 +16,6 @@ Status: 404 Not Found File Not Found -

404 - File /index.php Not Found

+

404 - File Not Found

\ No newline at end of file debian/patches/CVE-2016-6291.patch0000664000000000000000000000616512746377664013300 0ustar From eebcbd5de38a0f1c2876035402cb770e37476519 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 17 Jul 2016 16:34:21 -0700 Subject: [PATCH] Fix bug #72603: Out of bound read in exif_process_IFD_in_MAKERNOTE --- ext/exif/exif.c | 22 ++++++++++++++++++++-- ext/exif/tests/bug72603.jpeg | Bin 0 -> 3711 bytes ext/exif/tests/bug72603.phpt | 11 +++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 ext/exif/tests/bug72603.jpeg create mode 100644 ext/exif/tests/bug72603.phpt diff --git a/ext/exif/exif.c b/ext/exif/exif.c index f366acc..760e746 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -2742,6 +2742,12 @@ static int exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * valu break; } + if (maker_note->offset >= value_len) { + /* Do not go past the value end */ + exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "IFD data too short: 0x%04X offset 0x%04X", value_len, maker_note->offset); + return FALSE; + } + dir_start = value_ptr + maker_note->offset; #ifdef EXIF_DEBUG @@ -2770,10 +2776,19 @@ static int exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * valu offset_base = value_ptr; break; case MN_OFFSET_GUESS: + if (maker_note->offset + 10 + 4 >= value_len) { + /* Can not read dir_start+10 since it's beyond value end */ + exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "IFD data too short: 0x%04X", value_len); + return FALSE; + } offset_diff = 2 + NumDirEntries*12 + 4 - php_ifd_get32u(dir_start+10, ImageInfo->motorola_intel); #ifdef EXIF_DEBUG exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Using automatic offset correction: 0x%04X", ((int)dir_start-(int)offset_base+maker_note->offset+displacement) + offset_diff); #endif + if (offset_diff < 0 || offset_diff >= value_len ) { + exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "IFD data bad offset: 0x%04X length 0x%04X", offset_diff, value_len); + return FALSE; + } offset_base = value_ptr + offset_diff; break; default: @@ -2782,7 +2797,7 @@ static int exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * valu } if ((2+NumDirEntries*12) > value_len) { - exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "Illegal IFD size: 2 + x%04X*12 = x%04X > x%04X", NumDirEntries, 2+NumDirEntries*12, value_len); + exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "Illegal IFD size: 2 + 0x%04X*12 = 0x%04X > 0x%04X", NumDirEntries, 2+NumDirEntries*12, value_len); return FALSE; } @@ -3068,7 +3083,10 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha break; case TAG_MAKER_NOTE: - exif_process_IFD_in_MAKERNOTE(ImageInfo, value_ptr, byte_count, offset_base, IFDlength, displacement TSRMLS_CC); + if (!exif_process_IFD_in_MAKERNOTE(ImageInfo, value_ptr, byte_count, offset_base, IFDlength, displacement TSRMLS_CC)) { + EFREE_IF(outside); + return FALSE; + } break; case TAG_EXIF_IFD_POINTER: debian/patches/CVE-2015-0231.patch0000664000000000000000000000546512467421351013244 0ustar From b585a3aed7880a5fa5c18e2b838fc96f40e075bd Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Thu, 1 Jan 2015 16:19:05 -0800 Subject: [PATCH] Fix for bug #68710 (Use After Free Vulnerability in PHP's unserialize()) --- NEWS | 4 ++++ ext/standard/tests/strings/bug68710.phpt | 25 +++++++++++++++++++++++++ ext/standard/var_unserializer.c | 4 ++-- ext/standard/var_unserializer.re | 2 +- 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 ext/standard/tests/strings/bug68710.phpt Index: php5-5.5.12+dfsg/ext/standard/tests/strings/bug68710.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.12+dfsg/ext/standard/tests/strings/bug68710.phpt 2015-02-13 10:07:16.637234779 -0500 @@ -0,0 +1,25 @@ +--TEST-- +Bug #68710 Use after free vulnerability in unserialize() (bypassing the +CVE-2014-8142 fix) +--FILE-- +aaa = array(1,2,&$u,4,5); + $m->bbb = 1; + $m->ccc = &$u; + $m->ddd = str_repeat("A", $i); + + $z = serialize($m); + $z = str_replace("aaa", "123", $z); + $z = str_replace("bbb", "123", $z); + $y = unserialize($z); + $z = serialize($y); +} +?> +===DONE=== +--EXPECTF-- +===DONE=== Index: php5-5.5.12+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/var_unserializer.c 2015-02-13 10:07:16.641234812 -0500 +++ php5-5.5.12+dfsg/ext/standard/var_unserializer.c 2015-02-13 10:07:16.637234779 -0500 @@ -334,7 +334,7 @@ } else { /* object properties should include no integers */ convert_to_string(key); - if (zend_symtable_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) { + if (zend_hash_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) { var_push_dtor(var_hash, old_data); } zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, Index: php5-5.5.12+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/var_unserializer.re 2015-02-13 10:07:16.641234812 -0500 +++ php5-5.5.12+dfsg/ext/standard/var_unserializer.re 2015-02-13 10:07:16.637234779 -0500 @@ -340,7 +340,7 @@ } else { /* object properties should include no integers */ convert_to_string(key); - if (zend_symtable_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) { + if (zend_hash_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) { var_push_dtor(var_hash, old_data); } zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, debian/patches/CVE-2015-6834-3.patch0000664000000000000000000000530612602473420013410 0ustar From 259057b2a484747a6c73ce54c4fa0f5acbd56179 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 1 Sep 2015 00:20:45 -0700 Subject: [PATCH] Fix bug #70366 - use-after-free vulnerability in unserialize() with SplDoublyLinkedList --- ext/spl/spl_dllist.c | 1 + ext/spl/tests/bug70365.phpt | 2 +- ext/spl/tests/bug70366.phpt | 54 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 ext/spl/tests/bug70366.phpt Index: php5-5.5.9+dfsg/ext/spl/spl_dllist.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_dllist.c 2015-09-29 07:33:33.883322606 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_dllist.c 2015-09-29 07:33:33.883322606 -0400 @@ -1220,6 +1220,7 @@ zval_ptr_dtor(&elem); goto error; } + var_push_dtor(&var_hash, &elem); spl_ptr_llist_push(intern->llist, elem TSRMLS_CC); } Index: php5-5.5.9+dfsg/ext/spl/tests/bug70365.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/tests/bug70365.phpt 2015-09-29 07:33:33.883322606 -0400 +++ php5-5.5.9+dfsg/ext/spl/tests/bug70365.phpt 2015-09-29 07:33:33.883322606 -0400 @@ -1,5 +1,5 @@ --TEST-- -SPL: Bug #70365 yet another use-after-free vulnerability in unserialize() with SplObjectStorage +SPL: Bug #70365 use-after-free vulnerability in unserialize() with SplObjectStorage --FILE-- ryat = 1; + } +} + +$fakezval = ptr2str(1122334455); +$fakezval .= ptr2str(0); +$fakezval .= "\x00\x00\x00\x00"; +$fakezval .= "\x01"; +$fakezval .= "\x00"; +$fakezval .= "\x00\x00"; + +$inner = 'i:1234;:i:1;'; +$exploit = 'a:5:{i:0;i:1;i:1;C:19:"SplDoublyLinkedList":'.strlen($inner).':{'.$inner.'}i:2;O:3:"obj":1:{s:4:"ryat";R:3;}i:3;a:1:{i:0;R:5;}i:4;s:'.strlen($fakezval).':"'.$fakezval.'";}'; + +$data = unserialize($exploit); + +var_dump($data); + +function ptr2str($ptr) +{ + $out = ''; + for ($i = 0; $i < 8; $i++) { + $out .= chr($ptr & 0xff); + $ptr >>= 8; + } + return $out; +} +?> +--EXPECTF-- +array(5) { + [0]=> + int(1) + [1]=> + &int(1) + [2]=> + object(obj)#%d (1) { + ["ryat"]=> + &int(1) + } + [3]=> + array(1) { + [0]=> + int(1) + } + [4]=> + string(24) "%s" +} \ No newline at end of file debian/patches/CVE-2016-7129.patch0000664000000000000000000000512012773246334013254 0ustar From 426aeb2808955ee3d3f52e0cfb102834cdb836a5 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Thu, 4 Aug 2016 00:17:42 -0700 Subject: [PATCH] Fix bug #72749: wddx_deserialize allows illegal memory access --- ext/wddx/tests/bug72749.phpt | 34 ++++++++++++++++++++++++++++++++++ ext/wddx/wddx.c | 20 ++++++++++++++------ 2 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 ext/wddx/tests/bug72749.phpt Index: php5-5.5.9+dfsg/ext/wddx/tests/bug72749.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug72749.phpt 2016-09-29 13:18:18.649880563 -0400 @@ -0,0 +1,34 @@ +--TEST-- +Bug #72749: wddx_deserialize allows illegal memory access +--SKIPIF-- + +--FILE-- + + + +
+ + + + 2\r2004-09-10T05:52:49+00 + + + + +XML; + +$array = wddx_deserialize($xml); +var_dump($array); +?> +--EXPECT-- +array(1) { + ["aDateTime3"]=> + string(24) "2 +2004-09-10T05:52:49+00" +} Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2016-09-29 13:18:18.653880608 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2016-09-29 13:18:18.649880563 -0400 @@ -1112,18 +1112,26 @@ case ST_DATETIME: { char *tmp; - tmp = emalloc(len + 1); - memcpy(tmp, s, len); + if (Z_TYPE_P(ent->data) == IS_STRING) { + tmp = safe_emalloc(Z_STRLEN_P(ent->data), 1, (size_t)len + 1); + memcpy(tmp, Z_STRVAL_P(ent->data), Z_STRLEN_P(ent->data)); + memcpy(tmp + Z_STRLEN_P(ent->data), s, len); + len += Z_STRLEN_P(ent->data); + efree(Z_STRVAL_P(ent->data)); + Z_TYPE_P(ent->data) = IS_LONG; + } else { + tmp = emalloc(len + 1); + memcpy(tmp, s, len); + } tmp[len] = '\0'; Z_LVAL_P(ent->data) = php_parse_date(tmp, NULL); /* date out of range < 1969 or > 2038 */ if (Z_LVAL_P(ent->data) == -1) { - Z_TYPE_P(ent->data) = IS_STRING; - Z_STRLEN_P(ent->data) = len; - Z_STRVAL_P(ent->data) = estrndup(s, len); + ZVAL_STRINGL(ent->data, tmp, len, 0); + } else { + efree(tmp); } - efree(tmp); } break; debian/patches/CVE-2017-11362.patch0000664000000000000000000000260713141101745013320 0ustar Backport of: From 95c4564f939c916538579ef63602a3cd31941c51 Mon Sep 17 00:00:00 2001 From: libnex Date: Mon, 29 May 2017 13:13:52 +0000 Subject: [PATCH] Fixed bug #73473: Stack Buffer Overflow in msgfmt_parse_message --- NEWS | 3 +++ ext/intl/msgformat/msgformat_parse.c | 1 + 2 files changed, 4 insertions(+) #diff --git a/NEWS b/NEWS #index 5f4a72e..eecf1e5 100644 #--- a/NEWS #+++ b/NEWS #@@ -7,6 +7,9 @@ PHP NEWS # properties). (Laruence) # . Fixed misparsing of abstract unix domain socket names. (Sara) # #+- Intl: #+ . Fixed bug #73473 (Stack Buffer Overflow in msgfmt_parse_message). (libnex) #+ # - Mbstring: # . Add oniguruma upstream fix (CVE-2017-9224, CVE-2017-9226, CVE-2017-9227, # CVE-2017-9228, CVE-2017-9229) (Remi, Mamoru TASAKA) Index: php5-5.5.9+dfsg/ext/intl/msgformat/msgformat_parse.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/intl/msgformat/msgformat_parse.c 2017-08-04 10:24:44.494853205 -0400 +++ php5-5.5.9+dfsg/ext/intl/msgformat/msgformat_parse.c 2017-08-04 10:25:10.290852260 -0400 @@ -110,6 +110,7 @@ PHP_FUNCTION( msgfmt_parse_message ) RETURN_FALSE; } + INTL_CHECK_LOCALE_LEN(slocale_len); msgformat_data_init(&mfo->mf_data TSRMLS_CC); if(pattern && pattern_len) { debian/patches/fpm-config.patch0000664000000000000000000000370712300436054013671 0ustar Description: Add major version number to paths and allow process pools to be configured in individual files in /etc/php5/fpm/pool.d/ Origin: vendor Forwarded: not-needed Last-Update: 2010-07-30 --- php5.orig/sapi/fpm/php-fpm.conf.in +++ php5/sapi/fpm/php-fpm.conf.in @@ -12,7 +12,7 @@ ; Relative path can also be used. They will be prefixed by: ; - the global prefix if it's been set (-p argument) ; - @prefix@ otherwise -;include=etc/fpm.d/*.conf +;include=@EXPANDED_SYSCONFDIR@/php5/fpm/*.conf ;;;;;;;;;;;;;;;;;; ; Global Options ; @@ -22,14 +22,14 @@ ; Pid file ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@ ; Default Value: none -;pid = run/php-fpm.pid +pid = @EXPANDED_LOCALSTATEDIR@/run/php5-fpm.pid ; Error log file ; If it's set to "syslog", log is sent to syslogd instead of being written ; in a local file. ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@ ; Default Value: log/php-fpm.log -;error_log = log/php-fpm.log +error_log = @EXPANDED_LOCALSTATEDIR@/log/php5-fpm.log ; syslog_facility is used to specify what type of program is logging the ; message. This lets syslogd specify that messages from different facilities @@ -124,6 +124,10 @@ ; used in logs and stats. There is no limitation on the number of pools which ; FPM can handle. Your system will tell you anyway :) +; To configure the pools it is recommended to have one .conf file per +; pool in the following directory: +include=@EXPANDED_SYSCONFDIR@/php5/fpm/pool.d/*.conf + ; Start a new pool named 'www'. ; the variable $pool can we used in any directive and will be replaced by the ; pool name ('www' here) @@ -466,7 +470,7 @@ pm.max_spare_servers = 3 ; Chdir to this directory at the start. ; Note: relative path can be used. ; Default Value: current directory or / when chroot -;chdir = /var/www +chdir = / ; Redirect worker stdout and stderr into main error log. If not set, stdout and ; stderr will be redirected to /dev/null according to FastCGI specs. debian/patches/CVE-2018-14851.patch0000664000000000000000000000402713347655552013347 0ustar From 3462efa386f26d343062094514af604c29e3edce Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 1 Jul 2018 22:20:19 -0700 Subject: [PATCH] Fix bug #76557: heap-buffer-overflow (READ of size 48) while reading exif data Use MAKERNOTE length as data size. --- ext/exif/exif.c | 5 ++- ext/exif/tests/bug76557.jpg | Bin 0 -> 2372 bytes ext/exif/tests/bug76557.phpt | 79 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 ext/exif/tests/bug76557.jpg create mode 100644 ext/exif/tests/bug76557.phpt Index: php5-5.5.9+dfsg/ext/exif/exif.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/exif/exif.c 2018-09-17 03:44:40.926285352 -0400 +++ php5-5.5.9+dfsg/ext/exif/exif.c 2018-09-17 03:44:40.922285304 -0400 @@ -2746,6 +2746,7 @@ static int exif_process_IFD_in_MAKERNOTE int NumDirEntries, old_motorola_intel, offset_diff; const maker_note_type *maker_note; char *dir_start; + int data_len; for (i=0; i<=sizeof(maker_note_array)/sizeof(maker_note_type); i++) { if (i==sizeof(maker_note_array)/sizeof(maker_note_type)) @@ -2794,6 +2795,7 @@ static int exif_process_IFD_in_MAKERNOTE switch (maker_note->offset_mode) { case MN_OFFSET_MAKER: offset_base = value_ptr; + data_len = value_len; break; case MN_OFFSET_GUESS: if (maker_note->offset + 10 + 4 >= value_len) { @@ -2810,6 +2812,7 @@ static int exif_process_IFD_in_MAKERNOTE return FALSE; } offset_base = value_ptr + offset_diff; + data_len = value_len - offset_diff; break; default: case MN_OFFSET_NORMAL: @@ -2823,7 +2826,7 @@ static int exif_process_IFD_in_MAKERNOTE for (de=0;detag_table TSRMLS_CC)) { + offset_base, data_len, displacement, section_index, 0, maker_note->tag_table TSRMLS_CC)) { return FALSE; } } debian/patches/CVE-2016-7417.patch0000664000000000000000000000367612773246653013276 0ustar From ecb7f58a069be0dec4a6131b6351a761f808f22e Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 11 Sep 2016 20:24:13 -0700 Subject: [PATCH] Fix bug #73029 - Missing type check when unserializing SplArray --- ext/spl/spl_array.c | 10 ++++++---- ext/spl/tests/bug73029.phpt | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 ext/spl/tests/bug73029.phpt Index: php5-5.5.9+dfsg/ext/spl/spl_array.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_array.c 2016-09-29 13:21:45.264197010 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_array.c 2016-09-29 13:21:45.260196965 -0400 @@ -306,7 +306,7 @@ long index; HashTable *ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC); - if (!offset) { + if (!offset || !ht) { return &EG(uninitialized_zval_ptr); } @@ -1789,7 +1789,9 @@ intern->ar_flags |= flags & SPL_ARRAY_CLONE_MASK; zval_ptr_dtor(&intern->array); ALLOC_INIT_ZVAL(intern->array); - if (!php_var_unserialize(&intern->array, &p, s + buf_len, &var_hash TSRMLS_CC)) { + if (!php_var_unserialize(&intern->array, &p, s + buf_len, &var_hash TSRMLS_CC) + || (Z_TYPE_P(intern->array) != IS_ARRAY && Z_TYPE_P(intern->array) != IS_OBJECT)) { + zval_ptr_dtor(&intern->array); goto outexcept; } var_push_dtor(&var_hash, &intern->array); Index: php5-5.5.9+dfsg/ext/spl/tests/bug73029.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/spl/tests/bug73029.phpt 2016-09-29 13:21:45.260196965 -0400 @@ -0,0 +1,16 @@ +--TEST-- +Bug #73029: Missing type check when unserializing SplArray +--FILE-- +getMessage() . "\n"; +} +?> +DONE +--EXPECTF-- +Error at offset 10 of 19 bytes +DONE debian/patches/use_embedded_timezonedb.patch0000664000000000000000000004147412300436054016474 0ustar Add support for use of the system timezone database, rather than embedding a copy. Discussed upstream but was not desired. History: r10 : make timezone case insensitive r9: fix another compile error without --with-system-tzdata configured (Michael Heimpold) r8: fix compile error without --with-system-tzdata configured r7: improve check for valid timezone id to exclude directories r6: fix fd leak in r5, fix country code/BC flag use in timezone_identifiers_list() using system db, fix use of PECL timezonedb to override system db, r5: reverts addition of "System/Localtime" fake tzname. updated for 5.3.0, parses zone.tab to pick up mapping between timezone name, country code and long/lat coords r4: added "System/Localtime" tzname which uses /etc/localtime r3: fix a crash if /usr/share/zoneinfo doesn't exist (Raphael Geissert) r2: add filesystem trawl to set up name alias index r1: initial revision --- php5.orig/ext/date/lib/parse_tz.c +++ php5/ext/date/lib/parse_tz.c @@ -18,8 +18,22 @@ /* $Id$ */ +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif + #include "timelib.h" +#ifdef HAVE_SYSTEM_TZDATA +#include +#include +#include +#include +#include + +#include "php_scandir.h" +#endif + #include #ifdef HAVE_LOCALE_H @@ -31,7 +41,12 @@ #else #include #endif + +#ifndef HAVE_SYSTEM_TZDATA #include "timezonedb.h" +#endif + +#include #if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__)) # if defined(__LITTLE_ENDIAN__) @@ -51,9 +66,14 @@ static void read_preamble(const unsigned char **tzf, timelib_tzinfo *tz) { - /* skip ID */ - *tzf += 4; - + if (memcmp(tzf, "TZif", 4) == 0) { + *tzf += 20; + return; + } + + /* skip ID */ + *tzf += 4; + /* read BC flag */ tz->bc = (**tzf == '\1'); *tzf += 1; @@ -256,7 +276,405 @@ void timelib_dump_tzinfo(timelib_tzinfo } } -static int seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb) +#ifdef HAVE_SYSTEM_TZDATA + +#ifdef HAVE_SYSTEM_TZDATA_PREFIX +#define ZONEINFO_PREFIX HAVE_SYSTEM_TZDATA_PREFIX +#else +#define ZONEINFO_PREFIX "/usr/share/zoneinfo" +#endif + +/* System timezone database pointer. */ +static const timelib_tzdb *timezonedb_system; + +/* Hash table entry for the cache of the zone.tab mapping table. */ +struct location_info { + char code[2]; + double latitude, longitude; + char name[64]; + char *comment; + struct location_info *next; +}; + +/* Cache of zone.tab. */ +static struct location_info **system_location_table; + +/* Size of the zone.tab hash table; a random-ish prime big enough to + * prevent too many collisions. */ +#define LOCINFO_HASH_SIZE (1021) + +/* Compute a case insensitive hash of str */ +static uint32_t tz_hash(const char *str) +{ + const unsigned char *p = (const unsigned char *)str; + uint32_t hash = 5381; + int c; + + while ((c = tolower(*p++)) != '\0') { + hash = (hash << 5) ^ hash ^ c; + } + + return hash % LOCINFO_HASH_SIZE; +} + +/* Parse an ISO-6709 date as used in zone.tab. Returns end of the + * parsed string on success, or NULL on parse error. On success, + * writes the parsed number to *result. */ +static char *parse_iso6709(char *p, double *result) +{ + double v, sign; + char *pend; + size_t len; + + if (*p == '+') + sign = 1.0; + else if (*p == '-') + sign = -1.0; + else + return NULL; + + p++; + for (pend = p; *pend >= '0' && *pend <= '9'; pend++) + ;; + + /* Annoying encoding used by zone.tab has no decimal point, so use + * the length to determine the format: + * + * 4 = DDMM + * 5 = DDDMM + * 6 = DDMMSS + * 7 = DDDMMSS + */ + len = pend - p; + if (len < 4 || len > 7) { + return NULL; + } + + /* p => [D]DD */ + v = (p[0] - '0') * 10.0 + (p[1] - '0'); + p += 2; + if (len == 5 || len == 7) + v = v * 10.0 + (*p++ - '0'); + /* p => MM[SS] */ + v += (10.0 * (p[0] - '0') + + p[1] - '0') / 60.0; + p += 2; + /* p => [SS] */ + if (len > 5) { + v += (10.0 * (p[0] - '0') + + p[1] - '0') / 3600.0; + p += 2; + } + + /* Round to five decimal place, not because it's a good idea, + * but, because the builtin data uses rounded data, so, match + * that. */ + *result = round(v * sign * 100000.0) / 100000.0; + + return p; +} + +/* This function parses the zone.tab file to build up the mapping of + * timezone to country code and geographic location, and returns a + * hash table. The hash table is indexed by the function: + * + * tz_hash(timezone-name) + */ +static struct location_info **create_location_table(void) +{ + struct location_info **li, *i; + char zone_tab[PATH_MAX]; + char line[512]; + FILE *fp; + + strncpy(zone_tab, ZONEINFO_PREFIX "/zone.tab", sizeof zone_tab); + + fp = fopen(zone_tab, "r"); + if (!fp) { + return NULL; + } + + li = calloc(LOCINFO_HASH_SIZE, sizeof *li); + + while (fgets(line, sizeof line, fp)) { + char *p = line, *code, *name, *comment; + uint32_t hash; + double latitude, longitude; + + while (isspace(*p)) + p++; + + if (*p == '#' || *p == '\0' || *p == '\n') + continue; + + if (!isalpha(p[0]) || !isalpha(p[1]) || p[2] != '\t') + continue; + + /* code => AA */ + code = p; + p[2] = 0; + p += 3; + + /* coords => [+-][D]DDMM[SS][+-][D]DDMM[SS] */ + p = parse_iso6709(p, &latitude); + if (!p) { + continue; + } + p = parse_iso6709(p, &longitude); + if (!p) { + continue; + } + + if (!p || *p != '\t') { + continue; + } + + /* name = string */ + name = ++p; + while (*p != '\t' && *p && *p != '\n') + p++; + + *p++ = '\0'; + + /* comment = string */ + comment = p; + while (*p != '\t' && *p && *p != '\n') + p++; + + if (*p == '\n' || *p == '\t') + *p = '\0'; + + hash = tz_hash(name); + i = malloc(sizeof *i); + memcpy(i->code, code, 2); + strncpy(i->name, name, sizeof i->name); + i->comment = strdup(comment); + i->longitude = longitude; + i->latitude = latitude; + i->next = li[hash]; + li[hash] = i; + /* printf("%s [%u, %f, %f]\n", name, hash, latitude, longitude); */ + } + + fclose(fp); + + return li; +} + +/* Return location info from hash table, using given timezone name. + * Returns NULL if the name could not be found. */ +const struct location_info *find_zone_info(struct location_info **li, + const char *name) +{ + uint32_t hash = tz_hash(name); + const struct location_info *l; + + if (!li) { + return NULL; + } + + for (l = li[hash]; l; l = l->next) { + if (strcasecmp(l->name, name) == 0) + return l; + } + + return NULL; +} + +/* Filter out some non-tzdata files and the posix/right databases, if + * present. */ +static int index_filter(const struct dirent *ent) +{ + return strcmp(ent->d_name, ".") != 0 + && strcmp(ent->d_name, "..") != 0 + && strcmp(ent->d_name, "posix") != 0 + && strcmp(ent->d_name, "posixrules") != 0 + && strcmp(ent->d_name, "right") != 0 + && strstr(ent->d_name, ".tab") == NULL; +} + +static int sysdbcmp(const void *first, const void *second) +{ + const timelib_tzdb_index_entry *alpha = first, *beta = second; + + return strcmp(alpha->id, beta->id); +} + + +/* Create the zone identifier index by trawling the filesystem. */ +static void create_zone_index(timelib_tzdb *db) +{ + size_t dirstack_size, dirstack_top; + size_t index_size, index_next; + timelib_tzdb_index_entry *db_index; + char **dirstack; + + /* LIFO stack to hold directory entries to scan; each slot is a + * directory name relative to the zoneinfo prefix. */ + dirstack_size = 32; + dirstack = malloc(dirstack_size * sizeof *dirstack); + dirstack_top = 1; + dirstack[0] = strdup(""); + + /* Index array. */ + index_size = 64; + db_index = malloc(index_size * sizeof *db_index); + index_next = 0; + + do { + struct dirent **ents; + char name[PATH_MAX], *top; + int count; + + /* Pop the top stack entry, and iterate through its contents. */ + top = dirstack[--dirstack_top]; + snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s", top); + + count = php_scandir(name, &ents, index_filter, php_alphasort); + + while (count > 0) { + struct stat st; + const char *leaf = ents[count - 1]->d_name; + + snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s/%s", + top, leaf); + + if (strlen(name) && stat(name, &st) == 0) { + /* Name, relative to the zoneinfo prefix. */ + const char *root = top; + + if (root[0] == '/') root++; + + snprintf(name, sizeof name, "%s%s%s", root, + *root ? "/": "", leaf); + + if (S_ISDIR(st.st_mode)) { + if (dirstack_top == dirstack_size) { + dirstack_size *= 2; + dirstack = realloc(dirstack, + dirstack_size * sizeof *dirstack); + } + dirstack[dirstack_top++] = strdup(name); + } + else { + if (index_next == index_size) { + index_size *= 2; + db_index = realloc(db_index, + index_size * sizeof *db_index); + } + + db_index[index_next++].id = strdup(name); + } + } + + free(ents[--count]); + } + + if (count != -1) free(ents); + free(top); + } while (dirstack_top); + + qsort(db_index, index_next, sizeof *db_index, sysdbcmp); + + db->index = db_index; + db->index_size = index_next; + + free(dirstack); +} + +#define FAKE_HEADER "1234\0??\1??" +#define FAKE_UTC_POS (7 - 4) + +/* Create a fake data segment for database 'sysdb'. */ +static void fake_data_segment(timelib_tzdb *sysdb, + struct location_info **info) +{ + size_t n; + char *data, *p; + + data = malloc(3 * sysdb->index_size + 7); + + p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1); + + for (n = 0; n < sysdb->index_size; n++) { + const struct location_info *li; + timelib_tzdb_index_entry *ent; + + ent = (timelib_tzdb_index_entry *)&sysdb->index[n]; + + /* Lookup the timezone name in the hash table. */ + if (strcmp(ent->id, "UTC") == 0) { + ent->pos = FAKE_UTC_POS; + continue; + } + + li = find_zone_info(info, ent->id); + if (li) { + /* If found, append the BC byte and the + * country code; set the position for this + * section of timezone data. */ + ent->pos = (p - data) - 4; + *p++ = '\1'; + *p++ = li->code[0]; + *p++ = li->code[1]; + } + else { + /* If not found, the timezone data can + * point at the header. */ + ent->pos = 0; + } + } + + sysdb->data = (unsigned char *)data; +} + +/* Returns true if the passed-in stat structure describes a + * probably-valid timezone file. */ +static int is_valid_tzfile(const struct stat *st) +{ + return S_ISREG(st->st_mode) && st->st_size > 20; +} + +/* Return the mmap()ed tzfile if found, else NULL. On success, the + * length of the mapped data is placed in *length. */ +static char *map_tzfile(const char *timezone, size_t *length) +{ + char fname[PATH_MAX]; + struct stat st; + char *p; + int fd; + + if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) { + return NULL; + } + + if (system_location_table) { + const struct location_info *li; + if ((li = find_zone_info(system_location_table, timezone)) != NULL) { + /* Use the stored name to avoid case issue */ + timezone = li->name; + } + } + snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone); + + fd = open(fname, O_RDONLY); + if (fd == -1) { + return NULL; + } else if (fstat(fd, &st) != 0 || !is_valid_tzfile(&st)) { + close(fd); + return NULL; + } + + *length = st.st_size; + p = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); + close(fd); + + return p != MAP_FAILED ? p : NULL; +} + +#endif + +static int inmem_seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb) { int left = 0, right = tzdb->index_size - 1; #ifdef HAVE_SETLOCALE @@ -295,36 +713,135 @@ static int seek_to_tz_position(const uns return 0; } +static int seek_to_tz_position(const unsigned char **tzf, char *timezone, + char **map, size_t *maplen, + const timelib_tzdb *tzdb) +{ +#ifdef HAVE_SYSTEM_TZDATA + if (tzdb == timezonedb_system) { + char *orig; + + orig = map_tzfile(timezone, maplen); + if (orig == NULL) { + return 0; + } + + (*tzf) = (unsigned char *)orig ; + *map = orig; + + return 1; + } + else +#endif + { + return inmem_seek_to_tz_position(tzf, timezone, tzdb); + } +} + const timelib_tzdb *timelib_builtin_db(void) { +#ifdef HAVE_SYSTEM_TZDATA + if (timezonedb_system == NULL) { + timelib_tzdb *tmp = malloc(sizeof *tmp); + + tmp->version = "0.system"; + tmp->data = NULL; + create_zone_index(tmp); + system_location_table = create_location_table(); + fake_data_segment(tmp, system_location_table); + timezonedb_system = tmp; + } + + + return timezonedb_system; +#else return &timezonedb_builtin; +#endif } const timelib_tzdb_index_entry *timelib_timezone_builtin_identifiers_list(int *count) { +#ifdef HAVE_SYSTEM_TZDATA + *count = timezonedb_system->index_size; + return timezonedb_system->index; +#else *count = sizeof(timezonedb_idx_builtin) / sizeof(*timezonedb_idx_builtin); return timezonedb_idx_builtin; +#endif } int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb) { const unsigned char *tzf; - return (seek_to_tz_position(&tzf, timezone, tzdb)); + +#ifdef HAVE_SYSTEM_TZDATA + if (tzdb == timezonedb_system) { + char fname[PATH_MAX]; + struct stat st; + + if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) { + return 0; + } + + if (system_location_table) { + if (find_zone_info(system_location_table, timezone) != NULL) { + /* found in cache */ + return 1; + } + } + + snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone); + + return stat(fname, &st) == 0 && is_valid_tzfile(&st); + } +#endif + + return (inmem_seek_to_tz_position(&tzf, timezone, tzdb)); } timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb) { const unsigned char *tzf; + char *memmap = NULL; + size_t maplen; timelib_tzinfo *tmp; - if (seek_to_tz_position(&tzf, timezone, tzdb)) { + if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) { tmp = timelib_tzinfo_ctor(timezone); read_preamble(&tzf, tmp); read_header(&tzf, tmp); read_transistions(&tzf, tmp); read_types(&tzf, tmp); - read_location(&tzf, tmp); + +#ifdef HAVE_SYSTEM_TZDATA + if (memmap) { + const struct location_info *li; + + /* TZif-style - grok the location info from the system database, + * if possible. */ + + if ((li = find_zone_info(system_location_table, timezone)) != NULL) { + tmp->location.comments = strdup(li->comment); + strncpy(tmp->location.country_code, li->code, 2); + tmp->location.longitude = li->longitude; + tmp->location.latitude = li->latitude; + tmp->bc = 1; + } + else { + strcpy(tmp->location.country_code, "??"); + tmp->bc = 0; + tmp->location.comments = strdup(""); + } + + /* Now done with the mmap segment - discard it. */ + munmap(memmap, maplen); + } else +#endif + { + /* PHP-style - use the embedded info. */ + read_location(&tzf, tmp); + } } else { tmp = NULL; } --- php5.orig/ext/date/lib/timelib.m4 +++ php5/ext/date/lib/timelib.m4 @@ -78,3 +78,17 @@ stdlib.h dnl Check for strtoll, atoll AC_CHECK_FUNCS(strtoll atoll strftime) + +PHP_ARG_WITH(system-tzdata, for use of system timezone data, +[ --with-system-tzdata[=DIR] to specify use of system timezone data], +no, no) + +if test "$PHP_SYSTEM_TZDATA" != "no"; then + AC_DEFINE(HAVE_SYSTEM_TZDATA, 1, [Define if system timezone data is used]) + + if test "$PHP_SYSTEM_TZDATA" != "yes"; then + AC_DEFINE_UNQUOTED(HAVE_SYSTEM_TZDATA_PREFIX, "$PHP_SYSTEM_TZDATA", + [Define for location of system timezone data]) + fi +fi + debian/patches/CVE-2016-6296.patch0000664000000000000000000000552012746403761013263 0ustar Backport of: From e6c48213c22ed50b2b987b479fcc1ac709394caa Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 18 Jul 2016 21:44:39 -0700 Subject: [PATCH] Fix bug #72606: heap-buffer-overflow (write) simplestring_addn simplestring.c --- ext/xmlrpc/libxmlrpc/simplestring.c | 61 ++++++++++++++++++++++--------------- ext/xmlrpc/libxmlrpc/simplestring.h | 2 +- 2 files changed, 38 insertions(+), 25 deletions(-) Index: php5-5.5.9+dfsg/ext/xmlrpc/libxmlrpc/simplestring.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/xmlrpc/libxmlrpc/simplestring.c 2016-07-28 09:25:18.294310035 -0400 +++ php5-5.5.9+dfsg/ext/xmlrpc/libxmlrpc/simplestring.c 2016-07-28 09:25:49.486708480 -0400 @@ -172,6 +172,9 @@ } /******/ +#ifndef SIZE_MAX +#define SIZE_MAX ((size_t)-1) +#endif /****f* FUNC/simplestring_addn * NAME * simplestring_addn @@ -190,18 +193,31 @@ * simplestring_add () * SOURCE */ -void simplestring_addn(simplestring* target, const char* source, int add_len) { +void simplestring_addn(simplestring* target, const char* source, size_t add_len) { + size_t newsize = target->size, incr = 0; if(target && source) { if(!target->str) { simplestring_init_str(target); } + + if((SIZE_MAX - add_len) < target->len || (SIZE_MAX - add_len - 1) < target->len) { + /* check for overflows, if there's a potential overflow do nothing */ + return; + } + if(target->len + add_len + 1 > target->size) { /* newsize is current length + new length */ - int newsize = target->len + add_len + 1; - int incr = target->size * 2; + newsize = target->len + add_len + 1; + incr = target->size * 2; /* align to SIMPLESTRING_INCR increments */ - newsize = newsize - (newsize % incr) + incr; + if (incr) { + newsize = newsize - (newsize % incr) + incr; + } + if(newsize < (target->len + add_len + 1)) { + /* some kind of overflow happened */ + return; + } target->str = (char*)realloc(target->str, newsize); target->size = target->str ? newsize : 0; Index: php5-5.5.9+dfsg/ext/xmlrpc/libxmlrpc/simplestring.h =================================================================== --- php5-5.5.9+dfsg.orig/ext/xmlrpc/libxmlrpc/simplestring.h 2016-07-28 09:25:18.294310035 -0400 +++ php5-5.5.9+dfsg/ext/xmlrpc/libxmlrpc/simplestring.h 2016-07-28 09:25:18.294310035 -0400 @@ -63,7 +63,7 @@ void simplestring_clear(simplestring* string); void simplestring_free(simplestring* string); void simplestring_add(simplestring* string, const char* add); -void simplestring_addn(simplestring* string, const char* add, int add_len); +void simplestring_addn(simplestring* string, const char* add, size_t add_len); #ifdef __cplusplus } debian/patches/PEAR-Builder-print-info-about-php5-dev.patch0000664000000000000000000000074412300436054020576 0ustar --- a/PEAR/Builder.php 2011-05-14 20:43:01.000000000 +0000 +++ b/PEAR/Builder.php 2011-05-26 15:56:41.096485701 +0000 @@ -309,6 +309,8 @@ class PEAR_Builder extends PEAR_Common } if (!$err) { + print "If the command failed with 'phpize: not found' then you need to install php5-dev package"; + print "You can do it by running 'apt-get install php5-dev' as a root user"; return $this->raiseError("`phpize' failed"); } debian/patches/CVE-2016-5772.patch0000664000000000000000000000351012746377625013267 0ustar From a44c89e8af7c2410f4bfc5e097be2a5d0639a60c Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 12 Jun 2016 23:18:23 -0700 Subject: [PATCH] Fix bug #72340: Double Free Courruption in wddx_deserialize --- ext/wddx/tests/bug72340.phpt | 24 ++++++++++++++++++++++++ ext/wddx/wddx.c | 4 ++++ 2 files changed, 28 insertions(+) create mode 100644 ext/wddx/tests/bug72340.phpt Index: php5-5.5.9+dfsg/ext/wddx/tests/bug72340.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug72340.phpt 2016-07-28 08:50:27.715732417 -0400 @@ -0,0 +1,24 @@ +--TEST-- +Bug #72340: Double Free Courruption in wddx_deserialize +--SKIPIF-- + +--FILE-- + + + + TEST + + + + +EOF; +$array = wddx_deserialize($xml); +var_dump($array); +?> +--EXPECT-- +array(0) { +} Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2016-07-28 08:50:27.723732512 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2016-07-28 08:50:27.719732465 -0400 @@ -1092,6 +1092,9 @@ break; case ST_BOOLEAN: + if(!ent->data) { + break; + } if (!strcmp(s, "true")) { Z_LVAL_P(ent->data) = 1; } else if (!strcmp(s, "false")) { @@ -1100,6 +1103,7 @@ zval_ptr_dtor(&ent->data); if (ent->varname) { efree(ent->varname); + ent->varname = NULL; } ent->data = NULL; } debian/patches/052-phpinfo_no_configure.patch0000664000000000000000000000211012300436054016333 0ustar Description: Disable configure parameters on phpinfo() output . Patch needs to be discussed with upstream and the issues that lead to its addition re-checked. Quoting changelog entry: . Add [...], which disables the display of our "Configure Command" in phpinfo(), which was the source of many bogus bug reports over the years, due to people misinterpreting its meaning. Origin: vendor Forwarded: no Last-Update: 2010-01-18 --- php5.orig/ext/standard/info.c +++ php5/ext/standard/info.c @@ -709,7 +709,7 @@ PHPAPI void php_print_info(int flag TSRM #ifdef ARCHITECTURE php_info_print_table_row(2, "Architecture", ARCHITECTURE); #endif -#ifdef CONFIGURE_COMMAND +#if 0 php_info_print_table_row(2, "Configure Command", CONFIGURE_COMMAND ); #endif --- php5.orig/ext/standard/tests/general_functions/phpinfo.phpt +++ php5/ext/standard/tests/general_functions/phpinfo.phpt @@ -20,7 +20,6 @@ PHP Version => %s System => %s Build Date => %s%a -Configure Command => %s Server API => Command Line Interface Virtual Directory Support => %s Configuration File (php.ini) Path => %s debian/patches/sybase-alias.patch0000664000000000000000000000554412300436054014222 0ustar --- php5.orig/ext/mssql/php_mssql.c +++ php5/ext/mssql/php_mssql.c @@ -178,6 +178,38 @@ const zend_function_entry mssql_function PHP_FE(mssql_execute, arginfo_mssql_execute) PHP_FE(mssql_free_statement, arginfo_mssql_free_statement) PHP_FE(mssql_guid_string, arginfo_mssql_guid_string) +#if !defined(PHP_WIN32) && !defined(HAVE_SYBASE_CT) + PHP_FALIAS(sybase_connect, mssql_connect, arginfo_mssql_connect) + PHP_FALIAS(sybase_pconnect, mssql_pconnect, arginfo_mssql_connect) + PHP_FALIAS(sybase_close, mssql_close, arginfo_mssql_close) + PHP_FALIAS(sybase_select_db, mssql_select_db, arginfo_mssql_select_db) + PHP_FALIAS(sybase_query, mssql_query, arginfo_mssql_query) + PHP_FALIAS(sybase_fetch_batch, mssql_fetch_batch, arginfo_mssql_fetch_batch) + PHP_FALIAS(sybase_affected_rows, mssql_rows_affected, arginfo_mssql_rows_affected) + PHP_FALIAS(sybase_free_result, mssql_free_result, arginfo_mssql_fetch_batch) + PHP_FALIAS(sybase_get_last_message, mssql_get_last_message, arginfo_mssql_get_last_message) + PHP_FALIAS(sybase_num_rows, mssql_num_rows, arginfo_mssql_fetch_batch) + PHP_FALIAS(sybase_num_fields, mssql_num_fields, arginfo_mssql_fetch_batch) + PHP_FALIAS(sybase_fetch_field, mssql_fetch_field, arginfo_mssql_fetch_field) + PHP_FALIAS(sybase_fetch_row, mssql_fetch_row, arginfo_mssql_fetch_batch) + PHP_FALIAS(sybase_fetch_array, mssql_fetch_array, arginfo_mssql_fetch_array) + PHP_FALIAS(sybase_fetch_assoc, mssql_fetch_assoc, arginfo_mssql_fetch_assoc) + PHP_FALIAS(sybase_fetch_object, mssql_fetch_object, arginfo_mssql_fetch_batch) + PHP_FALIAS(sybase_field_length, mssql_field_length, arginfo_mssql_field_length) + PHP_FALIAS(sybase_field_name, mssql_field_name, arginfo_mssql_field_length) + PHP_FALIAS(sybase_field_type, mssql_field_type, arginfo_mssql_field_length) + PHP_FALIAS(sybase_data_seek, mssql_data_seek, arginfo_mssql_data_seek) + PHP_FALIAS(sybase_field_seek, mssql_field_seek, arginfo_mssql_fetch_field) + PHP_FALIAS(sybase_result, mssql_result, arginfo_mssql_result) + PHP_FALIAS(sybase_next_result, mssql_next_result, arginfo_mssql_fetch_assoc) + PHP_FALIAS(sybase_min_error_severity, mssql_min_error_severity, arginfo_mssql_min_error_severity) + PHP_FALIAS(sybase_min_message_severity, mssql_min_message_severity, arginfo_mssql_min_error_severity) + PHP_FALIAS(sybase_init, mssql_init, arginfo_mssql_init) + PHP_FALIAS(sybase_bind, mssql_bind, arginfo_mssql_bind) + PHP_FALIAS(sybase_execute, mssql_execute, arginfo_mssql_execute) + PHP_FALIAS(sybase_free_statement, mssql_free_statement, arginfo_mssql_free_statement) + PHP_FALIAS(sybase_guid_string, mssql_guid_string, arginfo_mssql_guid_string) +#endif PHP_FE_END }; /* }}} */ debian/patches/bug71798.patch0000664000000000000000000000146712704222151013041 0ustar From 95433e8e339dbb6b5d5541473c1661db6ba2c451 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 27 Mar 2016 14:22:19 -0700 Subject: [PATCH] Fix bug #71798 - Integer Overflow in php_raw_url_encode --- ext/standard/url.c | 2 +- main/php_version.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) Index: php5-5.5.9+dfsg/ext/standard/url.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/url.c 2016-04-15 13:27:03.230299574 -0400 +++ php5-5.5.9+dfsg/ext/standard/url.c 2016-04-15 13:27:03.230299574 -0400 @@ -600,7 +600,7 @@ */ PHPAPI char *php_raw_url_encode(char const *s, int len, int *new_length) { - register int x, y; + register size_t x, y; unsigned char *str; str = (unsigned char *) safe_emalloc(3, len, 1); debian/patches/dont-gitclean-in-build.patch0000664000000000000000000000150612300436054016070 0ustar Author: Sean Finney Description: Don't run git-clean via buildconf Calling buildconf indirectly invokes vcsclean, which calls the gitclean-work target of build/build.mk, which calls among other things git clean -X -f -d, which in turn nukes the quilt .pc directory making life quite difficult for us. . This patch doesn't need to go upstream, as they likely don't want to support having a patch system on top of their source. --- php5.orig/build/build.mk +++ php5/build/build.mk @@ -75,6 +75,5 @@ gitclean-work: @if (test ! -f '.git/info/exclude' || grep -s "git-ls-files" .git/info/exclude); then \ (echo "Rebuild .git/info/exclude" && echo '*.o' > .git/info/exclude && git svn propget svn:ignore | grep -v config.nice >> .git/info/exclude); \ fi; \ - git clean -X -f -d; .PHONY: $(ALWAYS) snapshot debian/patches/CVE-2015-0273.patch0000664000000000000000000001074512501612545013243 0ustar Backport of: From 29a4e710de6a73341da3d268343fdfc072ba682a Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 17 Feb 2015 06:53:27 +0100 Subject: [PATCH] Fix bug #68942 (Use after free vulnerability in unserialize() with DateTimeZone) --- NEWS | 2 ++ ext/date/php_date.c | 21 ++++++++++----------- ext/date/tests/bug68942.phpt | 9 +++++++++ ext/date/tests/bug68942_2.phpt | 9 +++++++++ 4 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 ext/date/tests/bug68942.phpt create mode 100644 ext/date/tests/bug68942_2.phpt Index: php5-5.5.9+dfsg/ext/date/php_date.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/date/php_date.c 2015-03-16 13:35:42.972667792 -0400 +++ php5-5.5.9+dfsg/ext/date/php_date.c 2015-03-16 13:37:18.537396062 -0400 @@ -2774,12 +2774,9 @@ timelib_tzinfo *tzi; php_timezone_obj *tzobj; - if (zend_hash_find(myht, "date", 5, (void**) &z_date) == SUCCESS) { - convert_to_string(*z_date); - if (zend_hash_find(myht, "timezone_type", 14, (void**) &z_timezone_type) == SUCCESS) { - convert_to_long(*z_timezone_type); - if (zend_hash_find(myht, "timezone", 9, (void**) &z_timezone) == SUCCESS) { - convert_to_string(*z_timezone); + if (zend_hash_find(myht, "date", 5, (void**) &z_date) == SUCCESS && Z_TYPE_PP(z_date) == IS_STRING) { + if (zend_hash_find(myht, "timezone_type", 14, (void**) &z_timezone_type) == SUCCESS && Z_TYPE_PP(z_timezone_type) == IS_LONG) { + if (zend_hash_find(myht, "timezone", 9, (void**) &z_timezone) == SUCCESS && Z_TYPE_PP(z_timezone) == IS_STRING) { switch (Z_LVAL_PP(z_timezone_type)) { case TIMELIB_ZONETYPE_OFFSET: @@ -2794,7 +2791,6 @@ case TIMELIB_ZONETYPE_ID: { int ret; - convert_to_string(*z_timezone); tzi = php_date_parse_tzfile(Z_STRVAL_PP(z_timezone), DATE_TIMEZONEDB TSRMLS_CC); @@ -3705,9 +3701,8 @@ zval **z_timezone_type = NULL; timelib_tzinfo *tzi; - if (zend_hash_find(myht, "timezone_type", 14, (void**) &z_timezone_type) == SUCCESS) { + if (zend_hash_find(myht, "timezone_type", 14, (void**) &z_timezone_type) == SUCCESS && Z_TYPE_PP(z_timezone_type) == IS_LONG) { if (zend_hash_find(myht, "timezone", 9, (void**) &z_timezone) == SUCCESS) { - convert_to_long(*z_timezone_type); switch (Z_LVAL_PP(z_timezone_type)) { case TIMELIB_ZONETYPE_OFFSET: { char *offset, *offset_start; @@ -3758,7 +3753,9 @@ php_date_instantiate(date_ce_timezone, return_value TSRMLS_CC); tzobj = (php_timezone_obj *) zend_object_store_get_object(return_value TSRMLS_CC); - php_date_timezone_initialize_from_hash(&return_value, &tzobj, myht TSRMLS_CC); + if(php_date_timezone_initialize_from_hash(&return_value, &tzobj, myht TSRMLS_CC) != SUCCESS) { + php_error_docref(NULL, E_ERROR, "Timezone initialization failed"); + } } /* }}} */ @@ -3774,7 +3771,9 @@ myht = Z_OBJPROP_P(object); - php_date_timezone_initialize_from_hash(&return_value, &tzobj, myht TSRMLS_CC); + if(php_date_timezone_initialize_from_hash(&return_value, &tzobj, myht TSRMLS_CC) != SUCCESS) { + php_error_docref(NULL, E_ERROR, "Timezone initialization failed"); + } } /* }}} */ Index: php5-5.5.9+dfsg/ext/date/tests/bug68942.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/date/tests/bug68942.phpt 2015-03-16 13:35:42.948667610 -0400 @@ -0,0 +1,9 @@ +--TEST-- +Bug #68942 (Use after free vulnerability in unserialize() with DateTimeZone). +--FILE-- + +--EXPECTF-- +Fatal error: DateTimeZone::__wakeup(): Timezone initialization failed in %s/bug68942.php on line %d Index: php5-5.5.9+dfsg/ext/date/tests/bug68942_2.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/date/tests/bug68942_2.phpt 2015-03-16 13:35:42.948667610 -0400 @@ -0,0 +1,9 @@ +--TEST-- +Bug #68942 (Use after free vulnerability in unserialize() with DateTime). +--FILE-- + +--EXPECTF-- +Fatal error: Invalid serialization data for DateTime object in %s/bug68942_2.php on line %d debian/patches/CVE-2014-9705.patch0000664000000000000000000000311612501612135013240 0ustar From bdfe457a2c1b47209e32783b3a6447e81baf179a Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 16 Feb 2015 06:50:10 +0100 Subject: [PATCH] Port for for bug #68552 --- NEWS | 6 ++++++ ext/enchant/enchant.c | 7 +++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ext/enchant/enchant.c b/ext/enchant/enchant.c index 6de2fea..0eb8144 100644 --- a/ext/enchant/enchant.c +++ b/ext/enchant/enchant.c @@ -550,13 +550,12 @@ PHP_FUNCTION(enchant_broker_request_dict) d = enchant_broker_request_dict(pbroker->pbroker, (const char *)tag); if (d) { + pos = pbroker->dictcnt++; if (pbroker->dictcnt) { pbroker->dict = (enchant_dict **)erealloc(pbroker->dict, sizeof(enchant_dict *) * pbroker->dictcnt); - pos = pbroker->dictcnt++; } else { pbroker->dict = (enchant_dict **)emalloc(sizeof(enchant_dict *)); pos = 0; - pbroker->dictcnt++; } dict = pbroker->dict[pos] = (enchant_dict *)emalloc(sizeof(enchant_dict)); @@ -607,14 +606,14 @@ PHP_FUNCTION(enchant_broker_request_pwl_dict) d = enchant_broker_request_pwl_dict(pbroker->pbroker, (const char *)pwl); if (d) { + pos = pbroker->dictcnt++; if (pbroker->dictcnt) { - pos = pbroker->dictcnt++; pbroker->dict = (enchant_dict **)erealloc(pbroker->dict, sizeof(enchant_dict *) * pbroker->dictcnt); } else { pbroker->dict = (enchant_dict **)emalloc(sizeof(enchant_dict *)); pos = 0; - pbroker->dictcnt++; } + dict = pbroker->dict[pos] = (enchant_dict *)emalloc(sizeof(enchant_dict)); dict->id = pos; dict->pbroker = pbroker; -- 2.1.4 debian/patches/CVE-2014-3487.patch0000664000000000000000000000222212355546255013256 0ustar From 25b1dc917a53787dbb2532721ca22f3f36eb13c0 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 10 Jun 2014 14:33:37 +0200 Subject: [PATCH] Fixed Bug #67413 fileinfo: cdf_read_property_info insufficient boundary chec Upstream: https://github.com/file/file/commit/93e063ee374b6a75729df9e7201fb511e47e259d Adapted for C standard. --- ext/fileinfo/libmagic/cdf.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index ee467a6..429f3b9 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -812,7 +812,11 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h, if (cdf_check_stream_offset(sst, h, e, 0, __LINE__) == -1) goto out; for (i = 0; i < sh.sh_properties; i++) { - size_t ofs = CDF_GETUINT32(p, (i << 1) + 1); + size_t ofs, tail = (i << 1) + 1; + if (cdf_check_stream_offset(sst, h, p, tail * sizeof(uint32_t), + __LINE__) == -1) + goto out; + ofs = CDF_GETUINT32(p, tail); q = (const uint8_t *)(const void *) ((const char *)(const void *)p + ofs - 2 * sizeof(uint32_t)); -- 1.9.2 debian/patches/CVE-2016-6295.patch0000664000000000000000000000473712746400302013257 0ustar From cab1c3b3708eead315e033359d07049b23b147a3 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 26 Jun 2016 17:52:09 -0700 Subject: [PATCH] Fixed bug #72479 - same as #72434 --- ext/snmp/snmp.c | 89 ++++++++++++++++++++++++-------------------- ext/snmp/tests/bug72479.phpt | 35 +++++++++++++++++ 2 files changed, 84 insertions(+), 40 deletions(-) create mode 100644 ext/snmp/tests/bug72479.phpt diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index 6c1da4c..e1161c7 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -2095,6 +2095,14 @@ static int php_snmp_has_property(zval *object, zval *member, int has_set_exists, } /* }}} */ +static HashTable *php_snmp_get_gc(zval *object, zval ***gc_data, int *gc_data_count TSRMLS_DC) /* {{{ */ +{ + *gc_data = NULL; + *gc_data_count = 0; + return zend_std_get_properties(object TSRMLS_CC); +} +/* }}} */ + /* {{{ php_snmp_get_properties(zval *object) Returns all object properties. Injects SNMP properties into object on first call */ static HashTable *php_snmp_get_properties(zval *object TSRMLS_DC) @@ -2401,6 +2409,7 @@ PHP_MINIT_FUNCTION(snmp) php_snmp_object_handlers.write_property = php_snmp_write_property; php_snmp_object_handlers.has_property = php_snmp_has_property; php_snmp_object_handlers.get_properties = php_snmp_get_properties; + php_snmp_object_handlers.get_gc = php_snmp_get_gc; /* Register SNMP Class */ INIT_CLASS_ENTRY(ce, "SNMP", php_snmp_class_methods); diff --git a/ext/snmp/tests/bug72479.phpt b/ext/snmp/tests/bug72479.phpt new file mode 100644 index 0000000..0308754 --- /dev/null +++ b/ext/snmp/tests/bug72479.phpt @@ -0,0 +1,35 @@ +--TEST-- +Bug #72479: Use After Free Vulnerability in SNMP with GC and unserialize() +--SKIPIF-- + +--FILE-- +>= 8; + } + return $out; +} +?> +--EXPECT-- +int(1) \ No newline at end of file -- 2.1.4 debian/patches/bug64938.patch0000664000000000000000000000256512704222075013044 0ustar From de31324c221c1791b26350ba106cc26bad23ace9 Mon Sep 17 00:00:00 2001 From: Martin Jansen Date: Thu, 22 Jan 2015 20:58:15 +0100 Subject: [PATCH] Fix bug #64938: libxml_disable_entity_loader setting is shared between threads The availability of entity loading is stored in a module global which previously was only initialized in the GINIT constructor. This had the effect that disabling the entity loader in one request caused subsequent requests hitting the same Apache child process to also have the loader disabled. With this change the loader is explicitely enabled in the request init phase. --- NEWS | 4 ++++ ext/libxml/libxml.c | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c index 4b7a36a..5f0da89 100644 --- a/ext/libxml/libxml.c +++ b/ext/libxml/libxml.c @@ -857,6 +857,12 @@ static PHP_RINIT_FUNCTION(libxml) xmlSetGenericErrorFunc(NULL, php_libxml_error_handler); xmlParserInputBufferCreateFilenameDefault(php_libxml_input_buffer_create_filename); xmlOutputBufferCreateFilenameDefault(php_libxml_output_buffer_create_filename); + + /* Enable the entity loader by default. This ensure that + * other threads/requests that might have disable the loader + * do not affect the current request. + */ + LIBXML(entity_loader_disabled) = 0; } return SUCCESS; } -- 2.1.4 debian/patches/CVE-2016-4542.patch0000664000000000000000000000646712717366613013270 0ustar Backport of: From 082aecfc3a753ad03be82cf14f03ac065723ec92 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 24 Apr 2016 19:33:52 -0700 Subject: [PATCH] Fix bug #72094 - Out of bounds heap read access in exif header processing --- ext/exif/exif.c | 17 ++++++++++-- ext/exif/tests/bug72094.phpt | 61 ++++++++++++++++++++++++++++++++++++++++++ ext/exif/tests/bug72094_1.jpg | Bin 0 -> 140 bytes ext/exif/tests/bug72094_2.jpg | Bin 0 -> 140 bytes ext/exif/tests/bug72094_3.jpg | Bin 0 -> 112 bytes ext/exif/tests/bug72094_4.jpg | Bin 0 -> 32 bytes 6 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 ext/exif/tests/bug72094.phpt create mode 100644 ext/exif/tests/bug72094_1.jpg create mode 100644 ext/exif/tests/bug72094_2.jpg create mode 100644 ext/exif/tests/bug72094_3.jpg create mode 100644 ext/exif/tests/bug72094_4.jpg Index: php5-5.5.9+dfsg/ext/exif/exif.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/exif/exif.c 2016-05-19 12:44:56.935863492 -0400 +++ php5-5.5.9+dfsg/ext/exif/exif.c 2016-05-19 12:44:56.935863492 -0400 @@ -2964,8 +2964,8 @@ if (lengthCopyrightPhotographer = estrdup(value_ptr); - ImageInfo->CopyrightEditor = estrdup(value_ptr+length+1); - spprintf(&ImageInfo->Copyright, 0, "%s, %s", value_ptr, value_ptr+length+1); + ImageInfo->CopyrightEditor = estrndup(value_ptr+length+1, byte_count-length-1); + spprintf(&ImageInfo->Copyright, 0, "%s, %s", ImageInfo->CopyrightPhotographer, ImageInfo->CopyrightEditor); /* format = TAG_FMT_UNDEFINED; this musn't be ASCII */ /* but we are not supposed to change this */ /* keep in mind that image_info does not store editor value */ @@ -3134,6 +3134,11 @@ ImageInfo->sections_found |= FOUND_IFD0; + if ((dir_start + 2) >= (offset_base+IFDlength)) { + exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "Illegal IFD size"); + return FALSE; + } + NumDirEntries = php_ifd_get16u(dir_start, ImageInfo->motorola_intel); if ((dir_start+2+NumDirEntries*12) > (offset_base+IFDlength)) { @@ -3157,6 +3162,10 @@ * Hack to make it process IDF1 I hope * There are 2 IDFs, the second one holds the keys (0x0201 and 0x0202) to the thumbnail */ + if ((dir_start+2+12*de + 4) >= (offset_base+IFDlength)) { + exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "Illegal IFD size"); + return FALSE; + } NextDirOffset = php_ifd_get32u(dir_start+2+12*de, ImageInfo->motorola_intel); if (NextDirOffset) { /* the next line seems false but here IFDlength means length of all IFDs */ @@ -3206,9 +3215,13 @@ } /* Check the next two values for correctness. */ + if (length < 8) { + exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_WARNING, "Invalid TIFF start (1)"); + return; + } exif_value_2a = php_ifd_get16u(CharBuf+2, ImageInfo->motorola_intel); offset_of_ifd = php_ifd_get32u(CharBuf+4, ImageInfo->motorola_intel); - if ( exif_value_2a != 0x2a || offset_of_ifd < 0x08) { + if (exif_value_2a != 0x2a || offset_of_ifd < 0x08) { exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_WARNING, "Invalid TIFF start (1)"); return; } debian/patches/CVE-2015-3411.patch0000664000000000000000000002571312543257176013254 0ustar Backport of: From 4435b9142ff9813845d5c97ab29a5d637bedb257 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 5 Apr 2015 16:01:24 -0700 Subject: [PATCH] Fixed bug #69353 (Missing null byte checks for paths in various PHP extensions) --- ext/dom/document.c | 5 ++++- ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt | 5 +++++ ext/fileinfo/fileinfo.c | 5 +++++ ext/fileinfo/tests/finfo_file_basic.phpt | 4 ++++ ext/gd/gd.c | 8 ++++---- ext/hash/hash.c | 7 ++++++- ext/hash/tests/hash_hmac_file_error.phpt | 7 +++++++ ext/pgsql/pgsql.c | 2 +- ext/standard/link.c | 2 +- ext/standard/streamsfuncs.c | 2 +- ext/xmlwriter/php_xmlwriter.c | 4 ++-- ext/zlib/zlib.c | 4 ++-- 12 files changed, 42 insertions(+), 13 deletions(-) Index: php5-5.5.9+dfsg/ext/dom/document.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/dom/document.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/dom/document.c 2015-06-26 10:14:11.727052699 -0400 @@ -1574,6 +1574,9 @@ xmlInitParser(); if (mode == DOM_LOAD_FILE) { + if (CHECK_NULL_PATH(source, source_len)) { + return NULL; + } char *file_dest = _dom_get_valid_file_path(source, resolved_path, MAXPATHLEN TSRMLS_CC); if (file_dest) { ctxt = xmlCreateFileParserCtxt(file_dest); @@ -2170,7 +2173,7 @@ id = getThis(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &source, &source_len, &options) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|l", &source, &source_len, &options) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt 2015-06-26 10:14:11.727052699 -0400 @@ -13,6 +13,11 @@ $doc = new DOMDocument(); $result = $doc->loadHTMLFile(""); assert('$result === false'); +$doc = new DOMDocument(); +$result = $doc->loadHTMLFile("text.html\0something"); +assert('$result === null'); ?> --EXPECTF-- %r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile(): Empty string supplied as input %s + +%r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile() expects parameter 1 to be a valid path, string given %s Index: php5-5.5.9+dfsg/ext/fileinfo/fileinfo.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/fileinfo/fileinfo.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/fileinfo/fileinfo.c 2015-06-26 10:14:11.731052743 -0400 @@ -506,6 +506,11 @@ RETVAL_FALSE; goto clean; } + if (CHECK_NULL_PATH(buffer, buffer_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid path"); + RETVAL_FALSE; + goto clean; + } wrap = php_stream_locate_url_wrapper(buffer, &tmp2, 0 TSRMLS_CC); Index: php5-5.5.9+dfsg/ext/fileinfo/tests/finfo_file_basic.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/fileinfo/tests/finfo_file_basic.phpt 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/fileinfo/tests/finfo_file_basic.phpt 2015-06-26 10:14:11.731052743 -0400 @@ -19,6 +19,7 @@ var_dump( finfo_file( $finfo, __FILE__) ); var_dump( finfo_file( $finfo, __FILE__, FILEINFO_CONTINUE ) ); var_dump( finfo_file( $finfo, $magicFile ) ); +var_dump( finfo_file( $finfo, $magicFile.chr(0).$magicFile) ); ?> ===DONE=== @@ -27,4 +28,7 @@ string(28) "text/x-php; charset=us-ascii" string(22) "PHP script, ASCII text" string(25) "text/plain; charset=utf-8" + +Warning: finfo_file(): Invalid path in %s/finfo_file_basic.php on line %d +bool(false) ===DONE=== Index: php5-5.5.9+dfsg/ext/gd/gd.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/gd/gd.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/gd/gd.c 2015-06-26 10:14:11.731052743 -0400 @@ -1417,7 +1417,7 @@ gdFontPtr font; php_stream *stream; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &file, &file_name) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &file, &file_name) == FAILURE) { return; } @@ -2354,7 +2354,7 @@ long ignore_warning; if (image_type == PHP_GDIMG_TYPE_GD2PART) { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sllll", &file, &file_len, &srcx, &srcy, &width, &height) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "pllll", &file, &file_len, &srcx, &srcy, &width, &height) == FAILURE) { return; } if (width < 1 || height < 1) { @@ -2362,7 +2362,7 @@ RETURN_FALSE; } } else { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &file, &file_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &file, &file_len) == FAILURE) { return; } } @@ -4031,7 +4031,7 @@ char *enc, **enc_vector; int enc_len, *f_ind; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &fnt, &enc, &enc_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rp", &fnt, &enc, &enc_len) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/hash/hash.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/hash/hash.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/hash/hash.c 2015-06-26 10:14:11.731052743 -0400 @@ -143,6 +143,7 @@ } if (isfilename) { if (CHECK_NULL_PATH(data, data_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid path"); RETURN_FALSE; } stream = php_stream_open_wrapper_ex(data, "rb", REPORT_ERRORS, NULL, DEFAULT_CONTEXT); @@ -258,6 +259,10 @@ RETURN_FALSE; } if (isfilename) { + if (CHECK_NULL_PATH(data, data_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid path"); + RETURN_FALSE; + } stream = php_stream_open_wrapper_ex(data, "rb", REPORT_ERRORS, NULL, DEFAULT_CONTEXT); if (!stream) { /* Stream will report errors opening file */ @@ -462,7 +467,7 @@ char *filename, buf[1024]; int filename_len, n; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|r", &zhash, &filename, &filename_len, &zcontext) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rp|r", &zhash, &filename, &filename_len, &zcontext) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/hash/tests/hash_hmac_file_error.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/hash/tests/hash_hmac_file_error.phpt 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/hash/tests/hash_hmac_file_error.phpt 2015-06-26 10:14:11.735052787 -0400 @@ -28,6 +28,9 @@ echo "\n-- Testing hash_hmac_file() function with invalid hash algorithm --\n"; hash_hmac_file('foo', $file, $key, TRUE); +echo "\n-- Testing hash_hmac_file() function with bad path --\n"; +hash_hmac_file('crc32', $file.chr(0).$file, $key, TRUE); + ?> ===Done=== --EXPECTF-- @@ -51,4 +54,8 @@ -- Testing hash_hmac_file() function with invalid hash algorithm -- Warning: hash_hmac_file(): Unknown hashing algorithm: foo in %s on line %d + +-- Testing hash_hmac_file() function with bad path -- + +Warning: hash_hmac_file(): Invalid path in %s on line %d ===Done=== \ No newline at end of file Index: php5-5.5.9+dfsg/ext/pgsql/pgsql.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/pgsql/pgsql.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/pgsql/pgsql.c 2015-06-26 10:14:59.183690481 -0400 @@ -2966,7 +2966,7 @@ php_stream *stream; id = PGG(default_link); - if (zend_parse_parameters(argc TSRMLS_CC, "s|sr", &z_filename, &z_filename_len, &mode, &mode_len, &pgsql_link) == FAILURE) { + if (zend_parse_parameters(argc TSRMLS_CC, "p|sr", &z_filename, &z_filename_len, &mode, &mode_len, &pgsql_link) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/standard/link.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/link.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/standard/link.c 2015-06-26 10:14:11.735052787 -0400 @@ -59,7 +59,7 @@ char buff[MAXPATHLEN]; int ret; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &link, &link_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &link, &link_len) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/standard/streamsfuncs.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/streamsfuncs.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/standard/streamsfuncs.c 2015-06-26 10:14:11.735052787 -0400 @@ -1545,7 +1545,7 @@ char *filename, *resolved_path; int filename_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &filename, &filename_len) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/xmlwriter/php_xmlwriter.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/xmlwriter/php_xmlwriter.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/xmlwriter/php_xmlwriter.c 2015-06-26 10:14:11.735052787 -0400 @@ -1738,7 +1738,7 @@ /* }}} */ #endif -/* {{{ proto resource xmlwriter_open_uri(resource xmlwriter, string source) +/* {{{ proto resource xmlwriter_open_uri(string source) Create new xmlwriter using source uri for output */ static PHP_FUNCTION(xmlwriter_open_uri) { @@ -1759,7 +1759,7 @@ void *ioctx; #endif - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &source, &source_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &source, &source_len) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/zlib/zlib.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/zlib/zlib.c 2015-06-26 10:14:11.739052831 -0400 +++ php5-5.5.9+dfsg/ext/zlib/zlib.c 2015-06-26 10:14:11.739052831 -0400 @@ -581,7 +581,7 @@ php_stream *stream; long use_include_path = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|l", &filename, &filename_len, &mode, &mode_len, &use_include_path) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ps|l", &filename, &filename_len, &mode, &mode_len, &use_include_path) == FAILURE) { return; } @@ -609,7 +609,7 @@ int size; long use_include_path = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &filename, &filename_len, &use_include_path) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|l", &filename, &filename_len, &use_include_path) == FAILURE) { return; } debian/patches/CVE-2015-8994-1.patch0000664000000000000000000002175513141100475013421 0ustar From ecba563f2fa1e027ea91b9ee0d50611273852995 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 16 Nov 2016 12:43:10 +0300 Subject: [PATCH] Fixed bug #69090 (check cached files permissions) --- NEWS | 1 + ext/opcache/README | 10 ++++++++ ext/opcache/ZendAccelerator.c | 47 +++++++++++++++++++++++++++++++++++ ext/opcache/ZendAccelerator.h | 5 ++++ ext/opcache/zend_accelerator_hash.c | 12 +++++++++ ext/opcache/zend_accelerator_module.c | 4 +++ 6 files changed, 79 insertions(+) #diff --git a/NEWS b/NEWS #index bb32f6a3b6e4..9a2f915c1f90 100644 #--- a/NEWS #+++ b/NEWS #@@ -5,6 +5,7 @@ PHP NEWS # - Opcache: # . Fixed bug #73402 (Opcache segfault when using class constant to call a # method). (Laruence) #+ . Fixed bug #69090 (check cached files permissions) # # - OpenSSL # . Fixed bug #72776 (Invalid parameter in memcpy function trough #diff --git a/ext/opcache/README b/ext/opcache/README #index 693a7b4e3cc0..d5513c51cea1 100644 #--- a/ext/opcache/README #+++ b/ext/opcache/README #@@ -102,6 +102,16 @@ opcache.validate_timestamps (default "1") # The frequency of the check is controlled by the directive # "opcache.revalidate_freq". # #+opcache.validate_permission (default "0") #+ Leads OPcache to check file readability on each access to cached file. #+ This directive should be enabled in shared hosting environment, when few #+ users (PHP-FPM pools) reuse the common OPcache shared memory. #+ #+opcache.validate_root (default "0") #+ This directive prevents file name collisions in different "chroot" #+ environments. It should be enabled for sites that may serve requests in #+ different "chroot" environments. #+ # opcache.revalidate_freq (default "2") # How often (in seconds) to check file timestamps for changes to the shared # memory storage allocation. ("1" means validate once per second, but only Index: php5-5.5.9+dfsg/ext/opcache/ZendAccelerator.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/opcache/ZendAccelerator.c 2017-08-04 10:14:19.362876105 -0400 +++ php5-5.5.9+dfsg/ext/opcache/ZendAccelerator.c 2017-08-04 10:14:19.358876105 -0400 @@ -1575,6 +1575,28 @@ zend_op_array *persistent_compile_file(z persistent_script = NULL; } + /* Revalidate acessibility of cached file */ + if (EXPECTED(persistent_script != NULL) && + UNEXPECTED(ZCG(accel_directives).validate_permission) && + file_handle->type == ZEND_HANDLE_FILENAME && + UNEXPECTED(access(file_handle->filename, R_OK) != 0)) { + if (type == ZEND_REQUIRE) { +#if ZEND_EXTENSION_API_NO < PHP_5_3_X_API_NO + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename); +#else + zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename TSRMLS_CC); +#endif + zend_bailout(); + } else { +#if ZEND_EXTENSION_API_NO < PHP_5_3_X_API_NO + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename); +#else + zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename TSRMLS_CC); +#endif + } + return NULL; + } + SHM_UNPROTECT(); /* If script is found then validate_timestamps if option is enabled */ @@ -2087,6 +2109,31 @@ static void accel_activate(void) return; } +#ifndef ZEND_WIN32 + if (ZCG(accel_directives).validate_root) { + struct stat buf; + + if (stat("/", &buf) != 0) { + ZCG(root_hash) = 0; + } else { + unsigned long x = buf.st_ino; + +#if SIZEOF_LONG == 4 + x = ((x >> 16) ^ x) * 0x45d9f3b; + x = ((x >> 16) ^ x) * 0x45d9f3b; + x = (x >> 16) ^ x; +#elif SIZEOF_LONG == 8 + x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9; + x = (x ^ (x >> 27)) * 0x94d049bb133111eb; + x = x ^ (x >> 31); +#endif + ZCG(root_hash) = x; + } + } else { + ZCG(root_hash) = 0; + } +#endif + SHM_UNPROTECT(); /* PHP-5.4 and above return "double", but we use 1 sec precision */ ZCG(request_time) = (time_t)sapi_get_request_time(TSRMLS_C); Index: php5-5.5.9+dfsg/ext/opcache/ZendAccelerator.h =================================================================== --- php5-5.5.9+dfsg.orig/ext/opcache/ZendAccelerator.h 2017-08-04 10:14:19.362876105 -0400 +++ php5-5.5.9+dfsg/ext/opcache/ZendAccelerator.h 2017-08-04 10:14:19.358876105 -0400 @@ -228,6 +228,8 @@ typedef struct _zend_accel_directives { zend_bool file_override_enabled; zend_bool inherited_hack; zend_bool enable_cli; + zend_bool validate_permission; + zend_bool validate_root; unsigned long revalidate_freq; unsigned long file_update_protection; char *error_log; @@ -262,6 +264,9 @@ typedef struct _zend_accel_globals { int include_path_len; /* "include_path" string length */ int include_path_check; time_t request_time; +#ifndef ZEND_WIN32 + unsigned long root_hash; +#endif /* preallocated shared-memory block to save current script */ void *mem; /* cache to save hash lookup on the same INCLUDE opcode */ Index: php5-5.5.9+dfsg/ext/opcache/zend_accelerator_hash.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/opcache/zend_accelerator_hash.c 2017-08-04 10:14:19.362876105 -0400 +++ php5-5.5.9+dfsg/ext/opcache/zend_accelerator_hash.c 2017-08-04 10:14:19.358876105 -0400 @@ -86,6 +86,9 @@ zend_accel_hash_entry* zend_accel_hash_u } hash_value = zend_inline_hash_func(key, key_length); +#ifndef ZEND_WIN32 + hash_value ^= ZCG(root_hash); +#endif index = hash_value % accel_hash->max_num_entries; /* try to see if the element already exists in the hash */ @@ -147,6 +150,9 @@ void* zend_accel_hash_find(zend_accel_ha zend_accel_hash_entry *entry; hash_value = zend_inline_hash_func(key, key_length); +#ifndef ZEND_WIN32 + hash_value ^= ZCG(root_hash); +#endif index = hash_value % accel_hash->max_num_entries; entry = accel_hash->hash_table[index]; @@ -175,6 +181,9 @@ zend_accel_hash_entry* zend_accel_hash_f zend_accel_hash_entry *entry; hash_value = zend_inline_hash_func(key, key_length); +#ifndef ZEND_WIN32 + hash_value ^= ZCG(root_hash); +#endif index = hash_value % accel_hash->max_num_entries; entry = accel_hash->hash_table[index]; @@ -200,6 +209,9 @@ int zend_accel_hash_unlink(zend_accel_ha zend_accel_hash_entry *entry, *last_entry=NULL; hash_value = zend_inline_hash_func(key, key_length); +#ifndef ZEND_WIN32 + hash_value ^= ZCG(root_hash); +#endif index = hash_value % accel_hash->max_num_entries; entry = accel_hash->hash_table[index]; Index: php5-5.5.9+dfsg/ext/opcache/zend_accelerator_module.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/opcache/zend_accelerator_module.c 2017-08-04 10:14:19.362876105 -0400 +++ php5-5.5.9+dfsg/ext/opcache/zend_accelerator_module.c 2017-08-04 10:14:19.358876105 -0400 @@ -245,6 +245,8 @@ ZEND_INI_BEGIN() STD_PHP_INI_BOOLEAN("opcache.enable" , "1", PHP_INI_ALL, OnEnable, enabled , zend_accel_globals, accel_globals) STD_PHP_INI_BOOLEAN("opcache.use_cwd" , "1", PHP_INI_SYSTEM, OnUpdateBool, accel_directives.use_cwd , zend_accel_globals, accel_globals) STD_PHP_INI_BOOLEAN("opcache.validate_timestamps", "1", PHP_INI_ALL , OnUpdateBool, accel_directives.validate_timestamps, zend_accel_globals, accel_globals) + STD_PHP_INI_BOOLEAN("opcache.validate_permission", "0", PHP_INI_SYSTEM, OnUpdateBool, accel_directives.validate_permission, zend_accel_globals, accel_globals) + STD_PHP_INI_BOOLEAN("opcache.validate_root" , "0", PHP_INI_SYSTEM, OnUpdateBool, accel_directives.validate_root , zend_accel_globals, accel_globals) STD_PHP_INI_BOOLEAN("opcache.inherited_hack" , "1", PHP_INI_SYSTEM, OnUpdateBool, accel_directives.inherited_hack , zend_accel_globals, accel_globals) STD_PHP_INI_BOOLEAN("opcache.dups_fix" , "0", PHP_INI_ALL , OnUpdateBool, accel_directives.ignore_dups , zend_accel_globals, accel_globals) STD_PHP_INI_BOOLEAN("opcache.revalidate_path" , "0", PHP_INI_ALL , OnUpdateBool, accel_directives.revalidate_path , zend_accel_globals, accel_globals) @@ -629,6 +631,8 @@ static ZEND_FUNCTION(opcache_get_configu add_assoc_bool(directives, "opcache.enable_cli", ZCG(accel_directives).enable_cli); add_assoc_bool(directives, "opcache.use_cwd", ZCG(accel_directives).use_cwd); add_assoc_bool(directives, "opcache.validate_timestamps", ZCG(accel_directives).validate_timestamps); + add_assoc_bool(directives, "opcache.validate_permission", ZCG(accel_directives).validate_permission); + add_assoc_bool(directives, "opcache.validate_root", ZCG(accel_directives).validate_root); add_assoc_bool(directives, "opcache.inherited_hack", ZCG(accel_directives).inherited_hack); add_assoc_bool(directives, "opcache.dups_fix", ZCG(accel_directives).ignore_dups); add_assoc_bool(directives, "opcache.revalidate_path", ZCG(accel_directives).revalidate_path); debian/patches/CVE-2016-7414.patch0000664000000000000000000000524212773246633013260 0ustar From 223266e4e46b9188353db93771369078c2e94353 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 4 Sep 2016 22:07:35 -0700 Subject: [PATCH] Fix bug #72928 - Out of bound when verify signature of zip phar in phar_parse_zipfile --- ext/phar/tests/bug72928.phpt | 18 ++++++++++++++++++ ext/phar/tests/bug72928.zip | Bin 0 -> 140 bytes ext/phar/util.c | 28 ++++++++++++++++++++++++++++ ext/phar/zip.c | 2 +- 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 ext/phar/tests/bug72928.phpt create mode 100644 ext/phar/tests/bug72928.zip Index: php5-5.5.9+dfsg/ext/phar/util.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/util.c 2016-09-29 13:21:28.540009508 -0400 +++ php5-5.5.9+dfsg/ext/phar/util.c 2016-09-29 13:21:28.536009463 -0400 @@ -1657,6 +1657,13 @@ unsigned char digest[64]; PHP_SHA512_CTX context; + if (sig_len < sizeof(digest)) { + if (error) { + spprintf(error, 0, "broken signature"); + } + return FAILURE; + } + PHP_SHA512Init(&context); read_len = end_of_phar; @@ -1690,6 +1697,13 @@ unsigned char digest[32]; PHP_SHA256_CTX context; + if (sig_len < sizeof(digest)) { + if (error) { + spprintf(error, 0, "broken signature"); + } + return FAILURE; + } + PHP_SHA256Init(&context); read_len = end_of_phar; @@ -1731,6 +1745,13 @@ unsigned char digest[20]; PHP_SHA1_CTX context; + if (sig_len < sizeof(digest)) { + if (error) { + spprintf(error, 0, "broken signature"); + } + return FAILURE; + } + PHP_SHA1Init(&context); read_len = end_of_phar; @@ -1764,6 +1785,13 @@ unsigned char digest[16]; PHP_MD5_CTX context; + if (sig_len < sizeof(digest)) { + if (error) { + spprintf(error, 0, "broken signature"); + } + return FAILURE; + } + PHP_MD5Init(&context); read_len = end_of_phar; Index: php5-5.5.9+dfsg/ext/phar/zip.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/zip.c 2016-09-29 13:21:28.540009508 -0400 +++ php5-5.5.9+dfsg/ext/phar/zip.c 2016-09-29 13:21:28.536009463 -0400 @@ -430,7 +430,7 @@ php_stream_seek(fp, sizeof(phar_zip_file_header) + entry.header_offset + entry.filename_len + PHAR_GET_16(zipentry.extra_len), SEEK_SET); sig = (char *) emalloc(entry.uncompressed_filesize); read = php_stream_read(fp, sig, entry.uncompressed_filesize); - if (read != entry.uncompressed_filesize) { + if (read != entry.uncompressed_filesize || read <= 8) { php_stream_close(sigfile); efree(sig); PHAR_ZIP_FAIL("signature cannot be read"); debian/patches/CVE-2014-9912.patch0000664000000000000000000000377713046610711013260 0ustar Backport of: From e644aad3f9138bbb2e77520f033ba902f236b8b5 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 8 Jun 2014 13:44:40 -0700 Subject: [PATCH] Fix bug #67397 (Buffer overflow in locale_get_display_name->uloc_getDisplayName (libicu 4.8.1)) --- ext/intl/locale/locale_methods.c | 10 +++++++++- ext/intl/tests/bug67397.phpt | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 ext/intl/tests/bug67397.phpt Index: php5-5.5.9+dfsg/ext/intl/locale/locale_methods.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/intl/locale/locale_methods.c 2017-02-08 07:37:54.290180840 -0500 +++ php5-5.5.9+dfsg/ext/intl/locale/locale_methods.c 2017-02-08 07:38:51.746926381 -0500 @@ -499,6 +499,14 @@ RETURN_FALSE; } + if(loc_name_len > ULOC_FULLNAME_CAPACITY) { + /* See bug 67397: overlong locale names cause trouble in uloc_getDisplayName */ + spprintf(&msg , 0, "locale_get_display_%s : name too long", tag_name ); + intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, msg , 1 TSRMLS_CC ); + efree(msg); + RETURN_FALSE; + } + if(loc_name_len == 0) { loc_name = intl_locale_get_default(TSRMLS_C); } Index: php5-5.5.9+dfsg/ext/intl/tests/bug67397.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/intl/tests/bug67397.phpt 2017-02-08 07:37:58.090230163 -0500 @@ -0,0 +1,21 @@ +--TEST-- +Bug #67397 (Buffer overflow in locale_get_display_name->uloc_getDisplayName (libicu 4.8.1)) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +false +'locale_get_display_name : name too long: U_ILLEGAL_ARGUMENT_ERROR' debian/patches/CVE-2015-8873.patch0000664000000000000000000001207212746444333013265 0ustar Description: fix denial of service via recursive method calls Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=4d2278143a08b7522de9471d0f014d7357c28fea Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=f1acac154ac7684bc908fc2ad8962372c9d4e312 Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=0a21b5d97039945a9e5dc683f2f5e8b379f07ada Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=da5321013c4dbac0faac12f78b28f662a91b4bc1 Bug: https://bugs.php.net/bug.php?id=69793 Index: php5-5.5.9+dfsg/Zend/zend_exceptions.c =================================================================== --- php5-5.5.9+dfsg.orig/Zend/zend_exceptions.c 2016-07-28 14:01:35.470938171 -0400 +++ php5-5.5.9+dfsg/Zend/zend_exceptions.c 2016-07-28 14:01:35.466938120 -0400 @@ -218,6 +218,33 @@ } /* }}} */ +/* {{{ proto Exception::__wakeup() + Exception unserialize checks */ +#define CHECK_EXC_TYPE(name, type) \ + value = zend_read_property(default_exception_ce, object, name, sizeof(name)-1, 0 TSRMLS_CC); \ + if(value && Z_TYPE_P(value) != type) { \ + zval *tmp; \ + MAKE_STD_ZVAL(tmp); \ + ZVAL_STRINGL(tmp, name, sizeof(name)-1, 1); \ + Z_OBJ_HANDLER_P(object, unset_property)(object, tmp, 0 TSRMLS_CC); \ + zval_ptr_dtor(&tmp); \ + } + +ZEND_METHOD(exception, __wakeup) +{ + zval *value; + zval *object = getThis(); + HashTable *intern_ht = zend_std_get_properties(getThis() TSRMLS_CC); + CHECK_EXC_TYPE("message", IS_STRING); + CHECK_EXC_TYPE("string", IS_STRING); + CHECK_EXC_TYPE("code", IS_LONG); + CHECK_EXC_TYPE("file", IS_STRING); + CHECK_EXC_TYPE("line", IS_LONG); + CHECK_EXC_TYPE("trace", IS_ARRAY); + CHECK_EXC_TYPE("previous", IS_OBJECT); +} +/* }}} */ + /* {{{ proto ErrorException::__construct(string message, int code, int severity [, string filename [, int lineno [, Exception previous]]]) ErrorException constructor */ ZEND_METHOD(error_exception, __construct) @@ -671,6 +698,7 @@ const static zend_function_entry default_exception_functions[] = { ZEND_ME(exception, __clone, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL) ZEND_ME(exception, __construct, arginfo_exception___construct, ZEND_ACC_PUBLIC) + ZEND_ME(exception, __wakeup, NULL, ZEND_ACC_PUBLIC) ZEND_ME(exception, getMessage, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) ZEND_ME(exception, getCode, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) ZEND_ME(exception, getFile, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69152.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/serialize/bug69152.phpt 2016-07-28 14:01:35.470938171 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69152.phpt 2016-07-28 14:01:35.466938120 -0400 @@ -9,6 +9,7 @@ ?> --EXPECTF-- +Notice: Undefined property: Exception::$previous in %s on line %d exception 'Exception' in %s:%d Stack trace: #0 {main} Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69793.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69793.phpt 2016-07-28 14:01:35.466938120 -0400 @@ -0,0 +1,17 @@ +--TEST-- +Bug #69793: Remotely triggerable stack exhaustion via recursive method calls +--FILE-- + +--EXPECTF-- +Notice: Undefined property: Exception::$message in %s/bug69793.php on line %d + +Notice: Undefined property: Exception::$file in %s/bug69793.php on line %d + +Notice: Undefined property: Exception::$previous in %s/bug69793.php on line %d +string(53) "exception 'Exception' in :1337 +Stack trace: +#0 {main}" Index: php5-5.5.9+dfsg/sapi/cli/tests/005.phpt =================================================================== --- php5-5.5.9+dfsg.orig/sapi/cli/tests/005.phpt 2014-02-05 05:00:36.000000000 -0500 +++ php5-5.5.9+dfsg/sapi/cli/tests/005.phpt 2016-07-28 14:02:07.087342901 -0400 @@ -4,7 +4,7 @@ --FILE-- @@ -18,7 +18,7 @@ echo "Done\n"; ?> ---EXPECTF-- +--EXPECTF-- string(40) "Exception: Class unknown does not exist " string(183) "Class [ class stdClass ] { @@ -40,7 +40,7 @@ } " -string(1355) "Class [ class Exception ] { +string(1418) "Class [ class Exception ] { - Constants [0] { } @@ -61,7 +61,7 @@ Property [ private $previous ] } - - Methods [10] { + - Methods [11] { Method [ final private method __clone ] { } @@ -74,6 +74,9 @@ } } + Method [ public method __wakeup ] { + } + Method [ final public method getMessage ] { } debian/patches/CVE-2015-6831-3.patch0000664000000000000000000000337412602473326013415 0ustar From 863bf294feb9ad425eadb94f288bc7f18673089d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 1 Aug 2015 21:51:08 -0700 Subject: [PATCH] Fixed bug #70169 (Use After Free Vulnerability in unserialize() with SplDoublyLinkedList) --- ext/spl/spl_dllist.c | 25 +++++++++++++------------ ext/spl/tests/bug70169.phpt | 30 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 ext/spl/tests/bug70169.phpt Index: php5-5.5.9+dfsg/ext/spl/spl_dllist.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_dllist.c 2015-09-29 07:32:36.614661274 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_dllist.c 2015-09-29 07:32:36.610661229 -0400 @@ -1208,6 +1208,7 @@ zval_ptr_dtor(&flags); goto error; } + var_push_dtor(&var_hash, &flags); intern->flags = Z_LVAL_P(flags); zval_ptr_dtor(&flags); Index: php5-5.5.9+dfsg/ext/spl/tests/bug70169.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/spl/tests/bug70169.phpt 2015-09-29 07:32:36.614661274 -0400 @@ -0,0 +1,30 @@ +--TEST-- +SPL: Bug #70169 Use After Free Vulnerability in unserialize() with SplDoublyLinkedList +--FILE-- + +===DONE=== +--EXPECTF-- +array(2) { + [0]=> + object(SplDoublyLinkedList)#%d (2) { + ["flags":"SplDoublyLinkedList":private]=> + int(1) + ["dllist":"SplDoublyLinkedList":private]=> + array(0) { + } + } + [1]=> + int(1) +} +===DONE=== debian/patches/CVE-2016-4540.patch0000664000000000000000000000617212717366603013256 0ustar From fd9689745c44341b1bd6af4756f324be8abba2fb Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 24 Apr 2016 12:49:01 -0700 Subject: [PATCH] Fix bug #72061 - Out-of-bounds reads in zif_grapheme_stripos with negative offset --- ext/intl/grapheme/grapheme_string.c | 12 +++++++----- ext/intl/tests/bug72061.phpt | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 ext/intl/tests/bug72061.phpt diff --git a/ext/intl/grapheme/grapheme_string.c b/ext/intl/grapheme/grapheme_string.c index 8a094e0..3ba9b51 100644 --- a/ext/intl/grapheme/grapheme_string.c +++ b/ext/intl/grapheme/grapheme_string.c @@ -112,7 +112,7 @@ PHP_FUNCTION(grapheme_strpos) int haystack_len, needle_len; unsigned char *found; long loffset = 0; - int32_t offset = 0; + int32_t offset = 0, noffset = 0; int ret_pos; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|l", (char **)&haystack, &haystack_len, (char **)&needle, &needle_len, &loffset) == FAILURE) { @@ -132,6 +132,7 @@ PHP_FUNCTION(grapheme_strpos) /* we checked that it will fit: */ offset = (int32_t) loffset; + noffset = offset >= 0 ? offset : haystack_len + offset; /* the offset is 'grapheme count offset' so it still might be invalid - we'll check it later */ @@ -146,7 +147,7 @@ PHP_FUNCTION(grapheme_strpos) /* quick check to see if the string might be there * I realize that 'offset' is 'grapheme count offset' but will work in spite of that */ - found = (unsigned char *)php_memnstr((char *)haystack + offset, (char *)needle, needle_len, (char *)haystack + haystack_len); + found = (unsigned char *)php_memnstr((char *)haystack + noffset, (char *)needle, needle_len, (char *)haystack + haystack_len); /* if it isn't there the we are done */ if (!found) { @@ -214,12 +215,13 @@ PHP_FUNCTION(grapheme_stripos) is_ascii = ( grapheme_ascii_check(haystack, haystack_len) >= 0 ); if ( is_ascii ) { + int32_t noffset = offset >= 0 ? offset : haystack_len + offset; needle_dup = (unsigned char *)estrndup((char *)needle, needle_len); php_strtolower((char *)needle_dup, needle_len); haystack_dup = (unsigned char *)estrndup((char *)haystack, haystack_len); php_strtolower((char *)haystack_dup, haystack_len); - found = (unsigned char*) php_memnstr((char *)haystack_dup + offset, (char *)needle_dup, needle_len, (char *)haystack_dup + haystack_len); + found = (unsigned char*) php_memnstr((char *)haystack_dup + noffset, (char *)needle_dup, needle_len, (char *)haystack_dup + haystack_len); efree(haystack_dup); efree(needle_dup); diff --git a/ext/intl/tests/bug72061.phpt b/ext/intl/tests/bug72061.phpt new file mode 100644 index 0000000..782c32c --- /dev/null +++ b/ext/intl/tests/bug72061.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #72061: Out-of-bounds reads in zif_grapheme_stripos with negative offset +--SKIPIF-- + +--FILE-- + +DONE +--EXPECT-- +int(65336) +int(65336) +DONE \ No newline at end of file -- 2.1.4 debian/patches/CVE-2015-6833-1.patch0000664000000000000000000001072012602473350013403 0ustar From dda81f0505217a95db065e6bf9cc2d81eb902417 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Aug 2015 14:00:29 -0700 Subject: [PATCH] Fix bug #70019 - limit extracted files to given directory --- ext/phar/phar_object.c | 50 +++++++++++++++++++++++++++++++++++++++---- ext/phar/tests/bug70019.phpt | 22 +++++++++++++++++++ ext/phar/tests/bug70019.zip | Bin 0 -> 184 bytes 3 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 ext/phar/tests/bug70019.phpt create mode 100644 ext/phar/tests/bug70019.zip Index: php5-5.5.9+dfsg/ext/phar/phar_object.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar_object.c 2015-09-29 07:32:53.378854890 -0400 +++ php5-5.5.9+dfsg/ext/phar/phar_object.c 2015-09-29 07:32:53.378854890 -0400 @@ -4115,6 +4115,9 @@ char *fullpath; const char *slash; mode_t mode; + cwd_state new_state; + char *filename; + size_t filename_len; if (entry->is_mounted) { /* silently ignore mounted entries */ @@ -4124,8 +4127,39 @@ if (entry->filename_len >= sizeof(".phar")-1 && !memcmp(entry->filename, ".phar", sizeof(".phar")-1)) { return SUCCESS; } + /* strip .. from path and restrict it to be under dest directory */ + new_state.cwd = (char*)malloc(2); + new_state.cwd[0] = DEFAULT_SLASH; + new_state.cwd[1] = '\0'; + new_state.cwd_length = 1; + if (virtual_file_ex(&new_state, entry->filename, NULL, CWD_EXPAND TSRMLS_CC) != 0 || + new_state.cwd_length <= 1) { + if (EINVAL == errno && entry->filename_len > 50) { + char *tmp = estrndup(entry->filename, 50); + spprintf(error, 4096, "Cannot extract \"%s...\" to \"%s...\", extracted filename is too long for filesystem", tmp, dest); + efree(tmp); + } else { + spprintf(error, 4096, "Cannot extract \"%s\", internal error", entry->filename); + } + free(new_state.cwd); + return FAILURE; + } + filename = new_state.cwd + 1; + filename_len = new_state.cwd_length - 1; +#ifdef PHP_WIN32 + /* unixify the path back, otherwise non zip formats might be broken */ + { + int cnt = filename_len; + + do { + if ('\\' == filename[cnt]) { + filename[cnt] = '/'; + } + } while (cnt-- >= 0); + } +#endif - len = spprintf(&fullpath, 0, "%s/%s", dest, entry->filename); + len = spprintf(&fullpath, 0, "%s/%s", dest, filename); if (len >= MAXPATHLEN) { char *tmp; @@ -4139,18 +4173,21 @@ spprintf(error, 4096, "Cannot extract \"%s\" to \"%s...\", extracted filename is too long for filesystem", entry->filename, fullpath); } efree(fullpath); + free(new_state.cwd); return FAILURE; } if (!len) { spprintf(error, 4096, "Cannot extract \"%s\", internal error", entry->filename); efree(fullpath); + free(new_state.cwd); return FAILURE; } if (PHAR_OPENBASEDIR_CHECKPATH(fullpath)) { spprintf(error, 4096, "Cannot extract \"%s\" to \"%s\", openbasedir/safe mode restrictions in effect", entry->filename, fullpath); efree(fullpath); + free(new_state.cwd); return FAILURE; } @@ -4158,14 +4195,15 @@ if (!overwrite && SUCCESS == php_stream_stat_path(fullpath, &ssb)) { spprintf(error, 4096, "Cannot extract \"%s\" to \"%s\", path already exists", entry->filename, fullpath); efree(fullpath); + free(new_state.cwd); return FAILURE; } /* perform dirname */ - slash = zend_memrchr(entry->filename, '/', entry->filename_len); + slash = zend_memrchr(filename, '/', filename_len); if (slash) { - fullpath[dest_len + (slash - entry->filename) + 1] = '\0'; + fullpath[dest_len + (slash - filename) + 1] = '\0'; } else { fullpath[dest_len] = '\0'; } @@ -4175,23 +4213,27 @@ if (!php_stream_mkdir(fullpath, entry->flags & PHAR_ENT_PERM_MASK, PHP_STREAM_MKDIR_RECURSIVE, NULL)) { spprintf(error, 4096, "Cannot extract \"%s\", could not create directory \"%s\"", entry->filename, fullpath); efree(fullpath); + free(new_state.cwd); return FAILURE; } } else { if (!php_stream_mkdir(fullpath, 0777, PHP_STREAM_MKDIR_RECURSIVE, NULL)) { spprintf(error, 4096, "Cannot extract \"%s\", could not create directory \"%s\"", entry->filename, fullpath); efree(fullpath); + free(new_state.cwd); return FAILURE; } } } if (slash) { - fullpath[dest_len + (slash - entry->filename) + 1] = '/'; + fullpath[dest_len + (slash - filename) + 1] = '/'; } else { fullpath[dest_len] = '/'; } + filename = NULL; + free(new_state.cwd); /* it is a standalone directory, job done */ if (entry->is_dir) { efree(fullpath); debian/patches/CVE-2019-9637.patch0000664000000000000000000000560213444735551013272 0ustar From e3133e4db70476fb7adfdedb738483e2255ce0e1 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 2 Mar 2019 23:42:53 -0800 Subject: [PATCH] Fix bug #77630 - safer rename() procedure In order to rename safer, we do the following: - set umask to 077 (unfortunately, not TS, so excluding ZTS) - chown() first, to set proper group before allowing group access - chmod() after, even if chown() fails diff --git a/main/streams/plain_wrapper.c b/main/streams/plain_wrapper.c index 9376d474..6c36c35c 100644 --- a/main/streams/plain_wrapper.c +++ b/main/streams/plain_wrapper.c @@ -1109,34 +1109,51 @@ static int php_plain_files_rename(php_stream_wrapper *wrapper, char *url_from, c # ifdef EXDEV if (errno == EXDEV) { struct stat sb; +# if !defined(ZTS) && !defined(TSRM_WIN32) && !defined(NETWARE) + /* not sure what to do in ZTS case, umask is not thread-safe */ + int oldmask = umask(077); +# endif + int success = 0; if (php_copy_file(url_from, url_to TSRMLS_CC) == SUCCESS) { if (VCWD_STAT(url_from, &sb) == 0) { + success = 1; # if !defined(TSRM_WIN32) && !defined(NETWARE) - if (VCWD_CHMOD(url_to, sb.st_mode)) { - if (errno == EPERM) { - php_error_docref2(NULL TSRMLS_CC, url_from, url_to, E_WARNING, "%s", strerror(errno)); - VCWD_UNLINK(url_from); - return 1; - } + /* + * Try to set user and permission info on the target. + * If we're not root, then some of these may fail. + * We try chown first, to set proper group info, relying + * on the system environment to have proper umask to not allow + * access to the file in the meantime. + */ + if (VCWD_CHOWN(url_to, sb.st_uid, sb.st_gid)) { php_error_docref2(NULL TSRMLS_CC, url_from, url_to, E_WARNING, "%s", strerror(errno)); - return 0; + if (errno != EPERM) { + success = 0; + } } - if (VCWD_CHOWN(url_to, sb.st_uid, sb.st_gid)) { - if (errno == EPERM) { + + if (success) { + if (VCWD_CHMOD(url_to, sb.st_mode)) { php_error_docref2(NULL TSRMLS_CC, url_from, url_to, E_WARNING, "%s", strerror(errno)); - VCWD_UNLINK(url_from); - return 1; + if (errno != EPERM) { + success = 0; + } } - php_error_docref2(NULL TSRMLS_CC, url_from, url_to, E_WARNING, "%s", strerror(errno)); - return 0; } # endif - VCWD_UNLINK(url_from); - return 1; + if (success) { + VCWD_UNLINK(url_from); + } + } else { + php_error_docref2(NULL, url_from, url_to, E_WARNING, "%s", strerror(errno)); } + } else { + php_error_docref2(NULL, url_from, url_to, E_WARNING, "%s", strerror(errno)); } - php_error_docref2(NULL TSRMLS_CC, url_from, url_to, E_WARNING, "%s", strerror(errno)); - return 0; +# if !defined(ZTS) && !defined(TSRM_WIN32) && !defined(NETWARE) + umask(oldmask); +# endif + return success; } # endif #endif debian/patches/CVE-2016-7131.patch0000664000000000000000000000674012773246355013261 0ustar From 5a34bd6d1e6b4d31221c50bcf477c9508553a646 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 10 Aug 2016 23:43:56 -0700 Subject: [PATCH] Fix for bug #72790 and bug #72799 --- ext/wddx/tests/bug72790.phpt | 35 +++++++++++++++++++++++++++++++++++ ext/wddx/tests/bug72799.phpt | 28 ++++++++++++++++++++++++++++ ext/wddx/wddx.c | 14 +++++++++----- 3 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 ext/wddx/tests/bug72790.phpt create mode 100644 ext/wddx/tests/bug72799.phpt Index: php5-5.5.9+dfsg/ext/wddx/tests/bug72790.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug72790.phpt 2016-09-29 13:18:32.018030440 -0400 @@ -0,0 +1,35 @@ +--TEST-- +Bug 72790: wddx_deserialize null dereference with invalid xml +--SKIPIF-- + +--FILE-- + + + + |array> + + + + + + + + + + + + +XML; + +$array = wddx_deserialize($xml); +var_dump($array); +?> +--EXPECT-- +NULL \ No newline at end of file Index: php5-5.5.9+dfsg/ext/wddx/tests/bug72799.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug72799.phpt 2016-09-29 13:18:32.018030440 -0400 @@ -0,0 +1,28 @@ +--TEST-- +Bug #72799: wddx_deserialize null dereference in php_wddx_pop_element +--SKIPIF-- + +--FILE-- + + + + + + 1998-06-12T04:32:12+00 + + + +XML; + +$array = wddx_deserialize($xml); +var_dump($array); +?> +--EXPECT-- +NULL \ No newline at end of file Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2016-09-29 13:18:32.022030485 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2016-09-29 13:18:32.018030440 -0400 @@ -936,10 +936,10 @@ if (!ent1->data) { if (stack->top > 1) { stack->top--; + efree(ent1); } else { stack->done = 1; } - efree(ent1); return; } @@ -978,7 +978,7 @@ wddx_stack_top(stack, (void**)&ent2); /* if non-existent field */ - if (ent2->type == ST_FIELD && ent2->data == NULL) { + if (ent2->data == NULL) { zval_ptr_dtor(&ent1->data); efree(ent1); return; @@ -1168,9 +1168,13 @@ if (stack.top == 1) { wddx_stack_top(&stack, (void**)&ent); - *return_value = *(ent->data); - zval_copy_ctor(return_value); - retval = SUCCESS; + if(ent->data == NULL) { + retval = FAILURE; + } else { + *return_value = *(ent->data); + zval_copy_ctor(return_value); + retval = SUCCESS; + } } else { retval = FAILURE; } debian/patches/CVE-2018-10546-2.patch0000664000000000000000000000173613275032424013472 0ustar From ee76a5ae5ad57bb9d0bc183bcbf9c4652331c2e3 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 23 Apr 2018 16:48:27 -0700 Subject: [PATCH] Fix tsrm_ls --- ext/iconv/iconv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: php5-5.5.9+dfsg/ext/iconv/iconv.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/iconv/iconv.c 2018-05-10 08:03:31.003374987 -0400 +++ php5-5.5.9+dfsg/ext/iconv/iconv.c 2018-05-10 08:03:31.003374987 -0400 @@ -2578,7 +2578,7 @@ static int php_iconv_stream_filter_appen break; } } else { - php_error_docref(NULL, E_WARNING, "iconv stream filter (\"%s\"=>\"%s\"): invalid multibyte sequence", self->from_charset, self->to_charset); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "iconv stream filter (\"%s\"=>\"%s\"): invalid multibyte sequence", self->from_charset, self->to_charset); goto out_failure; } break; debian/patches/CVE-2016-7124-2.patch0000664000000000000000000000574212773246267013425 0ustar Backport of: From 639f7fde6a51c23d7c670358fbcb777ac1a143f3 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 7 Aug 2016 15:33:29 -0700 Subject: [PATCH] Improve fix for #72663 --- ext/standard/tests/strings/bug72663_3.phpt | 18 ++++++++ ext/standard/var_unserializer.c | 68 ++++++++++++++++-------------- ext/standard/var_unserializer.re | 8 +++- 3 files changed, 62 insertions(+), 32 deletions(-) create mode 100644 ext/standard/tests/strings/bug72663_3.phpt Index: php5-5.5.9+dfsg/ext/standard/tests/strings/bug72663_3.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/strings/bug72663_3.phpt 2016-09-29 13:16:27.488634285 -0400 @@ -0,0 +1,18 @@ +--TEST-- +Bug #72663: Create an Unexpected Object and Don't Invoke __wakeup() in Deserialization +--FILE-- +ryat = str_repeat('A', 0x112); + } +} + +$poc = 'O:8:"stdClass":1:{i:0;O:3:"obj":1:{s:4:"ryat";R:1;'; +unserialize($poc); +?> +DONE +--EXPECTF-- +Notice: unserialize(): Error at offset 51 of 50 bytes in %sbug72663_3.php on line %d +DONE \ No newline at end of file Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2016-09-29 13:16:27.492634330 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2016-09-29 13:17:23.209258994 -0400 @@ -415,11 +415,17 @@ if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements, 1)) { /* We've got partially constructed object on our hands here. Wipe it */ - zend_hash_clean(Z_OBJPROP_PP(rval)); + if(Z_TYPE_PP(rval) == IS_OBJECT) { + zend_hash_clean(Z_OBJPROP_PP(rval)); + } ZVAL_NULL(*rval); return 0; } + if (Z_TYPE_PP(rval) != IS_OBJECT) { + return 0; + } + if (Z_OBJCE_PP(rval) != PHP_IC_ENTRY && zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup"))) { INIT_PZVAL(&fname); Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2016-09-29 13:16:27.492634330 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2016-09-29 13:16:27.492634330 -0400 @@ -421,11 +421,17 @@ if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements, 1)) { /* We've got partially constructed object on our hands here. Wipe it. */ - zend_hash_clean(Z_OBJPROP_PP(rval)); + if(Z_TYPE_PP(rval) == IS_OBJECT) { + zend_hash_clean(Z_OBJPROP_PP(rval)); + } ZVAL_NULL(*rval); return 0; } + if (Z_TYPE_PP(rval) != IS_OBJECT) { + return 0; + } + if (Z_OBJCE_PP(rval) != PHP_IC_ENTRY && zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup"))) { INIT_PZVAL(&fname); debian/patches/001-libtool_fixes.patch0000664000000000000000000000103612300436054014775 0ustar --- php5.orig/TSRM/configure.in +++ php5/TSRM/configure.in @@ -17,9 +17,6 @@ TSRM_BASIC_CHECKS TSRM_THREADS_CHECKS AM_PROG_LIBTOOL -if test "$enable_debug" != "yes"; then - AM_SET_LIBTOOL_VARIABLE([--silent]) -fi dnl TSRM_PTHREAD --- php5.orig/configure.in +++ php5/configure.in @@ -1399,9 +1399,6 @@ AC_PROVIDE_IFELSE([PHP_REQUIRE_CXX], [], ]) AC_PROG_LIBTOOL -if test "$enable_debug" != "yes"; then - PHP_SET_LIBTOOL_VARIABLE([--silent]) -fi dnl libtool 1.4.3 needs this. PHP_SET_LIBTOOL_VARIABLE([--preserve-dup-deps]) debian/patches/CVE-2016-7479-pre.patch0000664000000000000000000000536513047061054014050 0ustar From 13f1c276ab72cf1a8a400fd013b9289d0018a340 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 10 Dec 2014 11:43:33 +0100 Subject: [PATCH] Fixed bug #68545 NULL pointer dereference in unserialize.c --- ext/standard/var_unserializer.c | 70 ++++++++++++++++++---------------- ext/standard/var_unserializer.re | 8 +++- standard/tests/serialize/bug68545.phpt | 11 ++++++ 3 files changed, 56 insertions(+), 33 deletions(-) create mode 100644 standard/tests/serialize/bug68545.phpt Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2017-02-09 07:35:54.339483620 -0500 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2017-02-09 07:35:54.335483571 -0500 @@ -59,7 +59,13 @@ PHPAPI void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval) { - var_entries *var_hash = (*var_hashx)->last_dtor; + var_entries *var_hash; + + if (!var_hashx || !*var_hashx) { + return; + } + + var_hash = (*var_hashx)->last_dtor; #if VAR_ENTRIES_DBG fprintf(stderr, "var_push_dtor(%p, %ld): %d\n", *rval, var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval)); #endif Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2017-02-09 07:35:54.339483620 -0500 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2017-02-09 07:35:54.335483571 -0500 @@ -58,7 +58,13 @@ PHPAPI void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval) { - var_entries *var_hash = (*var_hashx)->last_dtor; + var_entries *var_hash; + + if (!var_hashx || !*var_hashx) { + return; + } + + var_hash = (*var_hashx)->last_dtor; #if VAR_ENTRIES_DBG fprintf(stderr, "var_push_dtor(%p, %ld): %d\n", *rval, var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval)); #endif Index: php5-5.5.9+dfsg/standard/tests/serialize/bug68545.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/standard/tests/serialize/bug68545.phpt 2017-02-09 07:35:54.335483571 -0500 @@ -0,0 +1,11 @@ +--TEST-- +Bug #68545 NULL pointer dereference in unserialize.c:var_push_dtor +--FILE-- + +===DONE=== +--EXPECTF-- +Notice: unserialize(): Error at offset %d of %d bytes in %sbug68545.php on line %d +bool(false) +===DONE=== debian/patches/CVE-2016-6288.patch0000664000000000000000000000134612746377643013277 0ustar From 629e4da7cc8b174acdeab84969cbfc606a019b31 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 28 Sep 2015 11:31:14 -0700 Subject: [PATCH] Fix bug #70480 (php_url_parse_ex() buffer overflow read) --- ext/standard/url.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: php5-5.5.9+dfsg/ext/standard/url.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/url.c 2016-07-28 08:50:40.803887722 -0400 +++ php5-5.5.9+dfsg/ext/standard/url.c 2016-07-28 08:50:40.799887675 -0400 @@ -321,7 +321,7 @@ nohost: if ((p = memchr(s, '?', (ue - s)))) { - pp = strchr(s, '#'); + pp = memchr(s, '#', (ue - s)); if (pp && pp < p) { if (pp - s) { debian/patches/php-5.2.4-norpath.patch0000664000000000000000000000123512300436054014542 0ustar --- php5.orig/acinclude.m4 +++ php5/acinclude.m4 @@ -432,6 +432,7 @@ AC_DEFUN([PHP_EVAL_INCLINE],[ dnl internal, don't use AC_DEFUN([_PHP_ADD_LIBPATH_GLOBAL],[ PHP_RUN_ONCE(LIBPATH, $1, [ + test "x$PHP_RPATH" != "xno" && test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$1" LDFLAGS="$LDFLAGS -L$1" PHP_RPATHS="$PHP_RPATHS $1" @@ -451,6 +452,7 @@ AC_DEFUN([PHP_ADD_LIBPATH],[ ],[ if test "$ext_shared" = "yes"; then $2="-L$ai_p [$]$2" + test "x$PHP_RPATH" != "xno" && \ test -n "$ld_runpath_switch" && $2="$ld_runpath_switch$ai_p [$]$2" else _PHP_ADD_LIBPATH_GLOBAL([$ai_p]) debian/patches/CVE-2014-4721.patch0000664000000000000000000000540512356504012013236 0ustar From fb0128af2a95ec0d1a0360be49776c5b056d1f33 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 23 Jun 2014 00:19:37 -0700 Subject: [PATCH] Fix bug #67498 - phpinfo() Type Confusion Information Leak Vulnerability --- NEWS | 2 ++ ext/standard/info.c | 8 ++++---- ext/standard/tests/general_functions/bug67498.phpt | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 ext/standard/tests/general_functions/bug67498.phpt Index: php5-5.5.9+dfsg/ext/standard/info.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/info.c 2014-07-07 07:44:05.298678677 -0400 +++ php5-5.5.9+dfsg/ext/standard/info.c 2014-07-07 07:44:05.290678677 -0400 @@ -866,16 +866,16 @@ php_info_print_table_start(); php_info_print_table_header(2, "Variable", "Value"); - if (zend_hash_find(&EG(symbol_table), "PHP_SELF", sizeof("PHP_SELF"), (void **) &data) != FAILURE) { + if (zend_hash_find(&EG(symbol_table), "PHP_SELF", sizeof("PHP_SELF"), (void **) &data) != FAILURE && Z_TYPE_PP(data) == IS_STRING) { php_info_print_table_row(2, "PHP_SELF", Z_STRVAL_PP(data)); } - if (zend_hash_find(&EG(symbol_table), "PHP_AUTH_TYPE", sizeof("PHP_AUTH_TYPE"), (void **) &data) != FAILURE) { + if (zend_hash_find(&EG(symbol_table), "PHP_AUTH_TYPE", sizeof("PHP_AUTH_TYPE"), (void **) &data) != FAILURE && Z_TYPE_PP(data) == IS_STRING) { php_info_print_table_row(2, "PHP_AUTH_TYPE", Z_STRVAL_PP(data)); } - if (zend_hash_find(&EG(symbol_table), "PHP_AUTH_USER", sizeof("PHP_AUTH_USER"), (void **) &data) != FAILURE) { + if (zend_hash_find(&EG(symbol_table), "PHP_AUTH_USER", sizeof("PHP_AUTH_USER"), (void **) &data) != FAILURE && Z_TYPE_PP(data) == IS_STRING) { php_info_print_table_row(2, "PHP_AUTH_USER", Z_STRVAL_PP(data)); } - if (zend_hash_find(&EG(symbol_table), "PHP_AUTH_PW", sizeof("PHP_AUTH_PW"), (void **) &data) != FAILURE) { + if (zend_hash_find(&EG(symbol_table), "PHP_AUTH_PW", sizeof("PHP_AUTH_PW"), (void **) &data) != FAILURE && Z_TYPE_PP(data) == IS_STRING) { php_info_print_table_row(2, "PHP_AUTH_PW", Z_STRVAL_PP(data)); } php_print_gpcse_array(ZEND_STRL("_REQUEST") TSRMLS_CC); Index: php5-5.5.9+dfsg/ext/standard/tests/general_functions/bug67498.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/general_functions/bug67498.phpt 2014-07-07 07:44:05.290678677 -0400 @@ -0,0 +1,15 @@ +--TEST-- +phpinfo() Type Confusion Information Leak Vulnerability +--FILE-- + +==DONE== +--EXPECTF-- +phpinfo() + +PHP Variables +%A +==DONE== debian/patches/002-static_openssl.patch0000664000000000000000000000055412300436054015172 0ustar --- php5.orig/acinclude.m4 +++ php5/acinclude.m4 @@ -2392,9 +2392,7 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[ PHP_ADD_INCLUDE($OPENSSL_INCDIR) - PHP_CHECK_LIBRARY(crypto, CRYPTO_free, [ - PHP_ADD_LIBRARY(crypto,,$1) - ],[ + PHP_CHECK_LIBRARY(crypto, CRYPTO_free, [:],[ AC_MSG_ERROR([libcrypto not found!]) ],[ -L$OPENSSL_LIBDIR debian/patches/CVE-2015-7804.patch0000664000000000000000000000300212613762220013236 0ustar Description: fix uninitialized pointer in phar_make_dirstream() Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=e78ac461dbefb7c4a3e9fde78d50fbc56b7b0183 Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=1ddf72180a52d247db88ea42a3e35f824a8fbda1 Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=d7fb43e30d662c7fff999521ebf15ddbb192c7ca Bug: https://bugs.php.net/bug.php?id=70433 Index: php5-5.5.9+dfsg/ext/phar/util.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/util.c 2015-10-27 16:54:38.489089583 -0400 +++ php5-5.5.9+dfsg/ext/phar/util.c 2015-10-27 16:54:38.485089541 -0400 @@ -1977,7 +1977,7 @@ while ((s = zend_memrchr(filename, '/', filename_len))) { filename_len = s - filename; - if (FAILURE == zend_hash_add_empty_element(&phar->virtual_dirs, filename, filename_len)) { + if (!filename_len || FAILURE == zend_hash_add_empty_element(&phar->virtual_dirs, filename, filename_len)) { break; } } Index: php5-5.5.9+dfsg/ext/phar/zip.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/zip.c 2015-10-27 16:54:38.489089583 -0400 +++ php5-5.5.9+dfsg/ext/phar/zip.c 2015-10-27 16:54:38.485089541 -0400 @@ -396,7 +396,9 @@ if (entry.filename[entry.filename_len - 1] == '/') { entry.is_dir = 1; - entry.filename_len--; + if(entry.filename_len > 1) { + entry.filename_len--; + } entry.flags |= PHAR_ENT_PERM_DEF_DIR; } else { entry.is_dir = 0; debian/patches/CVE-2014-4049.patch0000664000000000000000000000165112350617040013240 0ustar From 4f73394fdd95d3165b4391e1b0dedd57fced8c3b Mon Sep 17 00:00:00 2001 From: Sara Golemon Date: Tue, 10 Jun 2014 11:18:02 -0700 Subject: [PATCH] Fix potential segfault in dns_get_record() If the remote sends us a packet with a malformed TXT record, we could end up trying to over-consume the packet and wander off into overruns. --- ext/standard/dns.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 6a89446..214a7dc 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -517,6 +517,10 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int while (ll < dlen) { n = cp[ll]; + if ((ll + n) >= dlen) { + // Invalid chunk length, truncate + n = dlen - (ll + 1); + } memcpy(tp + ll , cp + ll + 1, n); add_next_index_stringl(entries, cp + ll + 1, n, 1); ll = ll + n + 1; -- 1.9.3 debian/patches/temporary-path-fixes-for-multiarch.patch0000664000000000000000000001276512300436054020512 0ustar Description: transitional workaround for multiarch As a stopgap for natty, patch the various config.m4 files for modules whose libraries have moved to the multiarch dir; we can't use --with-libdir yet because that requires all the build-deps to have moved. Author: Jonathan Marsden Bug-Ubuntu: https://bugs.launchpad.net/bugs/739977 Forwarded: not-needed Reviewed-by: Steve Langasek --- php5.orig/ext/dba/config.m4 +++ php5/ext/dba/config.m4 @@ -239,7 +239,7 @@ AC_DEFUN([PHP_DBA_DB_CHECK],[ AC_MSG_ERROR([DBA: Could not find necessary header file(s).]) fi for LIB in $2; do - if test -f $THIS_PREFIX/$PHP_LIBDIR/lib$LIB.a || test -f $THIS_PREFIX/$PHP_LIBDIR/lib$LIB.$SHLIB_SUFFIX_NAME; then + if test -f $THIS_PREFIX/$PHP_LIBDIR/lib$LIB.a || test -f $THIS_PREFIX/$PHP_LIBDIR/$DEB_HOST_MULTIARCH/lib$LIB.$SHLIB_SUFFIX_NAME || test -f $THIS_PREFIX/$PHP_LIBDIR/lib$LIB.$SHLIB_SUFFIX_NAME; then lib_found=""; PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/$PHP_LIBDIR, -l$LIB,[ AC_TRY_LINK([ --- php5.orig/ext/pcre/config0.m4 +++ php5/ext/pcre/config0.m4 @@ -21,7 +21,7 @@ PHP_ARG_WITH(pcre-regex,, AC_MSG_RESULT([$PCRE_INCDIR]) AC_MSG_CHECKING([for PCRE library location]) - for j in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/$PHP_LIBDIR; do + for j in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/$PHP_LIBDIR/$DEB_HOST_MULTIARCH $PHP_PCRE_REGEX/$PHP_LIBDIR; do test -f $j/libpcre.a || test -f $j/libpcre.$SHLIB_SUFFIX_NAME && PCRE_LIBDIR=$j done --- php5.orig/acinclude.m4 +++ php5/acinclude.m4 @@ -2282,7 +2282,7 @@ AC_DEFUN([PHP_SETUP_KERBEROS],[ fi for i in $PHP_KERBEROS; do - if test -f $i/$PHP_LIBDIR/libkrb5.a || test -f $i/$PHP_LIBDIR/libkrb5.$SHLIB_SUFFIX_NAME; then + if test -f $i/$PHP_LIBDIR/libkrb5.$SHLIB_SUFFIX_NAME || test -f $i/$PHP_LIBDIR/$DEB_HOST_MULTIARCH/libkrb5.$SHLIB_SUFFIX_NAME || test -f $i/$PHP_LIBDIR/libkrb5.a; then PHP_KERBEROS_DIR=$i break fi @@ -2361,7 +2361,7 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[ if test -r $i/include/openssl/evp.h; then OPENSSL_INCDIR=$i/include fi - if test -r $i/$PHP_LIBDIR/libssl.a -o -r $i/$PHP_LIBDIR/libssl.$SHLIB_SUFFIX_NAME; then + if test -r $i/$PHP_LIBDIR/libssl.a -o -r $i/$PHP_LIBDIR/$DEB_HOST_MULTIARCH/libssl.$SHLIB_SUFFIX_NAME -o -r $i/$PHP_LIBDIR/libssl.$SHLIB_SUFFIX_NAME; then OPENSSL_LIBDIR=$i/$PHP_LIBDIR fi test -n "$OPENSSL_INCDIR" && test -n "$OPENSSL_LIBDIR" && break --- php5.orig/ext/ldap/config.m4 +++ php5/ext/ldap/config.m4 @@ -117,7 +117,7 @@ if test "$PHP_LDAP" != "no"; then LDAP_PTHREAD= fi - if test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME; then + if test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/$DEB_HOST_MULTIARCH/liblber.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME; then PHP_ADD_LIBRARY_WITH_PATH(lber, $LDAP_LIBDIR, LDAP_SHARED_LIBADD) PHP_ADD_LIBRARY_WITH_PATH(ldap, $LDAP_LIBDIR, LDAP_SHARED_LIBADD) --- php5.orig/ext/mssql/config.m4 +++ php5/ext/mssql/config.m4 @@ -38,7 +38,7 @@ if test "$PHP_MSSQL" != "no"; then fi fi - if test ! -r "$FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.a" && test ! -r "$FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.so"; then + if test ! -r "$FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.a" && test ! -r "$FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/$DEB_HOST_MULTIARCH/libsybdb.so" && test ! -r "$FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.so"; then AC_MSG_ERROR(Could not find $FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.[a|so]) fi --- php5.orig/ext/pdo_dblib/config.m4 +++ php5/ext/pdo_dblib/config.m4 @@ -46,7 +46,7 @@ if test "$PHP_PDO_DBLIB" != "no"; then PHP_LIBDIR=lib fi - if test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.a" && test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.so"; then + if test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.a" && test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/$DEB_HOST_MULTIARCH/libsybdb.so" && test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.so"; then AC_MSG_ERROR(Could not find $PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.[a|so]) fi --- php5.orig/ext/mysql/config.m4 +++ php5/ext/mysql/config.m4 @@ -94,17 +94,15 @@ Note that the MySQL client library is no fi for i in $PHP_LIBDIR $PHP_LIBDIR/mysql; do - MYSQL_LIB_CHK($i) + MYSQL_LIB_CHK($i/$DEB_HOST_MULTIARCH) + if test -z "$MYSQL_LIB_DIR"; then + MYSQL_LIB_CHK($i) + else + MYSQL_LIB_DIR=$MYSQL_DIR/$i + fi done if test -z "$MYSQL_LIB_DIR"; then - MYSQL_LIB_CHK(lib/x86_64-linux-gnu) - fi - if test -z "$MYSQL_LIB_DIR"; then - MYSQL_LIB_CHK(lib/i386-linux-gnu) - fi - - if test -z "$MYSQL_LIB_DIR"; then AC_MSG_ERROR([Cannot find lib$MYSQL_LIBNAME under $MYSQL_DIR. Note that the MySQL client library is not bundled anymore!]) fi --- php5.orig/ext/gmp/config.m4 +++ php5/ext/gmp/config.m4 @@ -9,6 +9,7 @@ if test "$PHP_GMP" != "no"; then for i in $PHP_GMP /usr/local /usr; do test -f $i/include/gmp.h && GMP_DIR=$i && break + test -f $i/include/$DEB_HOST_MULTIARCH/gmp.h && GMP_DIR=$i && break done if test -z "$GMP_DIR"; then @@ -29,6 +30,7 @@ if test "$PHP_GMP" != "no"; then PHP_ADD_LIBRARY_WITH_PATH(gmp, $GMP_DIR/$PHP_LIBDIR, GMP_SHARED_LIBADD) PHP_ADD_INCLUDE($GMP_DIR/include) + PHP_ADD_INCLUDE($GMP_DIR/include/$DEB_HOST_MULTIARCH) PHP_NEW_EXTENSION(gmp, gmp.c, $ext_shared) PHP_SUBST(GMP_SHARED_LIBADD) debian/patches/CVE-2019-9640.patch0000664000000000000000000000535113444735575013273 0ustar From 30d2b94a2e88021b77b07149e1f4438662ca8e5e Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 2 Mar 2019 13:38:00 -0800 Subject: [PATCH] Fix bug #77540 - Invalid Read on exif_process_SOFn --- ext/exif/exif.c | 10 ++++++++-- ext/exif/tests/bug77540.jpg | Bin 0 -> 91 bytes ext/exif/tests/bug77540.phpt | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 ext/exif/tests/bug77540.jpg create mode 100644 ext/exif/tests/bug77540.phpt diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 029d04ed..b09af831 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -3535,7 +3535,7 @@ static int exif_scan_thumbnail(image_info_type *ImageInfo TSRMLS_DC) return FALSE; marker = c; length = php_jpg_get16(data+pos); - if (pos+length>=ImageInfo->Thumbnail.size) { + if (length > ImageInfo->Thumbnail.size || pos >= ImageInfo->Thumbnail.size - length) { return FALSE; } #ifdef EXIF_DEBUG @@ -3556,6 +3556,10 @@ static int exif_scan_thumbnail(image_info_type *ImageInfo TSRMLS_DC) case M_SOF14: case M_SOF15: /* handle SOFn block */ + if (length < 8 || ImageInfo->Thumbnail.size - 8 < pos) { + /* exif_process_SOFn needs 8 bytes */ + return FALSE; + } exif_process_SOFn(data+pos, marker, &sof_info); ImageInfo->Thumbnail.height = sof_info.height; ImageInfo->Thumbnail.width = sof_info.width; @@ -4196,7 +4200,9 @@ PHP_FUNCTION(exif_thumbnail) ZVAL_STRINGL(return_value, ImageInfo.Thumbnail.data, ImageInfo.Thumbnail.size, 1); if (arg_c >= 3) { if (!ImageInfo.Thumbnail.width || !ImageInfo.Thumbnail.height) { - exif_scan_thumbnail(&ImageInfo TSRMLS_CC); + if (!exif_scan_thumbnail(&ImageInfo)) { + ImageInfo.Thumbnail.width = ImageInfo.Thumbnail.height = 0; + } } zval_dtor(p_width); zval_dtor(p_height); #diff --git a/ext/exif/tests/bug77540.jpg b/ext/exif/tests/bug77540.jpg #new file mode 100644 #index 0000000000000000000000000000000000000000..559022db0e886b66801f2e7495a0ec97c4036993 #GIT binary patch #literal 91 #zcmex=;~_(+Yei-n1B0(GgBAk=0}l{GfDi*S6B7d?ki*CdA_O69TM(NO!Ujp+Vqjum #O_ +--FILE-- + +DONE +--EXPECTF-- +Width 0 +Height 0 +DONE \ No newline at end of file -- 2.20.1 debian/patches/CVE-2017-11145.patch0000664000000000000000000365161713141135102013327 0ustar Backport of: (and regenerated with re2c -i -o parse_date.c parse_date.re) From e8b7698f5ee757ce2c8bd10a192a491a498f891c Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Mon, 3 Jul 2017 12:37:11 +0100 Subject: [PATCH] Fixed parsing of strange formats with mixed month/day and time strings --- ext/date/lib/parse_date.c | 12004 ++++++++++++++++++++----------------------- ext/date/lib/parse_date.re | 2 +- 2 files changed, 5551 insertions(+), 6455 deletions(-) Index: php5-5.5.9+dfsg/ext/date/lib/parse_date.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/date/lib/parse_date.re 2017-08-04 13:08:20.030493644 -0400 +++ php5-5.5.9+dfsg/ext/date/lib/parse_date.re 2017-08-04 13:08:20.026493644 -0400 @@ -912,7 +912,7 @@ datefull = day ([ \t.-])* montht datenoday = monthtext ([ .\t-])* year4; datenodayrev = year4 ([ .\t-])* monthtext; datetextual = monthtext ([ .\t-])* day [,.stndrh\t ]+ year; -datenoyear = monthtext ([ .\t-])* day [,.stndrh\t ]*; +datenoyear = monthtext ([ .\t-])* day ([,.stndrh\t ]+|[\000]); datenoyearrev = day ([ .\t-])* monthtext; datenocolon = year4 monthlz daylz; Index: php5-5.5.9+dfsg/ext/date/lib/parse_date.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/date/lib/parse_date.c 2017-08-04 12:45:14.898544384 -0400 +++ php5-5.5.9+dfsg/ext/date/lib/parse_date.c 2017-08-04 14:16:40.422343439 -0400 @@ -1,9 +1,9 @@ -/* Generated by re2c 0.13.5 on Sun Aug 25 15:12:48 2013 */ +/* Generated by re2c 0.13.5 on Fri Aug 4 14:16:40 2017 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2014 The PHP Group | + | Copyright (c) 1997-2013 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -842,45 +842,9 @@ std: { YYCTYPE yych; unsigned int yyaccept = 0; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 100, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 128, 64, 160, 96, 0, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 0, 0, 0, 0, 0, - 0, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 0, 0, 0, 0, 0, - 0, 24, 24, 24, 88, 24, 24, 24, - 88, 24, 24, 24, 24, 24, 88, 24, - 24, 24, 88, 88, 88, 24, 24, 24, - 24, 24, 24, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - YYDEBUG(0, *YYCURSOR); - if ((YYLIMIT - YYCURSOR) < 31) YYFILL(31); + if ((YYLIMIT - YYCURSOR) < 33) YYFILL(33); yych = *YYCURSOR; - YYDEBUG(-1, yych); switch (yych) { case 0x00: case '\n': goto yy52; @@ -957,7 +921,6 @@ std: default: goto yy54; } yy2: - YYDEBUG(2, *YYCURSOR); { DEBUG_OUTPUT("firstdayof | lastdayof"); TIMELIB_INIT; @@ -974,304 +937,102 @@ yy2: return TIMELIB_LF_DAY_OF_MONTH; } yy3: - YYDEBUG(3, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= 'E') { - if (yych <= ')') { - if (yych >= ')') goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy1523; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych >= 'a') goto yy146; - } else { - if (yych <= 'e') goto yy1532; - if (yych <= 'z') goto yy146; - } - } -yy4: - YYDEBUG(4, *YYCURSOR); - { - int tz_not_found; - DEBUG_OUTPUT("tzcorrection | tz"); - TIMELIB_INIT; - TIMELIB_HAVE_TZ(); - s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); - if (tz_not_found) { - add_error(s, "The timezone could not be found in the database"); - } - TIMELIB_DEINIT; - return TIMELIB_TIMEZONE; - } -yy5: - YYDEBUG(5, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy1523; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; - } else { - if (yych <= 'e') goto yy1523; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy6: - YYDEBUG(6, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'D') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'H') { - if (yych <= 'E') goto yy1494; - goto yy141; - } else { - if (yych <= 'I') goto yy1495; - if (yych <= 'N') goto yy141; - goto yy1493; - } - } - } else { - if (yych <= 'h') { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych == 'e') goto yy1510; - goto yy146; - } - } else { - if (yych <= 'n') { - if (yych <= 'i') goto yy1511; - goto yy146; - } else { - if (yych <= 'o') goto yy1509; - if (yych <= 'z') goto yy146; - goto yy4; - } - } - } -yy7: - YYDEBUG(7, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'D') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'H') { - if (yych <= 'E') goto yy1494; - goto yy141; - } else { - if (yych <= 'I') goto yy1495; - if (yych <= 'N') goto yy141; - goto yy1493; - } - } - } else { - if (yych <= 'h') { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych == 'e') goto yy1494; - goto yy141; - } - } else { - if (yych <= 'n') { - if (yych <= 'i') goto yy1495; - goto yy141; - } else { - if (yych <= 'o') goto yy1493; - if (yych <= 'z') goto yy141; - goto yy4; - } - } - } -yy8: - YYDEBUG(8, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1463; - } else { - if (yych == 'I') goto yy1464; - if (yych <= 'N') goto yy141; - goto yy1465; - } - } else { - if (yych <= 'h') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1478; - goto yy146; - } else { - if (yych <= 'n') { - if (yych <= 'i') goto yy1479; - goto yy146; - } else { - if (yych <= 'o') goto yy1480; - if (yych <= 'z') goto yy146; - goto yy4; - } - } - } -yy9: - YYDEBUG(9, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1463; - } else { - if (yych == 'I') goto yy1464; - if (yych <= 'N') goto yy141; - goto yy1465; - } - } else { - if (yych <= 'h') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1463; - goto yy141; - } else { - if (yych <= 'n') { - if (yych <= 'i') goto yy1464; - goto yy141; - } else { - if (yych <= 'o') goto yy1465; - if (yych <= 'z') goto yy141; - goto yy4; - } - } - } -yy10: - YYDEBUG(10, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch (yych) { + switch ((yych = *YYCURSOR)) { case ')': goto yy140; - case '0': - case '1': goto yy1393; - case '2': goto yy1394; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1395; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': + case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': + case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': + case 'W': case 'X': case 'Y': case 'Z': goto yy141; - case 'E': goto yy1388; - case 'H': goto yy1389; - case 'O': goto yy1390; - case 'U': goto yy1391; - case 'W': goto yy1392; + case 'E': goto yy1463; case 'a': case 'b': case 'c': case 'd': case 'f': case 'g': + case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': + case 'o': case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': + case 'w': case 'x': case 'y': case 'z': goto yy146; - case 'e': goto yy1431; - case 'h': goto yy1432; - case 'o': goto yy1433; - case 'u': goto yy1434; - case 'w': goto yy1435; + case 'e': goto yy1472; default: goto yy4; } -yy11: - YYDEBUG(11, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); +yy4: + { + int tz_not_found; + DEBUG_OUTPUT("tzcorrection | tz"); + TIMELIB_INIT; + TIMELIB_HAVE_TZ(); + s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); + if (tz_not_found) { + add_error(s, "The timezone could not be found in the database"); + } + TIMELIB_DEINIT; + return TIMELIB_TIMEZONE; + } +yy5: + yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; - case '0': - case '1': goto yy1393; - case '2': goto yy1394; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1395; case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': + case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': + case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': + case 'W': case 'X': case 'Y': case 'Z': @@ -1281,22490 +1042,34776 @@ yy11: case 'd': case 'f': case 'g': + case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': + case 'o': case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': + case 'w': case 'x': case 'y': case 'z': goto yy141; case 'E': - case 'e': goto yy1388; - case 'H': - case 'h': goto yy1389; - case 'O': - case 'o': goto yy1390; - case 'U': - case 'u': goto yy1391; - case 'W': - case 'w': goto yy1392; + case 'e': goto yy1463; default: goto yy4; } -yy12: - YYDEBUG(12, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy1384; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy1385; -yy13: - YYDEBUG(13, *YYCURSOR); - { - add_error(s, "Unexpected character"); - goto std; - } -yy14: - YYDEBUG(14, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy1320; - } - } else { - if (yych <= 'N') { - if (yych == 'I') goto yy1321; - goto yy141; - } else { - if (yych <= 'O') goto yy1322; - if (yych <= 'Q') goto yy141; - goto yy1323; - } - } - } else { - if (yych <= 'i') { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; - } else { - if (yych <= 'e') goto yy1361; - if (yych <= 'h') goto yy146; - goto yy1362; - } - } else { - if (yych <= 'q') { - if (yych == 'o') goto yy1363; - goto yy146; - } else { - if (yych <= 'r') goto yy1364; - if (yych <= 'z') goto yy146; - goto yy4; - } - } - } -yy15: - YYDEBUG(15, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy1320; - } - } else { - if (yych <= 'N') { - if (yych == 'I') goto yy1321; - goto yy141; - } else { - if (yych <= 'O') goto yy1322; - if (yych <= 'Q') goto yy141; - goto yy1323; - } - } - } else { - if (yych <= 'i') { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; - } else { - if (yych <= 'e') goto yy1320; - if (yych <= 'h') goto yy141; - goto yy1321; - } - } else { - if (yych <= 'q') { - if (yych == 'o') goto yy1322; - goto yy141; - } else { - if (yych <= 'r') goto yy1323; - if (yych <= 'z') goto yy141; - goto yy4; - } - } - } -yy16: - YYDEBUG(16, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1307; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych <= 'a') goto yy1317; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy17: - YYDEBUG(17, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1307; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych <= 'a') goto yy1307; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy18: - YYDEBUG(18, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1287; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych <= 'a') goto yy1304; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy19: - YYDEBUG(19, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1287; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych <= 'a') goto yy1287; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy20: - YYDEBUG(20, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy1230; - goto yy141; - } - } else { - if (yych <= 'H') { - if (yych <= 'E') goto yy1229; - goto yy141; - } else { - if (yych <= 'I') goto yy1231; - if (yych <= 'T') goto yy141; - goto yy1232; - } - } - } else { - if (yych <= 'e') { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych <= 'a') goto yy1259; - if (yych <= 'd') goto yy146; - goto yy1258; - } - } else { - if (yych <= 't') { - if (yych == 'i') goto yy1260; - goto yy146; - } else { - if (yych <= 'u') goto yy1261; - if (yych <= 'z') goto yy146; - goto yy4; - } - } - } -yy21: - YYDEBUG(21, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy1230; - goto yy141; - } - } else { - if (yych <= 'H') { - if (yych <= 'E') goto yy1229; - goto yy141; - } else { - if (yych <= 'I') goto yy1231; - if (yych <= 'T') goto yy141; - goto yy1232; - } - } - } else { - if (yych <= 'e') { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych <= 'a') goto yy1230; - if (yych <= 'd') goto yy141; - goto yy1229; - } - } else { - if (yych <= 't') { - if (yych == 'i') goto yy1231; - goto yy141; - } else { - if (yych <= 'u') goto yy1232; - if (yych <= 'z') goto yy141; - goto yy4; - } - } - } -yy22: - YYDEBUG(22, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == 'I') goto yy1199; - if (yych <= 'K') goto yy141; - goto yy1200; - } - } else { - if (yych <= 'i') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'h') goto yy146; - goto yy1217; - } else { - if (yych == 'l') goto yy1218; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy23: - YYDEBUG(23, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == 'I') goto yy1199; - if (yych <= 'K') goto yy141; - goto yy1200; - } - } else { - if (yych <= 'i') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'h') goto yy141; - goto yy1199; - } else { - if (yych == 'l') goto yy1200; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy24: - YYDEBUG(24, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy141; - goto yy1098; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; - } else { - if (yych <= 'r') goto yy1192; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy25: - YYDEBUG(25, *YYCURSOR); +yy6: yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy141; - goto yy1098; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; - } else { - if (yych <= 'r') goto yy1098; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy26: - YYDEBUG(26, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); switch (yych) { - case '\t': goto yy1052; - case ' ': + case ')': goto yy140; case 'A': + case 'B': + case 'C': case 'D': case 'F': + case 'G': case 'H': - case 'I': case 'J': + case 'K': + case 'L': case 'M': case 'N': - case 'O': + case 'P': + case 'Q': + case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': goto yy141; + case 'E': goto yy1434; + case 'I': goto yy1435; + case 'O': goto yy1433; case 'a': + case 'b': + case 'c': case 'd': case 'f': + case 'g': case 'h': case 'j': + case 'k': + case 'l': case 'm': - case 'o': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': case 'w': - case 'y': goto yy1054; - case '-': goto yy473; - case '.': goto yy1064; - case '/': goto yy472; - case '0': goto yy1097; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1096; - case ':': goto yy1065; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case 'x': + case 'y': + case 'z': goto yy146; + case 'e': goto yy1450; + case 'i': goto yy1451; + case 'o': goto yy1449; + default: goto yy4; } -yy27: - YYDEBUG(27, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); +yy7: + yych = *++YYCURSOR; switch (yych) { - case '\t': goto yy460; - case ' ': + case ')': goto yy140; case 'A': + case 'B': + case 'C': case 'D': case 'F': + case 'G': case 'H': - case 'I': case 'J': + case 'K': + case 'L': case 'M': case 'N': - case 'O': case 'P': + case 'Q': + case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': case 'a': + case 'b': + case 'c': case 'd': case 'f': + case 'g': case 'h': case 'j': + case 'k': + case 'l': case 'm': - case 'o': + case 'n': case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': case 'w': - case 'y': goto yy462; - case '-': goto yy473; - case '.': goto yy474; - case '/': goto yy472; - case '0': - case '1': - case '2': goto yy1096; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1063; - case ':': goto yy483; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case 'x': + case 'y': + case 'z': goto yy141; + case 'E': + case 'e': goto yy1434; + case 'I': + case 'i': goto yy1435; + case 'O': + case 'o': goto yy1433; + default: goto yy4; } -yy28: - YYDEBUG(28, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); +yy8: + yych = *++YYCURSOR; switch (yych) { - case '\t': goto yy460; - case ' ': - case 'A': + case ')': goto yy140; + case 'A': goto yy1403; + case 'B': + case 'C': case 'D': + case 'E': case 'F': + case 'G': case 'H': - case 'I': case 'J': + case 'K': + case 'L': case 'M': case 'N': - case 'O': case 'P': + case 'Q': + case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': - case 'a': + case 'Z': goto yy141; + case 'I': goto yy1404; + case 'O': goto yy1405; + case 'a': goto yy1418; + case 'b': + case 'c': case 'd': + case 'e': case 'f': + case 'g': case 'h': case 'j': + case 'k': + case 'l': case 'm': - case 'o': + case 'n': case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': case 'w': - case 'y': goto yy462; - case '-': goto yy473; - case '.': goto yy474; - case '/': goto yy472; - case '0': - case '1': - case '2': - case '3': - case '4': goto yy1063; - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1050; - case ':': goto yy483; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case 'x': + case 'y': + case 'z': goto yy146; + case 'i': goto yy1419; + case 'o': goto yy1420; + default: goto yy4; } -yy29: - YYDEBUG(29, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); +yy9: + yych = *++YYCURSOR; switch (yych) { - case '\t': goto yy460; - case ' ': + case ')': goto yy140; case 'A': + case 'a': goto yy1403; + case 'B': + case 'C': case 'D': + case 'E': case 'F': + case 'G': case 'H': - case 'I': case 'J': + case 'K': + case 'L': case 'M': case 'N': - case 'O': case 'P': + case 'Q': + case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': - case 'a': + case 'Z': + case 'b': + case 'c': case 'd': + case 'e': case 'f': + case 'g': case 'h': case 'j': + case 'k': + case 'l': case 'm': - case 'o': + case 'n': case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': case 'w': - case 'y': goto yy462; - case '-': goto yy473; - case '.': goto yy474; - case '/': goto yy472; + case 'x': + case 'y': + case 'z': goto yy141; + case 'I': + case 'i': goto yy1404; + case 'O': + case 'o': goto yy1405; + default: goto yy4; + } +yy10: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; case '0': - case '1': goto yy1050; - case '2': + case '1': goto yy1333; + case '2': goto yy1334; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy469; - case ':': goto yy483; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; - } -yy30: - YYDEBUG(30, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch (yych) { - case '\t': goto yy460; - case ' ': + case '9': goto yy1335; case 'A': + case 'B': + case 'C': case 'D': case 'F': - case 'H': + case 'G': case 'I': case 'J': + case 'K': + case 'L': case 'M': case 'N': - case 'O': case 'P': + case 'Q': + case 'R': case 'S': case 'T': case 'V': - case 'W': case 'X': case 'Y': + case 'Z': goto yy141; + case 'E': goto yy1328; + case 'H': goto yy1329; + case 'O': goto yy1330; + case 'U': goto yy1331; + case 'W': goto yy1332; case 'a': + case 'b': + case 'c': case 'd': case 'f': - case 'h': + case 'g': + case 'i': case 'j': + case 'k': + case 'l': case 'm': - case 'o': + case 'n': case 'p': - case 'w': - case 'y': goto yy462; - case '-': goto yy473; - case '.': goto yy474; - case '/': goto yy472; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy469; - case ':': goto yy483; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'x': + case 'y': + case 'z': goto yy146; + case 'e': goto yy1371; + case 'h': goto yy1372; + case 'o': goto yy1373; + case 'u': goto yy1374; + case 'w': goto yy1375; + default: goto yy4; } -yy31: - YYDEBUG(31, *YYCURSOR); - yyaccept = 1; +yy11: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy58; - } - YYDEBUG(-1, yych); switch (yych) { - case '+': - case '-': goto yy440; + case ')': goto yy140; case '0': - case '1': goto yy437; - case '2': goto yy438; + case '1': goto yy1333; + case '2': goto yy1334; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy439; - default: goto yy13; - } -yy32: - YYDEBUG(32, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy4; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy4; - } else { - if (yych == '/') goto yy4; - goto yy196; - } - } - } else { - if (yych <= 'V') { - if (yych <= 'H') { - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'I') goto yy436; - if (yych <= 'U') goto yy141; - goto yy435; - } - } else { - if (yych <= 'Z') { - if (yych == 'X') goto yy435; - goto yy141; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; - } - } - } -yy33: - YYDEBUG(33, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'Z') { - if (yych <= 'I') goto yy432; - goto yy141; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; - } - } - } -yy34: - YYDEBUG(34, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'Z') { - if (yych <= 'I') goto yy430; - goto yy141; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; - } - } - } -yy35: - YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'A') goto yy413; - if (yych <= 'T') goto yy141; - goto yy412; - } - } else { - if (yych <= 'a') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy422; - } else { - if (yych == 'u') goto yy421; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy36: - YYDEBUG(36, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'A') goto yy413; - if (yych <= 'T') goto yy141; - goto yy412; - } - } else { - if (yych <= 'a') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy413; - } else { - if (yych == 'u') goto yy412; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy37: - YYDEBUG(37, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'F') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'O') { - if (yych <= 'G') goto yy391; - goto yy141; - } else { - if (yych <= 'P') goto yy390; - if (yych <= 'T') goto yy141; - goto yy389; - } - } - } else { - if (yych <= 'o') { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych == 'g') goto yy403; - goto yy146; - } - } else { - if (yych <= 't') { - if (yych <= 'p') goto yy402; - goto yy146; - } else { - if (yych <= 'u') goto yy401; - if (yych <= 'z') goto yy146; - goto yy4; - } - } - } -yy38: - YYDEBUG(38, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'F') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'O') { - if (yych <= 'G') goto yy391; - goto yy141; - } else { - if (yych <= 'P') goto yy390; - if (yych <= 'T') goto yy141; - goto yy389; - } - } - } else { - if (yych <= 'o') { - if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; - } else { - if (yych == 'g') goto yy391; - goto yy141; - } - } else { - if (yych <= 't') { - if (yych <= 'p') goto yy390; - goto yy141; - } else { - if (yych <= 'u') goto yy389; - if (yych <= 'z') goto yy141; - goto yy4; - } - } - } -yy39: - YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'C') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy141; - goto yy379; - } - } else { - if (yych <= 'b') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; - } else { - if (yych <= 'c') goto yy384; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy40: - YYDEBUG(40, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'C') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy141; - goto yy379; - } - } else { - if (yych <= 'b') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; - } else { - if (yych <= 'c') goto yy379; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy41: - YYDEBUG(41, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy192; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; - } else { - if (yych <= 'e') goto yy370; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy42: - YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy192; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; - } else { - if (yych <= 'e') goto yy192; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy43: - YYDEBUG(43, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy165; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; - } else { - if (yych <= 'e') goto yy179; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy44: - YYDEBUG(44, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy165; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; - } else { - if (yych <= 'e') goto yy165; - if (yych <= 'z') goto yy141; - goto yy4; - } - } -yy45: - YYDEBUG(45, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'Z') { - if (yych <= 'M') goto yy157; - goto yy141; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; - } - } -yy46: - YYDEBUG(46, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '@') goto yy13; - if (yych <= 'Z') goto yy156; - if (yych <= '`') goto yy13; - if (yych <= 'z') goto yy156; - goto yy13; -yy47: - YYDEBUG(47, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; - } -yy48: - YYDEBUG(48, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy141; - goto yy4; + case '9': goto yy1335; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'x': + case 'y': + case 'z': goto yy141; + case 'E': + case 'e': goto yy1328; + case 'H': + case 'h': goto yy1329; + case 'O': + case 'o': goto yy1330; + case 'U': + case 'u': goto yy1331; + case 'W': + case 'w': goto yy1332; + default: goto yy4; } -yy49: - YYDEBUG(49, *YYCURSOR); - yyaccept = 2; +yy12: + yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy58; + switch (yych) { + case '-': goto yy1324; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1325; + default: goto yy13; } - if (yych <= '/') goto yy50; - if (yych <= '9') goto yy55; -yy50: - YYDEBUG(50, *YYCURSOR); +yy13: { + add_error(s, "Unexpected character"); goto std; } -yy51: - YYDEBUG(51, *YYCURSOR); +yy14: yych = *++YYCURSOR; - goto yy50; -yy52: - YYDEBUG(52, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(53, *YYCURSOR); - { - s->pos = cursor; s->line++; - goto std; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'E': goto yy1260; + case 'I': goto yy1261; + case 'O': goto yy1262; + case 'R': goto yy1263; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'e': goto yy1301; + case 'i': goto yy1302; + case 'o': goto yy1303; + case 'r': goto yy1304; + default: goto yy4; } -yy54: - YYDEBUG(54, *YYCURSOR); +yy15: yych = *++YYCURSOR; - goto yy13; -yy55: - YYDEBUG(55, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; - YYDEBUG(56, *YYCURSOR); - if (yybm[0+yych] & 2) { - goto yy55; - } - if (yych <= 'W') { - if (yych <= 'F') { - if (yych <= ' ') { - if (yych == '\t') goto yy60; - if (yych >= ' ') goto yy60; - } else { - if (yych == 'D') goto yy65; - if (yych >= 'F') goto yy66; - } - } else { - if (yych <= 'M') { - if (yych == 'H') goto yy64; - if (yych >= 'M') goto yy63; - } else { - if (yych <= 'S') { - if (yych >= 'S') goto yy62; - } else { - if (yych <= 'T') goto yy69; - if (yych >= 'W') goto yy68; - } - } - } - } else { - if (yych <= 'l') { - if (yych <= 'd') { - if (yych == 'Y') goto yy67; - if (yych >= 'd') goto yy65; - } else { - if (yych <= 'f') { - if (yych >= 'f') goto yy66; - } else { - if (yych == 'h') goto yy64; - } - } - } else { - if (yych <= 't') { - if (yych <= 'm') goto yy63; - if (yych <= 'r') goto yy57; - if (yych <= 's') goto yy62; - goto yy69; - } else { - if (yych <= 'w') { - if (yych >= 'w') goto yy68; - } else { - if (yych == 'y') goto yy67; - } - } - } - } -yy57: - YYDEBUG(57, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 16) { - if (yyaccept <= 8) { - if (yyaccept <= 4) { - if (yyaccept <= 2) { - if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy4; - } else { - goto yy13; - } - } else { - goto yy50; - } - } else { - if (yyaccept <= 3) { - goto yy73; - } else { - goto yy167; - } - } - } else { - if (yyaccept <= 6) { - if (yyaccept <= 5) { - goto yy194; - } else { - goto yy199; - } - } else { - if (yyaccept <= 7) { - goto yy223; - } else { - goto yy295; - } - } - } - } else { - if (yyaccept <= 12) { - if (yyaccept <= 10) { - if (yyaccept <= 9) { - goto yy393; - } else { - goto yy476; - } - } else { - if (yyaccept <= 11) { - goto yy491; - } else { - goto yy612; - } - } - } else { - if (yyaccept <= 14) { - if (yyaccept <= 13) { - goto yy657; - } else { - goto yy667; - } - } else { - if (yyaccept <= 15) { - goto yy764; - } else { - goto yy784; - } - } - } - } - } else { - if (yyaccept <= 25) { - if (yyaccept <= 21) { - if (yyaccept <= 19) { - if (yyaccept <= 18) { - if (yyaccept <= 17) { - goto yy815; - } else { - goto yy822; - } - } else { - goto yy849; - } - } else { - if (yyaccept <= 20) { - goto yy794; - } else { - goto yy455; - } - } - } else { - if (yyaccept <= 23) { - if (yyaccept <= 22) { - goto yy974; - } else { - goto yy843; - } - } else { - if (yyaccept <= 24) { - goto yy1068; - } else { - goto yy1076; - } - } - } - } else { - if (yyaccept <= 29) { - if (yyaccept <= 27) { - if (yyaccept <= 26) { - goto yy1118; - } else { - goto yy1142; - } - } else { - if (yyaccept <= 28) { - goto yy1295; - } else { - goto yy1417; - } - } - } else { - if (yyaccept <= 31) { - if (yyaccept <= 30) { - goto yy1420; - } else { - goto yy1500; - } - } else { - if (yyaccept <= 32) { - goto yy1508; - } else { - goto yy1531; - } - } - } - } - } -yy58: - YYDEBUG(58, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(59, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy58; - } - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy55; - goto yy57; -yy60: - YYDEBUG(60, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; -yy61: - YYDEBUG(61, *YYCURSOR); - if (yych <= 'W') { - if (yych <= 'F') { - if (yych <= ' ') { - if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy57; - goto yy60; - } else { - if (yych == 'D') goto yy65; - if (yych <= 'E') goto yy57; - goto yy66; - } - } else { - if (yych <= 'M') { - if (yych == 'H') goto yy64; - if (yych <= 'L') goto yy57; - goto yy63; - } else { - if (yych <= 'S') { - if (yych <= 'R') goto yy57; - } else { - if (yych <= 'T') goto yy69; - if (yych <= 'V') goto yy57; - goto yy68; - } - } - } - } else { - if (yych <= 'l') { - if (yych <= 'd') { - if (yych == 'Y') goto yy67; - if (yych <= 'c') goto yy57; - goto yy65; - } else { - if (yych <= 'f') { - if (yych <= 'e') goto yy57; - goto yy66; - } else { - if (yych == 'h') goto yy64; - goto yy57; - } - } - } else { - if (yych <= 't') { - if (yych <= 'm') goto yy63; - if (yych <= 'r') goto yy57; - if (yych >= 't') goto yy69; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy57; - goto yy68; - } else { - if (yych == 'y') goto yy67; - goto yy57; - } - } - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'E': + case 'e': goto yy1260; + case 'I': + case 'i': goto yy1261; + case 'O': + case 'o': goto yy1262; + case 'R': + case 'r': goto yy1263; + default: goto yy4; } -yy62: - YYDEBUG(62, *YYCURSOR); +yy16: yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'D') { - if (yych == 'A') goto yy127; - goto yy57; - } else { - if (yych <= 'E') goto yy128; - if (yych <= 'T') goto yy57; - goto yy126; - } - } else { - if (yych <= 'd') { - if (yych == 'a') goto yy127; - goto yy57; - } else { - if (yych <= 'e') goto yy128; - if (yych == 'u') goto yy126; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': goto yy1247; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'a': goto yy1257; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + default: goto yy4; } -yy63: - YYDEBUG(63, *YYCURSOR); +yy17: yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy118; - if (yych <= 'N') goto yy57; - goto yy117; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy57; - goto yy118; - } else { - if (yych == 'o') goto yy117; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1247; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + default: goto yy4; } -yy64: - YYDEBUG(64, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy115; - if (yych == 'o') goto yy115; - goto yy57; -yy65: - YYDEBUG(65, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy114; - if (yych == 'a') goto yy114; - goto yy57; -yy66: - YYDEBUG(66, *YYCURSOR); +yy18: yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'O') goto yy99; - if (yych <= 'Q') goto yy57; - goto yy98; - } else { - if (yych <= 'o') { - if (yych <= 'n') goto yy57; - goto yy99; - } else { - if (yych == 'r') goto yy98; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': goto yy1227; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'a': goto yy1244; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + default: goto yy4; } -yy67: - YYDEBUG(67, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy95; - if (yych == 'e') goto yy95; - goto yy57; -yy68: - YYDEBUG(68, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy83; - if (yych == 'e') goto yy83; - goto yy57; -yy69: - YYDEBUG(69, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'H') goto yy70; - if (yych <= 'T') goto yy57; - goto yy71; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy57; - } else { - if (yych == 'u') goto yy71; - goto yy57; - } - } -yy70: - YYDEBUG(70, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy78; - if (yych == 'u') goto yy78; - goto yy57; -yy71: - YYDEBUG(71, *YYCURSOR); +yy19: yych = *++YYCURSOR; - if (yych == 'E') goto yy72; - if (yych != 'e') goto yy57; -yy72: - YYDEBUG(72, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'S') goto yy74; - if (yych == 's') goto yy74; -yy73: - YYDEBUG(73, *YYCURSOR); - { - timelib_ull i; - DEBUG_OUTPUT("relative"); - TIMELIB_INIT; - TIMELIB_HAVE_RELATIVE(); - - while(*ptr) { - i = timelib_get_unsigned_nr((char **) &ptr, 24); - timelib_eat_spaces((char **) &ptr); - timelib_set_relative((char **) &ptr, i, 1, s); - } - TIMELIB_DEINIT; - return TIMELIB_RELATIVE; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1227; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + default: goto yy4; } -yy74: - YYDEBUG(74, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy75; - if (yych != 'd') goto yy57; -yy75: - YYDEBUG(75, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy76; - if (yych != 'a') goto yy57; -yy76: - YYDEBUG(76, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych != 'y') goto yy57; -yy77: - YYDEBUG(77, *YYCURSOR); - yych = *++YYCURSOR; - goto yy73; -yy78: - YYDEBUG(78, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'R') goto yy79; - if (yych != 'r') goto yy73; -yy79: - YYDEBUG(79, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy80; - if (yych != 's') goto yy57; -yy80: - YYDEBUG(80, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy81; - if (yych != 'd') goto yy57; -yy81: - YYDEBUG(81, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy82; - if (yych != 'a') goto yy57; -yy82: - YYDEBUG(82, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy83: - YYDEBUG(83, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= 'C') goto yy57; - if (yych <= 'D') goto yy85; - } else { - if (yych <= 'c') goto yy57; - if (yych <= 'd') goto yy85; - if (yych >= 'f') goto yy57; - } - YYDEBUG(84, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'K') goto yy91; - if (yych == 'k') goto yy91; - goto yy57; -yy85: - YYDEBUG(85, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'N') goto yy86; - if (yych != 'n') goto yy73; -yy86: - YYDEBUG(86, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy87; - if (yych != 'e') goto yy57; -yy87: - YYDEBUG(87, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy88; - if (yych != 's') goto yy57; -yy88: - YYDEBUG(88, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy89; - if (yych != 'd') goto yy57; -yy89: - YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy90; - if (yych != 'a') goto yy57; -yy90: - YYDEBUG(90, *YYCURSOR); +yy20: yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy91: - YYDEBUG(91, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych == 'D') goto yy92; - if (yych <= 'R') goto yy73; - goto yy77; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy73; - } else { - if (yych == 's') goto yy77; - goto yy73; - } + switch (yych) { + case ')': goto yy140; + case 'A': goto yy1170; + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'E': goto yy1169; + case 'I': goto yy1171; + case 'U': goto yy1172; + case 'a': goto yy1199; + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'e': goto yy1198; + case 'i': goto yy1200; + case 'u': goto yy1201; + default: goto yy4; } -yy92: - YYDEBUG(92, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy93; - if (yych != 'a') goto yy57; -yy93: - YYDEBUG(93, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy94; - if (yych != 'y') goto yy57; -yy94: - YYDEBUG(94, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy77; - if (yych == 's') goto yy77; - goto yy73; -yy95: - YYDEBUG(95, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy96; - if (yych != 'a') goto yy57; -yy96: - YYDEBUG(96, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy97; - if (yych != 'r') goto yy57; -yy97: - YYDEBUG(97, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy77; - if (yych == 's') goto yy77; - goto yy73; -yy98: - YYDEBUG(98, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy111; - if (yych == 'i') goto yy111; - goto yy57; -yy99: - YYDEBUG(99, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy100; - if (yych != 'r') goto yy57; -yy100: - YYDEBUG(100, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy101; - if (yych != 't') goto yy57; -yy101: - YYDEBUG(101, *YYCURSOR); +yy21: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'H') goto yy103; - if (yych <= 'M') goto yy57; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy57; - goto yy103; - } else { - if (yych != 'n') goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1170; + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'E': + case 'e': goto yy1169; + case 'I': + case 'i': goto yy1171; + case 'U': + case 'u': goto yy1172; + default: goto yy4; } - YYDEBUG(102, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy108; - if (yych == 'i') goto yy108; - goto yy57; -yy103: - YYDEBUG(103, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy104; - if (yych != 'n') goto yy57; -yy104: - YYDEBUG(104, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy105; - if (yych != 'i') goto yy57; -yy105: - YYDEBUG(105, *YYCURSOR); +yy22: yych = *++YYCURSOR; - if (yych == 'G') goto yy106; - if (yych != 'g') goto yy57; -yy106: - YYDEBUG(106, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy107; - if (yych != 'h') goto yy57; -yy107: - YYDEBUG(107, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy97; - if (yych == 't') goto yy97; - goto yy57; -yy108: - YYDEBUG(108, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy109; - if (yych != 'g') goto yy57; -yy109: - YYDEBUG(109, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy110; - if (yych != 'h') goto yy57; -yy110: - YYDEBUG(110, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy97; - if (yych == 't') goto yy97; - goto yy57; -yy111: - YYDEBUG(111, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy112; - if (yych != 'd') goto yy73; -yy112: - YYDEBUG(112, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy113; - if (yych != 'a') goto yy57; -yy113: - YYDEBUG(113, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy114: - YYDEBUG(114, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy97; - if (yych == 'y') goto yy97; - goto yy57; -yy115: - YYDEBUG(115, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy116; - if (yych != 'u') goto yy57; -yy116: - YYDEBUG(116, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy97; - if (yych == 'r') goto yy97; - goto yy57; -yy117: - YYDEBUG(117, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy122; - if (yych == 'n') goto yy122; - goto yy57; -yy118: - YYDEBUG(118, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy119; - if (yych != 'n') goto yy57; -yy119: - YYDEBUG(119, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'U') { - if (yych == 'S') goto yy77; - if (yych <= 'T') goto yy73; - } else { - if (yych <= 's') { - if (yych <= 'r') goto yy73; - goto yy77; - } else { - if (yych != 'u') goto yy73; - } - } - YYDEBUG(120, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy121; - if (yych != 't') goto yy57; -yy121: - YYDEBUG(121, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy97; - if (yych == 'e') goto yy97; - goto yy57; -yy122: - YYDEBUG(122, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych == 'D') goto yy123; - if (yych <= 'S') goto yy73; - goto yy124; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy73; - } else { - if (yych == 't') goto yy124; - goto yy73; - } - } -yy123: - YYDEBUG(123, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy125; - if (yych == 'a') goto yy125; - goto yy57; -yy124: - YYDEBUG(124, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy97; - if (yych == 'h') goto yy97; - goto yy57; -yy125: - YYDEBUG(125, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy126: - YYDEBUG(126, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy137; - if (yych == 'n') goto yy137; - goto yy57; -yy127: - YYDEBUG(127, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy132; - if (yych == 't') goto yy132; - goto yy57; -yy128: - YYDEBUG(128, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy129; - if (yych != 'c') goto yy57; -yy129: - YYDEBUG(129, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych == 'O') goto yy130; - if (yych <= 'R') goto yy73; - goto yy77; - } else { - if (yych <= 'o') { - if (yych <= 'n') goto yy73; - } else { - if (yych == 's') goto yy77; - goto yy73; - } - } -yy130: - YYDEBUG(130, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy131; - if (yych != 'n') goto yy57; -yy131: - YYDEBUG(131, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy97; - if (yych == 'd') goto yy97; - goto yy57; -yy132: - YYDEBUG(132, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy133; - if (yych != 'u') goto yy73; -yy133: - YYDEBUG(133, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy134; - if (yych != 'r') goto yy57; -yy134: - YYDEBUG(134, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy135; - if (yych != 'd') goto yy57; -yy135: - YYDEBUG(135, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy136; - if (yych != 'a') goto yy57; -yy136: - YYDEBUG(136, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy137: - YYDEBUG(137, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy138; - if (yych != 'd') goto yy73; -yy138: - YYDEBUG(138, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy139; - if (yych != 'a') goto yy57; -yy139: - YYDEBUG(139, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy140: - YYDEBUG(140, *YYCURSOR); - yych = *++YYCURSOR; - goto yy4; -yy141: - YYDEBUG(141, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; - } -yy142: - YYDEBUG(142, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'I': goto yy1139; + case 'L': goto yy1140; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'i': goto yy1157; + case 'l': goto yy1158; + default: goto yy4; } -yy143: - YYDEBUG(143, *YYCURSOR); +yy23: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'I': + case 'i': goto yy1139; + case 'L': + case 'l': goto yy1140; + default: goto yy4; } -yy144: - YYDEBUG(144, *YYCURSOR); +yy24: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'R': goto yy1038; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'r': goto yy1132; + default: goto yy4; } -yy145: - YYDEBUG(145, *YYCURSOR); +yy25: yych = *++YYCURSOR; - if (yych == ')') goto yy140; - goto yy4; -yy146: - YYDEBUG(146, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - goto yy148; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy142; - goto yy4; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'R': + case 'r': goto yy1038; + default: goto yy4; } -yy147: - YYDEBUG(147, *YYCURSOR); - yyaccept = 0; +yy26: + yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy143; - goto yy4; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy151; - goto yy4; - } - } -yy148: - YYDEBUG(148, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 8) { - goto yy149; - } - goto yy57; -yy149: - YYDEBUG(149, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(150, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy149; - } - if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy4; - } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy4; + switch (yych) { + case '\t': goto yy992; + case ' ': + case 'A': + case 'D': + case 'F': + case 'H': + case 'I': + case 'J': + case 'M': + case 'N': + case 'O': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'a': + case 'd': + case 'f': + case 'h': + case 'j': + case 'm': + case 'o': + case 'w': + case 'y': goto yy994; + case '-': goto yy413; + case '.': goto yy1004; + case '/': goto yy412; + case '0': goto yy1037; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1036; + case ':': goto yy1005; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy13; } -yy151: - YYDEBUG(151, *YYCURSOR); - yyaccept = 0; +yy27: + yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - goto yy148; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy144; - goto yy4; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; - } + switch (yych) { + case '\t': goto yy400; + case ' ': + case 'A': + case 'D': + case 'F': + case 'H': + case 'I': + case 'J': + case 'M': + case 'N': + case 'O': + case 'P': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'a': + case 'd': + case 'f': + case 'h': + case 'j': + case 'm': + case 'o': + case 'p': + case 'w': + case 'y': goto yy402; + case '-': goto yy413; + case '.': goto yy414; + case '/': goto yy412; + case '0': + case '1': + case '2': goto yy1036; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1003; + case ':': goto yy423; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy13; } -yy152: - YYDEBUG(152, *YYCURSOR); - yyaccept = 0; +yy28: + yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - goto yy148; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy145; - goto yy4; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; - } + switch (yych) { + case '\t': goto yy400; + case ' ': + case 'A': + case 'D': + case 'F': + case 'H': + case 'I': + case 'J': + case 'M': + case 'N': + case 'O': + case 'P': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'a': + case 'd': + case 'f': + case 'h': + case 'j': + case 'm': + case 'o': + case 'p': + case 'w': + case 'y': goto yy402; + case '-': goto yy413; + case '.': goto yy414; + case '/': goto yy412; + case '0': + case '1': + case '2': + case '3': + case '4': goto yy1003; + case '5': + case '6': + case '7': + case '8': + case '9': goto yy990; + case ':': goto yy423; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy13; } -yy153: - YYDEBUG(153, *YYCURSOR); - yyaccept = 0; +yy29: + yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; - } - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych <= '/') { - if (yych <= '.') goto yy4; - goto yy148; - } else { - if (yych == '_') goto yy148; - goto yy4; - } + switch (yych) { + case '\t': goto yy400; + case ' ': + case 'A': + case 'D': + case 'F': + case 'H': + case 'I': + case 'J': + case 'M': + case 'N': + case 'O': + case 'P': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'a': + case 'd': + case 'f': + case 'h': + case 'j': + case 'm': + case 'o': + case 'p': + case 'w': + case 'y': goto yy402; + case '-': goto yy413; + case '.': goto yy414; + case '/': goto yy412; + case '0': + case '1': goto yy990; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy409; + case ':': goto yy423; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy13; } -yy154: - YYDEBUG(154, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy155: - YYDEBUG(155, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; - } - if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy57; - } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy57; - } -yy156: - YYDEBUG(156, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy141; - goto yy4; - } -yy157: - YYDEBUG(157, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy142; - } else { - if (yych <= 'Z') { - if (yych >= 'U') goto yy142; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; - } - } - YYDEBUG(158, *YYCURSOR); - yyaccept = 0; +yy30: + yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych != '+') goto yy4; - } - } else { - if (yych <= 'Z') { - if (yych <= '-') goto yy159; - if (yych <= '@') goto yy4; - goto yy143; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy143; - goto yy4; - } - } -yy159: - YYDEBUG(159, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy160; - if (yych <= '2') goto yy161; - if (yych <= '9') goto yy162; - goto yy57; -yy160: - YYDEBUG(160, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy162; - if (yych <= ':') goto yy163; - goto yy4; -yy161: - YYDEBUG(161, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '5') { - if (yych <= '/') goto yy4; - if (yych >= '5') goto yy164; - } else { - if (yych <= '9') goto yy140; - if (yych <= ':') goto yy163; - goto yy4; - } -yy162: - YYDEBUG(162, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy4; - if (yych <= '5') goto yy164; - if (yych <= '9') goto yy140; - if (yych >= ';') goto yy4; -yy163: - YYDEBUG(163, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy4; - if (yych <= '5') goto yy164; - if (yych <= '9') goto yy140; - goto yy4; -yy164: - YYDEBUG(164, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy140; - goto yy4; -yy165: - YYDEBUG(165, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'C') goto yy142; - if (yych >= 'E') goto yy168; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'd') goto yy166; - if (yych <= 'e') goto yy168; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy166: - YYDEBUG(166, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= 'N') { - if (yych <= ')') { - if (yych >= ')') goto yy140; - } else { - if (yych <= '@') goto yy167; - if (yych <= 'M') goto yy143; - goto yy174; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy143; - if (yych >= 'a') goto yy143; - } else { - if (yych <= 'n') goto yy174; - if (yych <= 'z') goto yy143; - } - } -yy167: - YYDEBUG(167, *YYCURSOR); - { - const timelib_relunit* relunit; - DEBUG_OUTPUT("daytext"); - TIMELIB_INIT; - TIMELIB_HAVE_RELATIVE(); - TIMELIB_HAVE_WEEKDAY_RELATIVE(); - TIMELIB_UNHAVE_TIME(); - relunit = timelib_lookup_relunit((char**) &ptr); - s->time->relative.weekday = relunit->multiplier; - if (s->time->relative.weekday_behavior != 2) { - s->time->relative.weekday_behavior = 1; - } - - TIMELIB_DEINIT; - return TIMELIB_WEEKDAY; - } -yy168: - YYDEBUG(168, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'K') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'J') goto yy143; - } - } else { - if (yych <= 'j') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'k') goto yy169; - if (yych <= 'z') goto yy143; - goto yy4; - } - } -yy169: - YYDEBUG(169, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy144; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'd') goto yy170; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy170: - YYDEBUG(170, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy145; - goto yy4; - } else { - if (yych <= 'a') goto yy171; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy171: - YYDEBUG(171, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'X') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Y') goto yy172; - if (yych != 'y') goto yy4; - } -yy172: - YYDEBUG(172, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy173; - if (yych != 's') goto yy167; -yy173: - YYDEBUG(173, *YYCURSOR); - yych = *++YYCURSOR; - goto yy167; -yy174: - YYDEBUG(174, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy144; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'e') goto yy175; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy175: - YYDEBUG(175, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy145; - } - } else { - if (yych <= 'r') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 's') goto yy176; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case '\t': goto yy400; + case ' ': + case 'A': + case 'D': + case 'F': + case 'H': + case 'I': + case 'J': + case 'M': + case 'N': + case 'O': + case 'P': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'a': + case 'd': + case 'f': + case 'h': + case 'j': + case 'm': + case 'o': + case 'p': + case 'w': + case 'y': goto yy402; + case '-': goto yy413; + case '.': goto yy414; + case '/': goto yy412; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy409; + case ':': goto yy423; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy13; } -yy176: - YYDEBUG(176, *YYCURSOR); - yyaccept = 0; +yy31: + yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'D') goto yy177; - if (yych != 'd') goto yy4; + switch (yych) { + case '\t': + case ' ': goto yy58; + case '+': + case '-': goto yy380; + case '0': + case '1': goto yy377; + case '2': goto yy378; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy379; + default: goto yy13; } -yy177: - YYDEBUG(177, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy178; - if (yych != 'a') goto yy57; -yy178: - YYDEBUG(178, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy173; - goto yy57; -yy179: - YYDEBUG(179, *YYCURSOR); +yy32: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych <= '/') { - if (yych <= '.') goto yy4; - goto yy148; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy142; - goto yy166; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= 'E') goto yy168; - goto yy142; - } else { - if (yych == '_') goto yy148; - goto yy4; - } - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy147; - } else { - if (yych <= 'e') goto yy181; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'W': + case 'Y': + case 'Z': goto yy141; + case 'I': goto yy376; + case 'V': + case 'X': goto yy375; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + default: goto yy4; } - YYDEBUG(180, *YYCURSOR); - yyaccept = 4; +yy33: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy174; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy167; - goto yy151; - } else { - if (yych <= 'n') goto yy187; - if (yych <= 'z') goto yy151; - goto yy167; - } + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'I': goto yy372; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + default: goto yy4; + } +yy34: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'I': goto yy370; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + default: goto yy4; + } +yy35: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': goto yy353; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'U': goto yy352; + case 'a': goto yy362; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'u': goto yy361; + default: goto yy4; + } +yy36: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy353; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'U': + case 'u': goto yy352; + default: goto yy4; + } +yy37: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'G': goto yy331; + case 'P': goto yy330; + case 'U': goto yy329; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'g': goto yy343; + case 'p': goto yy342; + case 'u': goto yy341; + default: goto yy4; + } +yy38: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'G': + case 'g': goto yy331; + case 'P': + case 'p': goto yy330; + case 'U': + case 'u': goto yy329; + default: goto yy4; + } +yy39: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'C': goto yy319; + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'c': goto yy324; + default: goto yy4; + } +yy40: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'C': + case 'c': goto yy319; + default: goto yy4; + } +yy41: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'E': goto yy192; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'e': goto yy310; + default: goto yy4; + } +yy42: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'E': + case 'e': goto yy192; + default: goto yy4; + } +yy43: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'E': goto yy165; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + case 'e': goto yy179; + default: goto yy4; + } +yy44: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + case 'E': + case 'e': goto yy165; + default: goto yy4; + } +yy45: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'M': goto yy157; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + default: goto yy4; + } +yy46: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy156; + default: goto yy13; + } +yy47: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy141; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy146; + default: goto yy4; + } +yy48: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + default: goto yy4; + } +yy49: + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy58; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy50; + } +yy50: + { + goto std; + } +yy51: + yych = *++YYCURSOR; + goto yy50; +yy52: + ++YYCURSOR; + { + s->pos = cursor; s->line++; + goto std; + } +yy54: + yych = *++YYCURSOR; + goto yy13; +yy55: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy60; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + case 'D': + case 'd': goto yy65; + case 'F': + case 'f': goto yy66; + case 'H': + case 'h': goto yy64; + case 'M': + case 'm': goto yy63; + case 'S': + case 's': goto yy62; + case 'T': + case 't': goto yy69; + case 'W': + case 'w': goto yy68; + case 'Y': + case 'y': goto yy67; + default: goto yy57; + } +yy57: + YYCURSOR = YYMARKER; + switch (yyaccept) { + case 0: goto yy4; + case 1: goto yy13; + case 2: goto yy50; + case 3: goto yy73; + case 4: goto yy167; + case 5: goto yy194; + case 6: goto yy208; + case 7: goto yy222; + case 8: goto yy333; + case 9: goto yy416; + case 10: goto yy431; + case 11: goto yy552; + case 12: goto yy597; + case 13: goto yy607; + case 14: goto yy704; + case 15: goto yy724; + case 16: goto yy755; + case 17: goto yy762; + case 18: goto yy789; + case 19: goto yy734; + case 20: goto yy395; + case 21: goto yy914; + case 22: goto yy783; + case 23: goto yy1008; + case 24: goto yy1016; + case 25: goto yy1058; + case 26: goto yy1082; + case 27: goto yy1235; + case 28: goto yy1357; + case 29: goto yy1360; + case 30: goto yy1440; + case 31: goto yy1448; + case 32: goto yy1471; + } +yy58: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy58; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy57; + } +yy60: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; +yy61: + switch (yych) { + case '\t': + case ' ': goto yy60; + case 'D': + case 'd': goto yy65; + case 'F': + case 'f': goto yy66; + case 'H': + case 'h': goto yy64; + case 'M': + case 'm': goto yy63; + case 'S': + case 's': goto yy62; + case 'T': + case 't': goto yy69; + case 'W': + case 'w': goto yy68; + case 'Y': + case 'y': goto yy67; + default: goto yy57; + } +yy62: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy127; + case 'E': + case 'e': goto yy128; + case 'U': + case 'u': goto yy126; + default: goto yy57; + } +yy63: + yych = *++YYCURSOR; + switch (yych) { + case 'I': + case 'i': goto yy118; + case 'O': + case 'o': goto yy117; + default: goto yy57; + } +yy64: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy115; + default: goto yy57; + } +yy65: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy114; + default: goto yy57; + } +yy66: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy99; + case 'R': + case 'r': goto yy98; + default: goto yy57; + } +yy67: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy95; + default: goto yy57; + } +yy68: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy83; + default: goto yy57; + } +yy69: + yych = *++YYCURSOR; + switch (yych) { + case 'H': + case 'h': goto yy70; + case 'U': + case 'u': goto yy71; + default: goto yy57; + } +yy70: + yych = *++YYCURSOR; + switch (yych) { + case 'U': + case 'u': goto yy78; + default: goto yy57; + } +yy71: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy72; + default: goto yy57; + } +yy72: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'S': + case 's': goto yy74; + default: goto yy73; + } +yy73: + { + timelib_ull i; + DEBUG_OUTPUT("relative"); + TIMELIB_INIT; + TIMELIB_HAVE_RELATIVE(); + + while(*ptr) { + i = timelib_get_unsigned_nr((char **) &ptr, 24); + timelib_eat_spaces((char **) &ptr); + timelib_set_relative((char **) &ptr, i, 1, s); + } + TIMELIB_DEINIT; + return TIMELIB_RELATIVE; + } +yy74: + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy75; + default: goto yy57; + } +yy75: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy76; + default: goto yy57; + } +yy76: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy77; + default: goto yy57; + } +yy77: + yych = *++YYCURSOR; + goto yy73; +yy78: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy79; + default: goto yy73; + } +yy79: + yych = *++YYCURSOR; + switch (yych) { + case 'S': + case 's': goto yy80; + default: goto yy57; + } +yy80: + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy81; + default: goto yy57; + } +yy81: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy82; + default: goto yy57; + } +yy82: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy77; + default: goto yy57; + } +yy83: + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy85; + case 'E': + case 'e': goto yy84; + default: goto yy57; + } +yy84: + yych = *++YYCURSOR; + switch (yych) { + case 'K': + case 'k': goto yy91; + default: goto yy57; + } +yy85: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'N': + case 'n': goto yy86; + default: goto yy73; + } +yy86: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy87; + default: goto yy57; + } +yy87: + yych = *++YYCURSOR; + switch (yych) { + case 'S': + case 's': goto yy88; + default: goto yy57; + } +yy88: + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy89; + default: goto yy57; + } +yy89: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy90; + default: goto yy57; + } +yy90: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy77; + default: goto yy57; + } +yy91: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'D': + case 'd': goto yy92; + case 'S': + case 's': goto yy77; + default: goto yy73; + } +yy92: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy93; + default: goto yy57; + } +yy93: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy94; + default: goto yy57; + } +yy94: + yych = *++YYCURSOR; + switch (yych) { + case 'S': + case 's': goto yy77; + default: goto yy73; + } +yy95: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy96; + default: goto yy57; + } +yy96: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy97; + default: goto yy57; + } +yy97: + yych = *++YYCURSOR; + switch (yych) { + case 'S': + case 's': goto yy77; + default: goto yy73; + } +yy98: + yych = *++YYCURSOR; + switch (yych) { + case 'I': + case 'i': goto yy111; + default: goto yy57; + } +yy99: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy100; + default: goto yy57; + } +yy100: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy101; + default: goto yy57; + } +yy101: + yych = *++YYCURSOR; + switch (yych) { + case 'H': + case 'h': goto yy103; + case 'N': + case 'n': goto yy102; + default: goto yy57; + } +yy102: + yych = *++YYCURSOR; + switch (yych) { + case 'I': + case 'i': goto yy108; + default: goto yy57; + } +yy103: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy104; + default: goto yy57; + } +yy104: + yych = *++YYCURSOR; + switch (yych) { + case 'I': + case 'i': goto yy105; + default: goto yy57; + } +yy105: + yych = *++YYCURSOR; + switch (yych) { + case 'G': + case 'g': goto yy106; + default: goto yy57; + } +yy106: + yych = *++YYCURSOR; + switch (yych) { + case 'H': + case 'h': goto yy107; + default: goto yy57; + } +yy107: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy97; + default: goto yy57; + } +yy108: + yych = *++YYCURSOR; + switch (yych) { + case 'G': + case 'g': goto yy109; + default: goto yy57; + } +yy109: + yych = *++YYCURSOR; + switch (yych) { + case 'H': + case 'h': goto yy110; + default: goto yy57; + } +yy110: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy97; + default: goto yy57; + } +yy111: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'D': + case 'd': goto yy112; + default: goto yy73; + } +yy112: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy113; + default: goto yy57; + } +yy113: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy77; + default: goto yy57; + } +yy114: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy97; + default: goto yy57; + } +yy115: + yych = *++YYCURSOR; + switch (yych) { + case 'U': + case 'u': goto yy116; + default: goto yy57; + } +yy116: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy97; + default: goto yy57; + } +yy117: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy122; + default: goto yy57; + } +yy118: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy119; + default: goto yy57; + } +yy119: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'S': + case 's': goto yy77; + case 'U': + case 'u': goto yy120; + default: goto yy73; + } +yy120: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy121; + default: goto yy57; + } +yy121: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy97; + default: goto yy57; + } +yy122: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'D': + case 'd': goto yy123; + case 'T': + case 't': goto yy124; + default: goto yy73; + } +yy123: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy125; + default: goto yy57; + } +yy124: + yych = *++YYCURSOR; + switch (yych) { + case 'H': + case 'h': goto yy97; + default: goto yy57; + } +yy125: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy77; + default: goto yy57; + } +yy126: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy137; + default: goto yy57; + } +yy127: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy132; + default: goto yy57; + } +yy128: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy129; + default: goto yy57; + } +yy129: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'O': + case 'o': goto yy130; + case 'S': + case 's': goto yy77; + default: goto yy73; + } +yy130: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy131; + default: goto yy57; + } +yy131: + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy97; + default: goto yy57; + } +yy132: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'U': + case 'u': goto yy133; + default: goto yy73; + } +yy133: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy134; + default: goto yy57; + } +yy134: + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy135; + default: goto yy57; + } +yy135: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy136; + default: goto yy57; + } +yy136: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy77; + default: goto yy57; + } +yy137: + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'D': + case 'd': goto yy138; + default: goto yy73; + } +yy138: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy139; + default: goto yy57; + } +yy139: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy77; + default: goto yy57; + } +yy140: + yych = *++YYCURSOR; + goto yy4; +yy141: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + default: goto yy4; + } +yy142: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + default: goto yy4; + } +yy143: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; + } +yy144: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy4; + } +yy145: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + default: goto yy4; + } +yy146: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + default: goto yy4; + } +yy147: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + default: goto yy4; + } +yy148: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy149; + default: goto yy57; + } +yy149: + yyaccept = 0; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy149; + default: goto yy4; + } +yy151: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy4; + } +yy152: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy4; + } +yy153: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy4; + } +yy154: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy155: + switch (yych) { + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy57; + } +yy156: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy141; + default: goto yy4; + } +yy157: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'T': goto yy158; + default: goto yy4; + } +yy158: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '+': + case '-': goto yy159; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + default: goto yy4; + } +yy159: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy160; + case '2': goto yy161; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy162; + default: goto yy57; + } +yy160: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy162; + case ':': goto yy163; + default: goto yy4; + } +yy161: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy162; + case '5': goto yy164; + case '6': + case '7': + case '8': + case '9': goto yy140; + case ':': goto yy163; + default: goto yy4; + } +yy162: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy164; + case '6': + case '7': + case '8': + case '9': goto yy140; + case ':': goto yy163; + default: goto yy4; + } +yy163: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy164; + case '6': + case '7': + case '8': + case '9': goto yy140; + default: goto yy4; + } +yy164: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy140; + default: goto yy4; + } +yy165: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'D': + case 'd': goto yy166; + case 'E': + case 'e': goto yy168; + default: goto yy4; + } +yy166: + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'N': + case 'n': goto yy174; + default: goto yy167; + } +yy167: + { + const timelib_relunit* relunit; + DEBUG_OUTPUT("daytext"); + TIMELIB_INIT; + TIMELIB_HAVE_RELATIVE(); + TIMELIB_HAVE_WEEKDAY_RELATIVE(); + TIMELIB_UNHAVE_TIME(); + relunit = timelib_lookup_relunit((char**) &ptr); + s->time->relative.weekday = relunit->multiplier; + if (s->time->relative.weekday_behavior != 2) { + s->time->relative.weekday_behavior = 1; + } + + TIMELIB_DEINIT; + return TIMELIB_WEEKDAY; + } +yy168: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'K': + case 'k': goto yy169; + default: goto yy4; + } +yy169: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'D': + case 'd': goto yy170; + default: goto yy4; + } +yy170: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy171; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy4; + } +yy171: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'Y': + case 'y': goto yy172; + default: goto yy4; + } +yy172: + yych = *++YYCURSOR; + switch (yych) { + case 'S': + case 's': goto yy173; + default: goto yy167; + } +yy173: + yych = *++YYCURSOR; + goto yy167; +yy174: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'E': + case 'e': goto yy175; + default: goto yy4; + } +yy175: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'S': + case 's': goto yy176; + default: goto yy4; + } +yy176: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case 'D': + case 'd': goto yy177; + default: goto yy4; + } +yy177: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy178; + default: goto yy57; + } +yy178: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy173; + default: goto yy57; + } +yy179: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'D': goto yy166; + case 'E': goto yy168; + case 'a': + case 'b': + case 'c': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'd': goto yy180; + case 'e': goto yy181; + default: goto yy4; + } +yy180: + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'N': goto yy174; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'n': goto yy187; + default: goto yy167; + } +yy181: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'K': goto yy169; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'k': goto yy182; + default: goto yy4; + } +yy182: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'D': goto yy170; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'd': goto yy183; + default: goto yy4; + } +yy183: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy171; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': goto yy184; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy4; + } +yy184: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'Y': goto yy172; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy154; + case 'y': goto yy185; + default: goto yy4; + } +yy185: + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': + case '/': + case '_': goto yy148; + case 'S': goto yy173; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 's': goto yy186; + default: goto yy167; + } +yy186: + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy167; + } +yy187: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'E': goto yy175; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'e': goto yy188; + default: goto yy4; + } +yy188: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'S': goto yy176; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 's': goto yy189; + default: goto yy4; + } +yy189: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'D': goto yy177; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'd': goto yy190; + default: goto yy4; + } +yy190: + yych = *++YYCURSOR; + switch (yych) { + case 'A': goto yy178; + case 'a': goto yy191; + default: goto yy155; + } +yy191: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': goto yy173; + case 'y': goto yy186; + default: goto yy155; + } +yy192: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'C': + case 'c': goto yy193; + default: goto yy4; + } +yy193: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'E': + case 'e': goto yy201; + default: goto yy194; + } +yy194: + { + DEBUG_OUTPUT("monthtext"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->m = timelib_lookup_month((char **) &ptr); + TIMELIB_DEINIT; + return TIMELIB_DATE_TEXT; + } +yy195: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 23) YYFILL(23); + yych = *YYCURSOR; +yy196: + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy195; + case '0': + case '1': + case '2': goto yy198; + case '3': goto yy199; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy200; + default: goto yy57; + } +yy197: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy300; + case '1': + case '2': goto yy301; + case '3': goto yy302; + default: goto yy196; + } +yy198: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy214; + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': goto yy212; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy299; + case 'n': goto yy209; + case 'r': goto yy210; + case 's': goto yy207; + case 't': goto yy211; + default: goto yy57; + } +yy199: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy214; + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': goto yy212; + case '0': + case '1': goto yy299; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy206; + case 'n': goto yy209; + case 'r': goto yy210; + case 's': goto yy207; + case 't': goto yy211; + default: goto yy57; + } +yy200: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy214; + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': goto yy212; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy206; + case 'n': goto yy209; + case 'r': goto yy210; + case 's': goto yy207; + case 't': goto yy211; + default: goto yy57; + } +yy201: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'M': + case 'm': goto yy202; + default: goto yy4; + } +yy202: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'B': + case 'b': goto yy203; + default: goto yy4; + } +yy203: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case 'E': + case 'e': goto yy204; + default: goto yy4; + } +yy204: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy205; + default: goto yy57; + } +yy205: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + default: goto yy194; + } +yy206: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy296; + default: goto yy57; + } +yy207: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 't': goto yy295; + default: goto yy213; + } +yy208: + { + int length = 0; + DEBUG_OUTPUT("datetextual | datenoyear"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->m = timelib_get_month((char **) &ptr); + s->time->d = timelib_get_nr((char **) &ptr, 2); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_DATE_TEXT; + } +yy209: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'd': goto yy295; + default: goto yy213; + } +yy210: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'd': goto yy295; + default: goto yy213; + } +yy211: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'h': goto yy295; + default: goto yy213; + } +yy212: + yyaccept = 6; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18); + yych = *YYCURSOR; +yy213: + switch (yych) { + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': + case 'n': + case 'r': + case 's': + case 't': goto yy212; + case '0': goto yy286; + case '1': goto yy287; + case '2': goto yy288; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy289; + case 'T': goto yy215; + default: goto yy208; + } +yy214: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': goto yy216; + case '1': goto yy217; + case '2': goto yy218; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy219; + case 'T': + case 't': goto yy215; + default: goto yy208; + } +yy215: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy284; + case '2': goto yy285; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy274; + default: goto yy57; + } +yy216: + yych = *++YYCURSOR; + switch (yych) { + case '.': + case ':': goto yy275; + case '0': goto yy274; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy219; + default: goto yy57; + } +yy217: + yych = *++YYCURSOR; + switch (yych) { + case '.': + case ':': goto yy220; + case '0': + case '1': + case '2': goto yy219; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy274; + default: goto yy57; + } +yy218: + yych = *++YYCURSOR; + switch (yych) { + case '.': + case ':': goto yy220; + case '0': + case '1': + case '2': + case '3': + case '4': goto yy274; + default: goto yy57; + } +yy219: + yych = *++YYCURSOR; + switch (yych) { + case '.': + case ':': goto yy220; + default: goto yy57; + } +yy220: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy221; + case '6': + case '7': + case '8': + case '9': goto yy223; + default: goto yy57; + } +yy221: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy224; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy267; + default: goto yy222; + } +yy222: + { + int tz_not_found; + DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->m = timelib_get_month((char **) &ptr); + s->time->d = timelib_get_nr((char **) &ptr, 2); + + TIMELIB_HAVE_TIME(); + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = timelib_get_nr((char **) &ptr, 2); + if (*ptr == ':') { + s->time->s = timelib_get_nr((char **) &ptr, 2); + + if (*ptr == '.') { + s->time->f = timelib_get_frac_nr((char **) &ptr, 8); + } + } + + if (*ptr != '\0') { + s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); + if (tz_not_found) { + add_error(s, "The timezone could not be found in the database"); + } + } + TIMELIB_DEINIT; + return TIMELIB_SHORTDATE_WITH_TIME; + } +yy223: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy224; + default: goto yy222; + } +yy224: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy225; + case '6': goto yy226; + case '7': + case '8': + case '9': goto yy227; + default: goto yy57; + } +yy225: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy228; + default: goto yy222; + } +yy226: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy228; + default: goto yy222; + } +yy227: + yych = *++YYCURSOR; + goto yy222; +yy228: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '(': + case '+': + case '-': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy230; + default: goto yy222; + } +yy229: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); + yych = *YYCURSOR; +yy230: + switch (yych) { + case '\t': + case ' ': goto yy229; + case '(': goto yy233; + case '+': + case '-': goto yy232; + case 'A': + case 'P': goto yy234; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy235; + case 'G': goto yy231; + case 'a': + case 'p': goto yy236; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy237; + default: goto yy57; + } +yy231: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy238; + case 'M': goto yy265; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy249; + default: goto yy222; + } +yy232: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy260; + case '2': goto yy261; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy262; + default: goto yy57; + } +yy233: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy237; + default: goto yy57; + } +yy234: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy227; + case '.': goto yy243; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy238; + case 'M': goto yy244; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy249; + case 'm': goto yy259; + default: goto yy222; + } +yy235: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy238; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy249; + default: goto yy222; + } +yy236: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy227; + case '.': goto yy243; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy238; + case 'M': + case 'm': goto yy244; + default: goto yy222; + } +yy237: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy238; + default: goto yy222; + } +yy238: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy239; + default: goto yy222; + } +yy239: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy240; + default: goto yy222; + } +yy240: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy241; + default: goto yy222; + } +yy241: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy242; + default: goto yy222; + } +yy242: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + default: goto yy222; + } +yy243: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy248; + default: goto yy57; + } +yy244: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy246; + case ')': goto yy227; + case '.': goto yy245; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy239; + default: goto yy222; + } +yy245: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy246; + default: goto yy57; + } +yy246: + ++YYCURSOR; + { + DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->m = timelib_get_month((char **) &ptr); + s->time->d = timelib_get_nr((char **) &ptr, 2); + + TIMELIB_HAVE_TIME(); + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = timelib_get_nr((char **) &ptr, 2); + if (*ptr == ':' || *ptr == '.') { + s->time->s = timelib_get_nr((char **) &ptr, 2); + + if (*ptr == '.') { + s->time->f = timelib_get_frac_nr((char **) &ptr, 8); + } + } + + s->time->h += timelib_meridian((char **) &ptr, s->time->h); + TIMELIB_DEINIT; + return TIMELIB_SHORTDATE_WITH_TIME; + } +yy248: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy246; + case '.': goto yy245; + default: goto yy57; + } +yy249: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy227; + case '-': + case '/': + case '_': goto yy251; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy239; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy250; + default: goto yy222; + } +yy250: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy227; + case '-': + case '/': + case '_': goto yy251; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy240; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy254; + default: goto yy222; + } +yy251: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy252; + default: goto yy57; + } +yy252: + yyaccept = 7; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '-': + case '/': + case '_': goto yy251; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy252; + default: goto yy222; + } +yy254: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy227; + case '-': + case '/': + case '_': goto yy251; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy241; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy255; + default: goto yy222; + } +yy255: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy227; + case '-': + case '/': + case '_': goto yy251; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy242; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy256; + default: goto yy222; + } +yy256: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy227; + case '-': + case '/': + case '_': goto yy251; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy257; + default: goto yy222; + } +yy257: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '-': + case '/': + case '_': goto yy251; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy257; + default: goto yy57; + } +yy259: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy246; + case ')': goto yy227; + case '-': + case '/': + case '_': goto yy251; + case '.': goto yy245; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy239; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy250; + default: goto yy222; + } +yy260: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy262; + case ':': goto yy263; + default: goto yy222; + } +yy261: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy262; + case '5': goto yy264; + case '6': + case '7': + case '8': + case '9': goto yy227; + case ':': goto yy263; + default: goto yy222; + } +yy262: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy264; + case '6': + case '7': + case '8': + case '9': goto yy227; + case ':': goto yy263; + default: goto yy222; + } +yy263: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy264; + case '6': + case '7': + case '8': + case '9': goto yy227; + default: goto yy222; + } +yy264: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy227; + default: goto yy222; + } +yy265: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy227; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy239; + case 'T': goto yy266; + default: goto yy222; + } +yy266: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy227; + case '+': + case '-': goto yy232; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy240; + default: goto yy222; + } +yy267: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy268; + case '.': + case ':': goto yy224; + case 'A': + case 'P': + case 'a': + case 'p': goto yy270; + default: goto yy222; + } +yy268: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy268; + case 'A': + case 'P': + case 'a': + case 'p': goto yy270; + default: goto yy57; + } +yy270: + yych = *++YYCURSOR; + switch (yych) { + case '.': goto yy271; + case 'M': + case 'm': goto yy272; + default: goto yy57; + } +yy271: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy272; + default: goto yy57; + } +yy272: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy246; + case '.': goto yy273; + default: goto yy57; + } +yy273: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy246; + default: goto yy57; + } +yy274: + yych = *++YYCURSOR; + switch (yych) { + case '.': + case ':': goto yy275; + default: goto yy57; + } +yy275: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy276; + case '6': + case '7': + case '8': + case '9': goto yy277; + default: goto yy57; + } +yy276: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy278; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy277; + default: goto yy222; + } +yy277: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy278; + default: goto yy222; + } +yy278: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy279; + case '6': goto yy280; + case '7': + case '8': + case '9': goto yy227; + default: goto yy57; + } +yy279: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy281; + default: goto yy222; + } +yy280: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy281; + default: goto yy222; + } +yy281: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '(': + case '+': + case '-': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy283; + default: goto yy222; + } +yy282: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); + yych = *YYCURSOR; +yy283: + switch (yych) { + case '\t': + case ' ': goto yy282; + case '(': goto yy233; + case '+': + case '-': goto yy232; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy235; + case 'G': goto yy231; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy237; + default: goto yy57; + } +yy284: + yych = *++YYCURSOR; + switch (yych) { + case '.': + case ':': goto yy275; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy274; + default: goto yy57; + } +yy285: + yych = *++YYCURSOR; + switch (yych) { + case '.': + case ':': goto yy275; + case '0': + case '1': + case '2': + case '3': + case '4': goto yy274; + default: goto yy57; + } +yy286: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy275; + case '0': goto yy293; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy294; + default: goto yy208; + } +yy287: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy220; + case '0': + case '1': + case '2': goto yy294; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy293; + default: goto yy208; + } +yy288: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy220; + case '0': + case '1': + case '2': + case '3': + case '4': goto yy293; + case '5': + case '6': + case '7': + case '8': + case '9': goto yy290; + default: goto yy208; + } +yy289: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy220; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy290; + default: goto yy208; + } +yy290: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy291; + default: goto yy208; + } +yy291: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy292; + default: goto yy208; + } +yy292: + yych = *++YYCURSOR; + goto yy208; +yy293: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy275; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy291; + default: goto yy208; + } +yy294: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy220; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy291; + default: goto yy208; + } +yy295: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x00) goto yy214; + goto yy213; +yy296: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy297; + default: goto yy57; + } +yy297: + ++YYCURSOR; + { + int length = 0; + DEBUG_OUTPUT("datenoday"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->m = timelib_get_month((char **) &ptr); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + s->time->d = 1; + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_DATE_NO_DAY; + } +yy299: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy214; + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': goto yy212; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy296; + case 'n': goto yy209; + case 'r': goto yy210; + case 's': goto yy207; + case 't': goto yy211; + default: goto yy57; + } +yy300: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy214; + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': goto yy212; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy303; + case 'n': goto yy209; + case 'r': goto yy210; + case 's': goto yy207; + case 't': goto yy211; + default: goto yy57; + } +yy301: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy214; + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': goto yy212; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy303; + case 'n': goto yy209; + case 'r': goto yy210; + case 's': goto yy207; + case 't': goto yy211; + default: goto yy57; + } +yy302: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy214; + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': goto yy212; + case '0': + case '1': goto yy303; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy206; + case 'n': goto yy209; + case 'r': goto yy210; + case 's': goto yy207; + case 't': goto yy211; + default: goto yy57; + } +yy303: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: goto yy214; + case '\t': + case ' ': + case ',': + case '.': + case 'd': + case 'h': goto yy212; + case '-': goto yy304; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy296; + case 'n': goto yy209; + case 'r': goto yy210; + case 's': goto yy207; + case 't': goto yy211; + default: goto yy57; + } +yy304: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy305; + default: goto yy57; + } +yy305: + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy307; + default: goto yy306; + } +yy306: + { + int length = 0; + DEBUG_OUTPUT("pgtextshort"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->m = timelib_get_month((char **) &ptr); + s->time->d = timelib_get_nr((char **) &ptr, 2); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_PG_TEXT; + } +yy307: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy308; + default: goto yy306; + } +yy308: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy309; + default: goto yy306; + } +yy309: + yych = *++YYCURSOR; + goto yy306; +yy310: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'C': goto yy193; + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'c': goto yy311; + default: goto yy4; + } +yy311: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'E': goto yy201; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'e': goto yy313; + default: goto yy194; + } +yy312: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy300; + case '1': + case '2': goto yy301; + case '3': goto yy302; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy149; + default: goto yy196; + } +yy313: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'M': goto yy202; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'm': goto yy314; + default: goto yy4; + } +yy314: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'B': goto yy203; + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'b': goto yy315; + default: goto yy4; + } +yy315: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'E': goto yy204; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'e': goto yy316; + default: goto yy4; + } +yy316: + yych = *++YYCURSOR; + switch (yych) { + case 'R': goto yy205; + case 'r': goto yy317; + default: goto yy155; + } +yy317: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case '-': goto yy318; + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy194; + } +yy318: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy149; + default: goto yy196; + } +yy319: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'T': + case 't': goto yy320; + default: goto yy4; + } +yy320: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'O': + case 'o': goto yy321; + default: goto yy194; + } +yy321: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'B': + case 'b': goto yy322; + default: goto yy4; + } +yy322: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'E': + case 'e': goto yy323; + default: goto yy4; + } +yy323: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'R': + case 'r': goto yy205; + default: goto yy4; + } +yy324: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'T': goto yy320; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 't': goto yy325; + default: goto yy4; + } +yy325: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'O': goto yy321; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'o': goto yy326; + default: goto yy194; + } +yy326: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'B': goto yy322; + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'b': goto yy327; + default: goto yy4; + } +yy327: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'E': goto yy323; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'e': goto yy328; + default: goto yy4; + } +yy328: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'R': goto yy205; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'r': goto yy317; + default: goto yy4; + } +yy329: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'G': + case 'g': goto yy337; + default: goto yy4; + } +yy330: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'R': + case 'r': goto yy334; + default: goto yy4; + } +yy331: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'O': + case 'o': goto yy332; + default: goto yy4; + } +yy332: + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + default: goto yy333; + } +yy333: + { + DEBUG_OUTPUT("ago"); + TIMELIB_INIT; + s->time->relative.y = 0 - s->time->relative.y; + s->time->relative.m = 0 - s->time->relative.m; + s->time->relative.d = 0 - s->time->relative.d; + s->time->relative.h = 0 - s->time->relative.h; + s->time->relative.i = 0 - s->time->relative.i; + s->time->relative.s = 0 - s->time->relative.s; + s->time->relative.weekday = 0 - s->time->relative.weekday; + if (s->time->relative.weekday == 0) { + s->time->relative.weekday = -7; + } + if (s->time->relative.have_special_relative && s->time->relative.special.type == TIMELIB_SPECIAL_WEEKDAY) { + s->time->relative.special.amount = 0 - s->time->relative.special.amount; + } + TIMELIB_DEINIT; + return TIMELIB_AGO; + } +yy334: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'I': + case 'i': goto yy335; + default: goto yy194; + } +yy335: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'L': + case 'l': goto yy336; + default: goto yy4; + } +yy336: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy194; + } +yy337: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'U': + case 'u': goto yy338; + default: goto yy194; + } +yy338: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'S': + case 's': goto yy339; + default: goto yy4; + } +yy339: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'T': + case 't': goto yy340; + default: goto yy4; + } +yy340: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + default: goto yy194; + } +yy341: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'G': goto yy337; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'g': goto yy348; + default: goto yy4; + } +yy342: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'R': goto yy334; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'r': goto yy345; + default: goto yy4; + } +yy343: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'O': goto yy332; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'o': goto yy344; + default: goto yy4; + } +yy344: + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + default: goto yy333; + } +yy345: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'I': goto yy335; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'i': goto yy346; + default: goto yy194; + } +yy346: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'L': goto yy336; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'l': goto yy347; + default: goto yy4; + } +yy347: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy318; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy194; + } +yy348: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'U': goto yy338; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'u': goto yy349; + default: goto yy194; + } +yy349: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'S': goto yy339; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 's': goto yy350; + default: goto yy4; + } +yy350: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'T': goto yy340; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 't': goto yy351; + default: goto yy4; + } +yy351: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy318; + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy194; + } +yy352: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'L': + case 'l': goto yy359; + case 'N': + case 'n': goto yy358; + default: goto yy4; + } +yy353: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'N': + case 'n': goto yy354; + default: goto yy4; + } +yy354: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'U': + case 'u': goto yy355; + default: goto yy194; + } +yy355: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy356; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; + } +yy356: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'R': + case 'r': goto yy357; + default: goto yy4; + } +yy357: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'Y': + case 'y': goto yy205; + default: goto yy4; + } +yy358: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'E': + case 'e': goto yy360; + default: goto yy194; + } +yy359: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy143; + case 'Y': + case 'y': goto yy360; + default: goto yy194; + } +yy360: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy194; + } +yy361: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'L': goto yy359; + case 'N': goto yy358; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'l': goto yy368; + case 'n': goto yy367; + default: goto yy4; + } +yy362: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'N': goto yy354; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'n': goto yy363; + default: goto yy4; + } +yy363: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'U': goto yy355; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'u': goto yy364; + default: goto yy194; + } +yy364: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy356; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': goto yy365; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy4; + } +yy365: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'R': goto yy357; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'r': goto yy366; + default: goto yy4; + } +yy366: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'Y': goto yy205; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy154; + case 'y': goto yy317; + default: goto yy4; + } +yy367: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'E': goto yy360; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'e': goto yy369; + default: goto yy194; + } +yy368: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': goto yy143; + case 'Y': goto yy360; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy151; + case 'y': goto yy369; + default: goto yy194; + } +yy369: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy318; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy194; + } +yy370: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'I': goto yy371; + default: goto yy4; + } +yy371: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + default: goto yy4; + } +yy372: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'I': goto yy373; + default: goto yy4; + } +yy373: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'I': goto yy374; + default: goto yy4; + } +yy374: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; + } +yy375: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + default: goto yy4; + } +yy376: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'I': goto yy371; + default: goto yy4; + } +yy377: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy397; + case ':': goto yy163; + default: goto yy4; + } +yy378: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': goto yy397; + case '5': goto yy382; + case '6': + case '7': + case '8': + case '9': goto yy383; + case ':': goto yy163; + default: goto yy4; + } +yy379: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy382; + case '6': + case '7': + case '8': + case '9': goto yy383; + case ':': goto yy163; + default: goto yy4; + } +yy380: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy58; + case '+': + case '-': goto yy380; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy57; + } +yy382: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy396; + default: goto yy4; + } +yy383: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy384; + default: goto yy4; + } +yy384: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy385; + default: goto yy61; + } +yy385: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy386; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy61; + } +yy386: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy387; + case '1': goto yy388; + default: goto yy57; + } +yy387: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy389; + default: goto yy57; + } +yy388: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': goto yy389; + default: goto yy57; + } +yy389: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy390; + default: goto yy57; + } +yy390: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy391; + case '1': + case '2': goto yy392; + case '3': goto yy393; + default: goto yy57; + } +yy391: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy394; + default: goto yy57; + } +yy392: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy394; + default: goto yy57; + } +yy393: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy394; + default: goto yy57; + } +yy394: + ++YYCURSOR; +yy395: + { + DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_unsigned_nr((char **) &ptr, 4); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->d = timelib_get_nr((char **) &ptr, 2); + TIMELIB_DEINIT; + return TIMELIB_ISO_DATE; + } +yy396: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy385; + default: goto yy4; + } +yy397: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy398; + case '6': + case '7': + case '8': + case '9': goto yy396; + case ':': goto yy163; + default: goto yy4; + } +yy398: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy399; + default: goto yy4; + } +yy399: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '-': goto yy386; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy4; + } +yy400: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy676; + case '1': goto yy677; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy678; + default: goto yy402; + } +yy401: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; +yy402: + switch (yych) { + case '\t': + case ' ': goto yy401; + case '-': + case '.': goto yy517; + case 'A': + case 'a': goto yy420; + case 'D': + case 'd': goto yy406; + case 'F': + case 'f': goto yy407; + case 'H': + case 'h': goto yy64; + case 'I': goto yy415; + case 'J': + case 'j': goto yy419; + case 'M': + case 'm': goto yy405; + case 'N': + case 'n': goto yy422; + case 'O': + case 'o': goto yy421; + case 'P': + case 'p': goto yy424; + case 'S': + case 's': goto yy403; + case 'T': + case 't': goto yy69; + case 'V': goto yy417; + case 'W': + case 'w': goto yy68; + case 'X': goto yy418; + case 'Y': + case 'y': goto yy67; + default: goto yy57; + } +yy403: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy127; + case 'E': + case 'e': goto yy989; + case 'U': + case 'u': goto yy126; + default: goto yy57; + } +yy404: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy127; + case 'E': + case 'e': goto yy989; + case 'U': + case 'u': goto yy126; + case 't': goto yy669; + default: goto yy57; + } +yy405: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy532; + case 'I': + case 'i': goto yy118; + case 'O': + case 'o': goto yy117; + default: goto yy57; + } +yy406: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy114; + case 'E': + case 'e': goto yy519; + default: goto yy57; + } +yy407: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy535; + case 'O': + case 'o': goto yy99; + case 'R': + case 'r': goto yy98; + default: goto yy57; + } +yy408: + yych = *++YYCURSOR; + switch (yych) { + case 'H': goto yy70; + case 'U': + case 'u': goto yy71; + case 'h': goto yy988; + default: goto yy57; + } +yy409: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy682; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy681; + default: goto yy61; + } +yy410: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy470; + case 'd': goto yy669; + default: goto yy57; + } +yy411: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy669; + default: goto yy57; + } +yy412: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': goto yy606; + case '3': goto yy608; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy609; + case 'A': + case 'a': goto yy613; + case 'D': + case 'd': goto yy617; + case 'F': + case 'f': goto yy611; + case 'J': + case 'j': goto yy610; + case 'M': + case 'm': goto yy612; + case 'N': + case 'n': goto yy616; + case 'O': + case 'o': goto yy615; + case 'S': + case 's': goto yy614; + default: goto yy57; + } +yy413: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy556; + case '1': goto yy557; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy558; + case 'A': + case 'a': goto yy562; + case 'D': + case 'd': goto yy566; + case 'F': + case 'f': goto yy560; + case 'J': + case 'j': goto yy559; + case 'M': + case 'm': goto yy561; + case 'N': + case 'n': goto yy565; + case 'O': + case 'o': goto yy564; + case 'S': + case 's': goto yy563; + default: goto yy518; + } +yy414: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy508; + case '1': goto yy509; + case '2': + case '3': + case '4': + case '5': goto yy510; + case '6': + case '7': + case '8': + case '9': goto yy511; + default: goto yy518; + } +yy415: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': goto yy507; + case 'V': + case 'X': goto yy480; + default: goto yy416; + } +yy416: + { + DEBUG_OUTPUT("datenoyearrev"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->d = timelib_get_nr((char **) &ptr, 2); + timelib_skip_day_suffix((char **) &ptr); + s->time->m = timelib_get_month((char **) &ptr); + TIMELIB_DEINIT; + return TIMELIB_DATE_TEXT; + } +yy417: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': goto yy505; + default: goto yy416; + } +yy418: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': goto yy504; + default: goto yy416; + } +yy419: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy497; + case 'U': + case 'u': goto yy496; + default: goto yy57; + } +yy420: + yych = *++YYCURSOR; + switch (yych) { + case '.': goto yy425; + case 'M': + case 'm': goto yy426; + case 'P': + case 'p': goto yy490; + case 'U': + case 'u': goto yy489; + default: goto yy57; + } +yy421: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy484; + default: goto yy57; + } +yy422: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy470; + default: goto yy57; + } +yy423: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy430; + case '6': + case '7': + case '8': + case '9': goto yy432; + default: goto yy57; + } +yy424: + yych = *++YYCURSOR; + switch (yych) { + case '.': goto yy425; + case 'M': + case 'm': goto yy426; + default: goto yy57; + } +yy425: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy426; + default: goto yy57; + } +yy426: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy428; + case '.': goto yy427; + default: goto yy57; + } +yy427: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy428; + default: goto yy57; + } +yy428: + ++YYCURSOR; + { + DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12"); + TIMELIB_INIT; + TIMELIB_HAVE_TIME(); + s->time->h = timelib_get_nr((char **) &ptr, 2); + if (*ptr == ':' || *ptr == '.') { + s->time->i = timelib_get_nr((char **) &ptr, 2); + if (*ptr == ':' || *ptr == '.') { + s->time->s = timelib_get_nr((char **) &ptr, 2); + } + } + s->time->h += timelib_meridian((char **) &ptr, s->time->h); + TIMELIB_DEINIT; + return TIMELIB_TIME12; + } +yy430: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy433; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy447; + default: goto yy431; + } +yy431: + { + int tz_not_found; + DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long"); + TIMELIB_INIT; + TIMELIB_HAVE_TIME(); + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = timelib_get_nr((char **) &ptr, 2); + if (*ptr == ':' || *ptr == '.') { + s->time->s = timelib_get_nr((char **) &ptr, 2); + + if (*ptr == '.') { + s->time->f = timelib_get_frac_nr((char **) &ptr, 8); + } + } + + if (*ptr != '\0') { + s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); + if (tz_not_found) { + add_error(s, "The timezone could not be found in the database"); + } + } + TIMELIB_DEINIT; + return TIMELIB_TIME24_WITH_ZONE; + } +yy432: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': + case ':': goto yy433; + default: goto yy431; + } +yy433: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy434; + case '6': goto yy435; + case '7': + case '8': + case '9': goto yy436; + default: goto yy57; + } +yy434: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy440; + default: goto yy431; + } +yy435: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + case '0': goto yy440; + default: goto yy431; + } +yy436: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + default: goto yy431; + } +yy437: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy438; + default: goto yy57; + } +yy438: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy438; + default: goto yy431; + } +yy440: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy441; + case '.': goto yy437; + case 'A': + case 'P': + case 'a': + case 'p': goto yy443; + default: goto yy431; + } +yy441: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy441; + case 'A': + case 'P': + case 'a': + case 'p': goto yy443; + default: goto yy57; + } +yy443: + yych = *++YYCURSOR; + switch (yych) { + case '.': goto yy444; + case 'M': + case 'm': goto yy445; + default: goto yy57; + } +yy444: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy445; + default: goto yy57; + } +yy445: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy428; + case '.': goto yy446; + default: goto yy57; + } +yy446: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy428; + default: goto yy57; + } +yy447: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy448; + case '.': goto yy433; + case ':': goto yy451; + case 'A': + case 'P': + case 'a': + case 'p': goto yy450; + default: goto yy431; + } +yy448: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy448; + case 'A': + case 'P': + case 'a': + case 'p': goto yy450; + default: goto yy57; + } +yy450: + yych = *++YYCURSOR; + switch (yych) { + case '.': goto yy467; + case 'M': + case 'm': goto yy468; + default: goto yy57; + } +yy451: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy452; + case '6': goto yy453; + case '7': + case '8': + case '9': goto yy436; + default: goto yy57; + } +yy452: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy454; + default: goto yy431; + } +yy453: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + case '0': goto yy454; + default: goto yy431; + } +yy454: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy441; + case '.': goto yy455; + case ':': goto yy456; + case 'A': + case 'P': + case 'a': + case 'p': goto yy443; + default: goto yy431; + } +yy455: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy465; + default: goto yy57; + } +yy456: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy457; + default: goto yy57; + } +yy457: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy457; + case 'A': + case 'P': + case 'a': + case 'p': goto yy459; + default: goto yy57; + } +yy459: + yych = *++YYCURSOR; + switch (yych) { + case '.': goto yy460; + case 'M': + case 'm': goto yy461; + default: goto yy57; + } +yy460: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy461; + default: goto yy57; + } +yy461: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy463; + case '.': goto yy462; + default: goto yy57; + } +yy462: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy463; + default: goto yy57; + } +yy463: + ++YYCURSOR; + { + DEBUG_OUTPUT("mssqltime"); + TIMELIB_INIT; + TIMELIB_HAVE_TIME(); + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = timelib_get_nr((char **) &ptr, 2); + if (*ptr == ':' || *ptr == '.') { + s->time->s = timelib_get_nr((char **) &ptr, 2); + + if (*ptr == ':' || *ptr == '.') { + s->time->f = timelib_get_frac_nr((char **) &ptr, 8); + } + } + timelib_eat_spaces((char **) &ptr); + s->time->h += timelib_meridian((char **) &ptr, s->time->h); + TIMELIB_DEINIT; + return TIMELIB_TIME24_WITH_ZONE; + } +yy465: + yyaccept = 10; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy465; + case 'A': + case 'P': + case 'a': + case 'p': goto yy459; + default: goto yy431; + } +yy467: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy468; + default: goto yy57; + } +yy468: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy428; + case '.': goto yy469; + default: goto yy57; + } +yy469: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy428; + default: goto yy57; + } +yy470: + yych = *++YYCURSOR; + switch (yych) { + case 'V': + case 'v': goto yy471; + default: goto yy57; + } +yy471: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'E': + case 'e': goto yy476; + default: goto yy416; + } +yy472: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; +yy473: + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + default: goto yy57; + } +yy474: + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy481; + default: goto yy475; + } +yy475: + { + int length = 0; + DEBUG_OUTPUT("datefull"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->d = timelib_get_nr((char **) &ptr, 2); + timelib_skip_day_suffix((char **) &ptr); + s->time->m = timelib_get_month((char **) &ptr); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_DATE_FULL; + } +yy476: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy477; + default: goto yy57; + } +yy477: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy478; + default: goto yy57; + } +yy478: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy479; + default: goto yy57; + } +yy479: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy480; + default: goto yy57; + } +yy480: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + default: goto yy416; + } +yy481: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy482; + default: goto yy475; + } +yy482: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy483; + default: goto yy475; + } +yy483: + yych = *++YYCURSOR; + goto yy475; +yy484: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy485; + default: goto yy57; + } +yy485: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'O': + case 'o': goto yy486; + default: goto yy416; + } +yy486: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy487; + default: goto yy57; + } +yy487: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy488; + default: goto yy57; + } +yy488: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy480; + default: goto yy57; + } +yy489: + yych = *++YYCURSOR; + switch (yych) { + case 'G': + case 'g': goto yy493; + default: goto yy57; + } +yy490: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy491; + default: goto yy57; + } +yy491: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': + case 'i': goto yy492; + default: goto yy416; + } +yy492: + yych = *++YYCURSOR; + switch (yych) { + case 'L': + case 'l': goto yy480; + default: goto yy57; + } +yy493: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'U': + case 'u': goto yy494; + default: goto yy416; + } +yy494: + yych = *++YYCURSOR; + switch (yych) { + case 'S': + case 's': goto yy495; + default: goto yy57; + } +yy495: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy480; + default: goto yy57; + } +yy496: + yych = *++YYCURSOR; + switch (yych) { + case 'L': + case 'l': goto yy503; + case 'N': + case 'n': goto yy502; + default: goto yy57; + } +yy497: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy498; + default: goto yy57; + } +yy498: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'U': + case 'u': goto yy499; + default: goto yy416; + } +yy499: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy500; + default: goto yy57; + } +yy500: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy501; + default: goto yy57; + } +yy501: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy480; + default: goto yy57; + } +yy502: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'E': + case 'e': goto yy480; + default: goto yy416; + } +yy503: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'Y': + case 'y': goto yy480; + default: goto yy416; + } +yy504: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': goto yy480; + default: goto yy416; + } +yy505: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': goto yy506; + default: goto yy416; + } +yy506: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': goto yy480; + default: goto yy416; + } +yy507: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': goto yy480; + default: goto yy416; + } +yy508: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy542; + case '.': goto yy541; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy555; + case ':': goto yy433; + default: goto yy431; + } +yy509: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy542; + case '.': goto yy541; + case '0': + case '1': + case '2': goto yy555; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy554; + case ':': goto yy433; + default: goto yy431; + } +yy510: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy542; + case '.': goto yy541; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy554; + case ':': goto yy433; + default: goto yy431; + } +yy511: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy542; + case '.': goto yy541; + case ':': goto yy433; + default: goto yy431; + } +yy512: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy535; + default: goto yy57; + } +yy513: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy532; + default: goto yy57; + } +yy514: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy490; + case 'U': + case 'u': goto yy489; + default: goto yy57; + } +yy515: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy525; + default: goto yy57; + } +yy516: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy519; + default: goto yy57; + } +yy517: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; +yy518: + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy517; + case 'A': + case 'a': goto yy514; + case 'D': + case 'd': goto yy516; + case 'F': + case 'f': goto yy512; + case 'I': goto yy415; + case 'J': + case 'j': goto yy419; + case 'M': + case 'm': goto yy513; + case 'N': + case 'n': goto yy422; + case 'O': + case 'o': goto yy421; + case 'S': + case 's': goto yy515; + case 'V': goto yy417; + case 'X': goto yy418; + default: goto yy57; + } +yy519: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy520; + default: goto yy57; + } +yy520: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'E': + case 'e': goto yy521; + default: goto yy416; + } +yy521: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy522; + default: goto yy57; + } +yy522: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy523; + default: goto yy57; + } +yy523: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy524; + default: goto yy57; + } +yy524: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy480; + default: goto yy57; + } +yy525: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy526; + default: goto yy57; + } +yy526: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'T': + case 't': goto yy527; + default: goto yy416; + } +yy527: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'E': + case 'e': goto yy528; + default: goto yy416; + } +yy528: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy529; + default: goto yy57; + } +yy529: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy530; + default: goto yy57; + } +yy530: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy531; + default: goto yy57; + } +yy531: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy480; + default: goto yy57; + } +yy532: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy533; + case 'Y': + case 'y': goto yy480; + default: goto yy57; + } +yy533: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'C': + case 'c': goto yy534; + default: goto yy416; + } +yy534: + yych = *++YYCURSOR; + switch (yych) { + case 'H': + case 'h': goto yy480; + default: goto yy57; + } +yy535: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy536; + default: goto yy57; + } +yy536: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy472; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'R': + case 'r': goto yy537; + default: goto yy416; + } +yy537: + yych = *++YYCURSOR; + switch (yych) { + case 'U': + case 'u': goto yy538; + default: goto yy57; + } +yy538: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy539; + default: goto yy57; + } +yy539: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy540; + default: goto yy57; + } +yy540: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy480; + default: goto yy57; + } +yy541: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy548; + case '6': goto yy549; + case '7': + case '8': + case '9': goto yy550; + default: goto yy57; + } +yy542: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy543; + default: goto yy57; + } +yy543: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy544; + default: goto yy57; + } +yy544: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy545; + default: goto yy57; + } +yy545: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy546; + default: goto yy57; + } +yy546: + ++YYCURSOR; + { + DEBUG_OUTPUT("pointed date YYYY"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->d = timelib_get_nr((char **) &ptr, 2); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->y = timelib_get_nr((char **) &ptr, 4); + TIMELIB_DEINIT; + return TIMELIB_DATE_FULL_POINTED; + } +yy548: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy553; + default: goto yy431; + } +yy549: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + case '0': goto yy553; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy551; + default: goto yy431; + } +yy550: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy551; + default: goto yy431; + } +yy551: + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy545; + default: goto yy552; + } +yy552: + { + int length = 0; + DEBUG_OUTPUT("pointed date YY"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->d = timelib_get_nr((char **) &ptr, 2); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length); + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_DATE_FULL_POINTED; + } +yy553: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy441; + case '.': goto yy437; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy545; + case 'A': + case 'P': + case 'a': + case 'p': goto yy443; + default: goto yy431; + } +yy554: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy448; + case '.': + case ':': goto yy433; + case 'A': + case 'P': + case 'a': + case 'p': goto yy450; + default: goto yy431; + } +yy555: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy448; + case '-': goto yy542; + case '.': goto yy541; + case ':': goto yy433; + case 'A': + case 'P': + case 'a': + case 'p': goto yy450; + default: goto yy431; + } +yy556: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy595; + case '.': goto yy542; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy558; + default: goto yy57; + } +yy557: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy595; + case '.': goto yy542; + case '0': + case '1': + case '2': goto yy558; + default: goto yy57; + } +yy558: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy595; + case '.': goto yy542; + default: goto yy57; + } +yy559: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy591; + case 'U': + case 'u': goto yy590; + default: goto yy57; + } +yy560: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy588; + default: goto yy57; + } +yy561: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy585; + default: goto yy57; + } +yy562: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy582; + case 'U': + case 'u': goto yy581; + default: goto yy57; + } +yy563: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy578; + default: goto yy57; + } +yy564: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy576; + default: goto yy57; + } +yy565: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy574; + default: goto yy57; + } +yy566: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy567; + default: goto yy57; + } +yy567: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy568; + default: goto yy57; + } +yy568: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'E': + case 'e': goto yy521; + default: goto yy416; + } +yy569: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy570; + case '1': + case '2': goto yy571; + case '3': goto yy572; + default: goto yy473; + } +yy570: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy573; + default: goto yy475; + } +yy571: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy573; + default: goto yy475; + } +yy572: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy573; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy481; + default: goto yy475; + } +yy573: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy482; + default: goto yy475; + } +yy574: + yych = *++YYCURSOR; + switch (yych) { + case 'V': + case 'v': goto yy575; + default: goto yy57; + } +yy575: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'E': + case 'e': goto yy476; + default: goto yy416; + } +yy576: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy577; + default: goto yy57; + } +yy577: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'O': + case 'o': goto yy486; + default: goto yy416; + } +yy578: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy579; + default: goto yy57; + } +yy579: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'T': + case 't': goto yy580; + default: goto yy416; + } +yy580: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'E': + case 'e': goto yy528; + default: goto yy416; + } +yy581: + yych = *++YYCURSOR; + switch (yych) { + case 'G': + case 'g': goto yy584; + default: goto yy57; + } +yy582: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy583; + default: goto yy57; + } +yy583: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'I': + case 'i': goto yy492; + default: goto yy416; + } +yy584: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'U': + case 'u': goto yy494; + default: goto yy416; + } +yy585: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy586; + case 'Y': + case 'y': goto yy587; + default: goto yy57; + } +yy586: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'C': + case 'c': goto yy534; + default: goto yy416; + } +yy587: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + default: goto yy416; + } +yy588: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy589; + default: goto yy57; + } +yy589: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'R': + case 'r': goto yy537; + default: goto yy416; + } +yy590: + yych = *++YYCURSOR; + switch (yych) { + case 'L': + case 'l': goto yy594; + case 'N': + case 'n': goto yy593; + default: goto yy57; + } +yy591: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy592; + default: goto yy57; + } +yy592: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'U': + case 'u': goto yy499; + default: goto yy416; + } +yy593: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'E': + case 'e': goto yy480; + default: goto yy416; + } +yy594: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': goto yy472; + case '-': goto yy569; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy474; + case 'Y': + case 'y': goto yy480; + default: goto yy416; + } +yy595: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': goto yy596; + case '3': goto yy598; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy599; + default: goto yy57; + } +yy596: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy605; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy597: + { + int length = 0; + DEBUG_OUTPUT("gnudateshort"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->d = timelib_get_nr((char **) &ptr, 2); + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_ISO_DATE; + } +yy598: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': goto yy605; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy544; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy599: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy544; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy600: + yych = *++YYCURSOR; + switch (yych) { + case 't': goto yy604; + default: goto yy57; + } +yy601: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy604; + default: goto yy57; + } +yy602: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy604; + default: goto yy57; + } +yy603: + yych = *++YYCURSOR; + switch (yych) { + case 'h': goto yy604; + default: goto yy57; + } +yy604: + yych = *++YYCURSOR; + goto yy597; +yy605: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy545; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy606: + yyaccept = 13; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '/': goto yy663; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy609; + case 'n': goto yy660; + case 'r': goto yy661; + case 's': goto yy659; + case 't': goto yy662; + default: goto yy607; + } +yy607: + { + int length = 0; + DEBUG_OUTPUT("americanshort | american"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->d = timelib_get_nr((char **) &ptr, 2); + if (*ptr == '/') { + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + TIMELIB_PROCESS_YEAR(s->time->y, length); + } + TIMELIB_DEINIT; + return TIMELIB_AMERICAN; + } +yy608: + yyaccept = 13; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '/': goto yy663; + case '0': + case '1': goto yy609; + case 'n': goto yy660; + case 'r': goto yy661; + case 's': goto yy659; + case 't': goto yy662; + default: goto yy607; + } +yy609: + yyaccept = 13; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '/': goto yy663; + case 'n': goto yy660; + case 'r': goto yy661; + case 's': goto yy659; + case 't': goto yy662; + default: goto yy607; + } +yy610: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy658; + case 'U': + case 'u': goto yy657; + default: goto yy57; + } +yy611: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy656; + default: goto yy57; + } +yy612: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy655; + default: goto yy57; + } +yy613: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy654; + case 'U': + case 'u': goto yy653; + default: goto yy57; + } +yy614: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy651; + default: goto yy57; + } +yy615: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy650; + default: goto yy57; + } +yy616: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy649; + default: goto yy57; + } +yy617: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy618; + default: goto yy57; + } +yy618: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy619; + default: goto yy57; + } +yy619: + yych = *++YYCURSOR; + switch (yych) { + case '/': goto yy620; + default: goto yy57; + } +yy620: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy621; + default: goto yy57; + } +yy621: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy622; + default: goto yy57; + } +yy622: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy623; + default: goto yy57; + } +yy623: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy624; + default: goto yy57; + } +yy624: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy625; + default: goto yy57; + } +yy625: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy626; + case '2': goto yy627; + default: goto yy57; + } +yy626: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy628; + default: goto yy57; + } +yy627: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy628; + default: goto yy57; + } +yy628: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy629; + default: goto yy57; + } +yy629: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy630; + default: goto yy57; + } +yy630: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy631; + default: goto yy57; + } +yy631: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy632; + default: goto yy57; + } +yy632: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy633; + case '6': goto yy634; + default: goto yy57; + } +yy633: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy635; + default: goto yy57; + } +yy634: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy635; + default: goto yy57; + } +yy635: + yych = *++YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy636; + default: goto yy57; + } +yy636: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy636; + case '+': + case '-': goto yy639; + case 'G': goto yy638; + default: goto yy57; + } +yy638: + yych = *++YYCURSOR; + switch (yych) { + case 'M': goto yy647; + default: goto yy57; + } +yy639: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy640; + case '2': goto yy642; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy643; + default: goto yy57; + } +yy640: + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy643; + case ':': goto yy644; + default: goto yy641; + } +yy641: + { + int tz_not_found; + DEBUG_OUTPUT("clf"); + TIMELIB_INIT; + TIMELIB_HAVE_TIME(); + TIMELIB_HAVE_DATE(); + s->time->d = timelib_get_nr((char **) &ptr, 2); + s->time->m = timelib_get_month((char **) &ptr); + s->time->y = timelib_get_nr((char **) &ptr, 4); + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = timelib_get_nr((char **) &ptr, 2); + s->time->s = timelib_get_nr((char **) &ptr, 2); + s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); + if (tz_not_found) { + add_error(s, "The timezone could not be found in the database"); + } + TIMELIB_DEINIT; + return TIMELIB_CLF; + } +yy642: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy643; + case '5': goto yy645; + case '6': + case '7': + case '8': + case '9': goto yy646; + case ':': goto yy644; + default: goto yy641; + } +yy643: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy645; + case '6': + case '7': + case '8': + case '9': goto yy646; + case ':': goto yy644; + default: goto yy641; + } +yy644: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy645; + case '6': + case '7': + case '8': + case '9': goto yy646; + default: goto yy641; + } +yy645: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy646; + default: goto yy641; + } +yy646: + yych = *++YYCURSOR; + goto yy641; +yy647: + yych = *++YYCURSOR; + switch (yych) { + case 'T': goto yy648; + default: goto yy57; + } +yy648: + yych = *++YYCURSOR; + switch (yych) { + case '+': + case '-': goto yy639; + default: goto yy57; + } +yy649: + yych = *++YYCURSOR; + switch (yych) { + case 'V': + case 'v': goto yy619; + default: goto yy57; + } +yy650: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy619; + default: goto yy57; + } +yy651: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy652; + default: goto yy57; + } +yy652: + yych = *++YYCURSOR; + switch (yych) { + case '/': goto yy620; + case 'T': + case 't': goto yy619; + default: goto yy57; + } +yy653: + yych = *++YYCURSOR; + switch (yych) { + case 'G': + case 'g': goto yy619; + default: goto yy57; + } +yy654: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy619; + default: goto yy57; + } +yy655: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'Y': + case 'r': + case 'y': goto yy619; + default: goto yy57; + } +yy656: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy619; + default: goto yy57; + } +yy657: + yych = *++YYCURSOR; + switch (yych) { + case 'L': + case 'N': + case 'l': + case 'n': goto yy619; + default: goto yy57; + } +yy658: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy619; + default: goto yy57; + } +yy659: + yych = *++YYCURSOR; + switch (yych) { + case 't': goto yy668; + default: goto yy57; + } +yy660: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy668; + default: goto yy57; + } +yy661: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy668; + default: goto yy57; + } +yy662: + yych = *++YYCURSOR; + switch (yych) { + case 'h': goto yy668; + default: goto yy57; + } +yy663: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy664; + default: goto yy57; + } +yy664: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy665; + default: goto yy607; + } +yy665: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy666; + default: goto yy607; + } +yy666: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy667; + default: goto yy607; + } +yy667: + yych = *++YYCURSOR; + goto yy607; +yy668: + yyaccept = 13; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '/': goto yy663; + default: goto yy607; + } +yy669: + yych = *++YYCURSOR; + switch (yych) { + case '\t': + case '.': goto yy671; + case '-': goto yy672; + case '/': goto yy670; + default: goto yy518; + } +yy670: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy613; + case 'D': + case 'd': goto yy617; + case 'F': + case 'f': goto yy611; + case 'J': + case 'j': goto yy610; + case 'M': + case 'm': goto yy612; + case 'N': + case 'n': goto yy616; + case 'O': + case 'o': goto yy615; + case 'S': + case 's': goto yy614; + default: goto yy57; + } +yy671: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy676; + case '1': goto yy677; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy678; + default: goto yy518; + } +yy672: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy673; + case '1': goto yy674; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy675; + default: goto yy518; + } +yy673: + yych = *++YYCURSOR; + switch (yych) { + case '-': + case '.': goto yy542; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy675; + default: goto yy57; + } +yy674: + yych = *++YYCURSOR; + switch (yych) { + case '-': + case '.': goto yy542; + case '0': + case '1': + case '2': goto yy675; + default: goto yy57; + } +yy675: + yych = *++YYCURSOR; + switch (yych) { + case '-': + case '.': goto yy542; + default: goto yy57; + } +yy676: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy542; + case '.': goto yy679; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy678; + default: goto yy57; + } +yy677: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy542; + case '.': goto yy679; + case '0': + case '1': + case '2': goto yy678; + default: goto yy57; + } +yy678: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy542; + case '.': goto yy679; + default: goto yy57; + } +yy679: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy680; + default: goto yy57; + } +yy680: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy551; + default: goto yy57; + } +yy681: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy725; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy723; + default: goto yy61; + } +yy682: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy691; + case '1': goto yy692; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy693; + case 'A': + case 'a': goto yy686; + case 'D': + case 'd': goto yy690; + case 'F': + case 'f': goto yy684; + case 'J': + case 'j': goto yy683; + case 'M': + case 'm': goto yy685; + case 'N': + case 'n': goto yy689; + case 'O': + case 'o': goto yy688; + case 'S': + case 's': goto yy687; + default: goto yy57; + } +yy683: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy722; + case 'U': + case 'u': goto yy721; + default: goto yy57; + } +yy684: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy720; + default: goto yy57; + } +yy685: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy719; + default: goto yy57; + } +yy686: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy718; + case 'U': + case 'u': goto yy717; + default: goto yy57; + } +yy687: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy715; + default: goto yy57; + } +yy688: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy714; + default: goto yy57; + } +yy689: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy713; + default: goto yy57; + } +yy690: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy705; + default: goto yy57; + } +yy691: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy694; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy698; + default: goto yy57; + } +yy692: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy694; + case '0': + case '1': + case '2': goto yy698; + default: goto yy57; + } +yy693: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy694; + default: goto yy57; + } +yy694: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': goto yy695; + case '3': goto yy696; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy697; + default: goto yy57; + } +yy695: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy697; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy696: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': goto yy697; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy697: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy698: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy699; + default: goto yy57; + } +yy699: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy700; + case '1': + case '2': goto yy701; + case '3': goto yy702; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy697; + default: goto yy57; + } +yy700: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy703; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy701: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy703; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy702: + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': goto yy703; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; + } +yy703: + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy704; + } +yy704: + { + int length = 0; + DEBUG_OUTPUT("iso8601date2"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->d = timelib_get_nr((char **) &ptr, 2); + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_ISO_DATE; + } +yy705: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy706; + default: goto yy57; + } +yy706: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy707; + default: goto yy57; + } +yy707: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy708; + case '1': + case '2': goto yy709; + case '3': goto yy710; + default: goto yy57; + } +yy708: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy711; + default: goto yy57; + } +yy709: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy711; + default: goto yy57; + } +yy710: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy711; + default: goto yy57; + } +yy711: + ++YYCURSOR; + { + int length = 0; + DEBUG_OUTPUT("pgtextreverse"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + s->time->m = timelib_get_month((char **) &ptr); + s->time->d = timelib_get_nr((char **) &ptr, 2); + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_PG_TEXT; + } +yy713: + yych = *++YYCURSOR; + switch (yych) { + case 'V': + case 'v': goto yy706; + default: goto yy57; + } +yy714: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy706; + default: goto yy57; + } +yy715: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy716; + default: goto yy57; + } +yy716: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy707; + case 'T': + case 't': goto yy706; + default: goto yy57; + } +yy717: + yych = *++YYCURSOR; + switch (yych) { + case 'G': + case 'g': goto yy706; + default: goto yy57; + } +yy718: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy706; + default: goto yy57; + } +yy719: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'Y': + case 'r': + case 'y': goto yy706; + default: goto yy57; + } +yy720: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy706; + default: goto yy57; + } +yy721: + yych = *++YYCURSOR; + switch (yych) { + case 'L': + case 'N': + case 'l': + case 'n': goto yy706; + default: goto yy57; + } +yy722: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy706; + default: goto yy57; + } +yy723: + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'A': + case 'D': + case 'F': + case 'H': + case 'I': + case 'J': + case 'M': + case 'N': + case 'O': + case 'S': + case 'T': + case 'V': + case 'X': + case 'Y': + case 'a': + case 'd': + case 'f': + case 'h': + case 'j': + case 'm': + case 'n': + case 'o': + case 's': + case 't': + case 'w': + case 'y': goto yy731; + case '-': goto yy728; + case '.': goto yy732; + case '/': goto yy729; + case '0': goto yy745; + case '1': goto yy746; + case '2': goto yy748; + case '3': goto yy749; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + case ':': goto yy747; + case 'W': goto yy750; + default: goto yy724; + } +yy724: + { + DEBUG_OUTPUT("year4"); + TIMELIB_INIT; + s->time->y = timelib_get_nr((char **) &ptr, 4); + TIMELIB_DEINIT; + return TIMELIB_CLF; + } +yy725: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy726; + case '1': goto yy727; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy693; + case 'A': + case 'a': goto yy686; + case 'D': + case 'd': goto yy690; + case 'F': + case 'f': goto yy684; + case 'J': + case 'j': goto yy683; + case 'M': + case 'm': goto yy685; + case 'N': + case 'n': goto yy689; + case 'O': + case 'o': goto yy688; + case 'S': + case 's': goto yy687; + default: goto yy57; + } +yy726: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy694; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy693; + default: goto yy57; + } +yy727: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy694; + case '0': + case '1': + case '2': goto yy693; + default: goto yy57; + } +yy728: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy913; + case '1': goto yy915; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy916; + case 'A': + case 'a': goto yy907; + case 'D': + case 'd': goto yy911; + case 'F': + case 'f': goto yy905; + case 'J': + case 'j': goto yy904; + case 'M': + case 'm': goto yy906; + case 'N': + case 'n': goto yy910; + case 'O': + case 'o': goto yy909; + case 'S': + case 's': goto yy908; + case 'W': goto yy912; + default: goto yy879; + } +yy729: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy887; + case '1': goto yy888; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy889; + default: goto yy57; + } +yy730: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; +yy731: + switch (yych) { + case '\t': + case ' ': goto yy730; + case '-': + case '.': goto yy878; + case 'A': + case 'a': goto yy740; + case 'D': + case 'd': goto yy744; + case 'F': + case 'f': goto yy738; + case 'H': + case 'h': goto yy64; + case 'I': goto yy733; + case 'J': + case 'j': goto yy737; + case 'M': + case 'm': goto yy739; + case 'N': + case 'n': goto yy743; + case 'O': + case 'o': goto yy742; + case 'S': + case 's': goto yy741; + case 'T': + case 't': goto yy69; + case 'V': goto yy735; + case 'W': + case 'w': goto yy68; + case 'X': goto yy736; + case 'Y': + case 'y': goto yy67; + default: goto yy57; + } +yy732: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy871; + case '1': + case '2': goto yy872; + case '3': goto yy873; + default: goto yy879; + } +yy733: + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case 'I': goto yy870; + case 'V': + case 'X': goto yy824; + default: goto yy734; + } +yy734: + { + int length = 0; + DEBUG_OUTPUT("datenodayrev"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + s->time->m = timelib_get_month((char **) &ptr); + s->time->d = 1; + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_DATE_NO_DAY; + } +yy735: + yych = *++YYCURSOR; + switch (yych) { + case 'I': goto yy868; + default: goto yy734; + } +yy736: + yych = *++YYCURSOR; + switch (yych) { + case 'I': goto yy867; + default: goto yy734; + } +yy737: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy860; + case 'U': + case 'u': goto yy859; + default: goto yy57; + } +yy738: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy853; + case 'O': + case 'o': goto yy99; + case 'R': + case 'r': goto yy98; + default: goto yy57; + } +yy739: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy850; + case 'I': + case 'i': goto yy118; + case 'O': + case 'o': goto yy117; + default: goto yy57; + } +yy740: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy844; + case 'U': + case 'u': goto yy843; + default: goto yy57; + } +yy741: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy127; + case 'E': + case 'e': goto yy836; + case 'U': + case 'u': goto yy126; + default: goto yy57; + } +yy742: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy831; + default: goto yy57; + } +yy743: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy825; + default: goto yy57; + } +yy744: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy114; + case 'E': + case 'e': goto yy818; + default: goto yy57; + } +yy745: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy815; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy816; + default: goto yy61; + } +yy746: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': goto yy784; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy763; + default: goto yy61; + } +yy747: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy764; + case '1': goto yy765; + default: goto yy57; + } +yy748: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy763; + default: goto yy61; + } +yy749: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy759; + case '6': goto yy760; + case '7': + case '8': + case '9': goto yy55; + default: goto yy61; + } +yy750: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy751; + case '1': + case '2': + case '3': + case '4': goto yy752; + case '5': goto yy753; + case 'E': + case 'e': goto yy83; + default: goto yy57; + } +yy751: + yych = *++YYCURSOR; + switch (yych) { + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy754; + default: goto yy57; + } +yy752: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy754; + default: goto yy57; + } +yy753: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': goto yy754; + default: goto yy57; + } +yy754: + yyaccept = 16; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy756; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': goto yy757; + default: goto yy755; + } +yy755: + { + timelib_sll w, d; + DEBUG_OUTPUT("isoweek"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + TIMELIB_HAVE_RELATIVE(); + + s->time->y = timelib_get_nr((char **) &ptr, 4); + w = timelib_get_nr((char **) &ptr, 2); + d = 1; + s->time->m = 1; + s->time->d = 1; + s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d); + + TIMELIB_DEINIT; + return TIMELIB_ISO_WEEK; + } +yy756: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': goto yy757; + default: goto yy57; + } +yy757: + ++YYCURSOR; + { + timelib_sll w, d; + DEBUG_OUTPUT("isoweekday"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + TIMELIB_HAVE_RELATIVE(); + + s->time->y = timelib_get_nr((char **) &ptr, 4); + w = timelib_get_nr((char **) &ptr, 2); + d = timelib_get_nr((char **) &ptr, 1); + s->time->m = 1; + s->time->d = 1; + s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d); + + TIMELIB_DEINIT; + return TIMELIB_ISO_WEEK; + } +yy759: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy61; + } +yy760: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': goto yy761; + case '7': + case '8': + case '9': goto yy55; + default: goto yy61; + } +yy761: + yyaccept = 17; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy762; + } +yy762: + { + int length = 0; + DEBUG_OUTPUT("pgydotd"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + s->time->d = timelib_get_nr((char **) &ptr, 3); + s->time->m = 1; + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_PG_YEARDAY; + } +yy763: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy61; + } +yy764: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy766; + default: goto yy57; + } +yy765: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': goto yy766; + default: goto yy57; + } +yy766: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy767; + default: goto yy57; + } +yy767: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy768; + case '1': + case '2': goto yy769; + case '3': goto yy770; + default: goto yy57; + } +yy768: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy771; + default: goto yy57; + } +yy769: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy771; + default: goto yy57; + } +yy770: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy771; + default: goto yy57; + } +yy771: + yych = *++YYCURSOR; + switch (yych) { + case ' ': goto yy772; + default: goto yy57; + } +yy772: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy773; + case '2': goto yy774; + default: goto yy57; + } +yy773: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy775; + default: goto yy57; + } +yy774: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy775; + default: goto yy57; + } +yy775: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy776; + default: goto yy57; + } +yy776: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy777; + default: goto yy57; + } +yy777: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy778; + default: goto yy57; + } +yy778: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy779; + default: goto yy57; + } +yy779: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy780; + case '6': goto yy781; + default: goto yy57; + } +yy780: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy782; + default: goto yy57; + } +yy781: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy782; + default: goto yy57; + } +yy782: + ++YYCURSOR; +yy783: + { + int tz_not_found; + DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif"); + TIMELIB_INIT; + TIMELIB_HAVE_TIME(); + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_nr((char **) &ptr, 4); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->d = timelib_get_nr((char **) &ptr, 2); + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = timelib_get_nr((char **) &ptr, 2); + s->time->s = timelib_get_nr((char **) &ptr, 2); + if (*ptr == '.') { + s->time->f = timelib_get_frac_nr((char **) &ptr, 9); + if (*ptr) { /* timezone is optional */ + s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); + if (tz_not_found) { + add_error(s, "The timezone could not be found in the database"); + } + } } + TIMELIB_DEINIT; + return TIMELIB_XMLRPC_SOAP; + } +yy784: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy785; + case '1': + case '2': goto yy786; + case '3': goto yy787; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy61; + } +yy785: + yyaccept = 17; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy788; + default: goto yy762; } -yy181: - YYDEBUG(181, *YYCURSOR); - yyaccept = 0; +yy786: + yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'J') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'K') goto yy169; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'j') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'k') goto yy182; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy788; + default: goto yy762; } -yy182: - YYDEBUG(182, *YYCURSOR); - yyaccept = 0; +yy787: + yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy170; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'd') goto yy183; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': goto yy788; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy762; } -yy183: - YYDEBUG(183, *YYCURSOR); - yyaccept = 0; +yy788: + yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy171; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy184; - if (yych <= 'z') goto yy153; - goto yy4; - } + switch (yych) { + case '\t': + case ' ': goto yy60; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + case 'D': + case 'd': goto yy65; + case 'F': + case 'f': goto yy66; + case 'H': + case 'h': goto yy64; + case 'M': + case 'm': goto yy63; + case 'S': + case 's': goto yy62; + case 'T': goto yy790; + case 'W': + case 'w': goto yy68; + case 'Y': + case 'y': goto yy67; + case 't': goto yy791; + default: goto yy789; + } +yy789: + { + DEBUG_OUTPUT("datenocolon"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_nr((char **) &ptr, 4); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->d = timelib_get_nr((char **) &ptr, 2); + TIMELIB_DEINIT; + return TIMELIB_DATE_NOCOLON; + } +yy790: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy805; + case '2': goto yy806; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy807; + case 'H': + case 'h': goto yy70; + case 'U': + case 'u': goto yy71; + default: goto yy57; + } +yy791: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy792; + case '2': goto yy793; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy794; + case 'H': + case 'h': goto yy70; + case 'U': + case 'u': goto yy71; + default: goto yy57; + } +yy792: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy799; + case '6': + case '7': + case '8': + case '9': goto yy794; + default: goto yy57; + } +yy793: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy799; + case '5': goto yy795; + default: goto yy57; + } +yy794: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy795; + default: goto yy57; + } +yy795: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy796; + default: goto yy57; + } +yy796: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy797; + case '6': goto yy798; + default: goto yy57; + } +yy797: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy782; + default: goto yy57; + } +yy798: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy782; + default: goto yy57; + } +yy799: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy800; + case '6': + case '7': + case '8': + case '9': goto yy796; + default: goto yy57; + } +yy800: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy801; + case '6': goto yy802; + case '7': + case '8': + case '9': goto yy796; + default: goto yy57; } -yy184: - YYDEBUG(184, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'Y') goto yy172; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'y') goto yy185; - if (yych <= 'z') goto yy154; - goto yy4; - } +yy801: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy803; + case '6': goto yy804; + case '7': + case '8': + case '9': goto yy782; + default: goto yy57; } -yy185: - YYDEBUG(185, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy167; - } else { - if (yych <= '/') goto yy148; - if (yych <= 'R') goto yy167; - goto yy173; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy148; - goto yy167; - } else { - if (yych == 's') goto yy186; - if (yych <= 'z') goto yy154; - goto yy167; - } +yy802: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy803; + case '1': + case '2': + case '3': + case '4': + case '5': goto yy797; + case '6': goto yy798; + default: goto yy57; } -yy186: - YYDEBUG(186, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; +yy803: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy782; + default: goto yy783; } - if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy167; - } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy167; +yy804: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy782; + default: goto yy783; } -yy187: - YYDEBUG(187, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy175; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'e') goto yy188; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy805: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy814; + case '6': + case '7': + case '8': + case '9': goto yy807; + case ':': goto yy808; + default: goto yy57; } -yy188: - YYDEBUG(188, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'S') goto yy176; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 's') goto yy189; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy806: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy814; + case '5': goto yy795; + case ':': goto yy808; + default: goto yy57; } -yy189: - YYDEBUG(189, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'D') goto yy177; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'd') goto yy190; - if (yych <= 'z') goto yy154; - goto yy4; - } +yy807: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy795; + case ':': goto yy808; + default: goto yy57; } -yy190: - YYDEBUG(190, *YYCURSOR); +yy808: yych = *++YYCURSOR; - if (yych == 'A') goto yy178; - if (yych != 'a') goto yy155; - YYDEBUG(191, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy186; - goto yy155; -yy192: - YYDEBUG(192, *YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy809; + default: goto yy57; + } +yy809: yych = *++YYCURSOR; - if (yych <= 'C') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy142; - } - } else { - if (yych <= 'b') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'c') goto yy193; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy810; + default: goto yy57; } -yy193: - YYDEBUG(193, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych >= '\t') goto yy196; - } else { - if (yych == ' ') goto yy196; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - } else { - if (yych == 'E') goto yy202; - goto yy143; - } - } else { - if (yych <= 'd') { - if (yych >= 'a') goto yy143; - } else { - if (yych <= 'e') goto yy202; - if (yych <= 'z') goto yy143; - } - } +yy810: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy811; + default: goto yy57; } -yy194: - YYDEBUG(194, *YYCURSOR); - { - DEBUG_OUTPUT("monthtext"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->m = timelib_lookup_month((char **) &ptr); - TIMELIB_DEINIT; - return TIMELIB_DATE_TEXT; +yy811: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy812; + case '6': goto yy813; + default: goto yy57; } -yy195: - YYDEBUG(195, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21); - yych = *YYCURSOR; -yy196: - YYDEBUG(196, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy195; - } - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy198; - if (yych <= '3') goto yy200; - if (yych <= '9') goto yy201; - goto yy57; -yy197: - YYDEBUG(197, *YYCURSOR); +yy812: yych = *++YYCURSOR; - if (yych <= '/') goto yy196; - if (yych <= '0') goto yy357; - if (yych <= '2') goto yy358; - if (yych <= '3') goto yy359; - goto yy196; -yy198: - YYDEBUG(198, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy298; - goto yy299; - } else { - if (yych <= '2') goto yy355; - if (yych <= '9') goto yy356; - goto yy216; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; - } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy782; + default: goto yy57; } -yy199: - YYDEBUG(199, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("datetextual | datenoyear"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->m = timelib_get_month((char **) &ptr); - s->time->d = timelib_get_nr((char **) &ptr, 2); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_DATE_TEXT; +yy813: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy782; + default: goto yy57; } -yy200: - YYDEBUG(200, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy298; - goto yy299; - } else { - if (yych <= '2') goto yy209; - if (yych <= '9') goto yy210; - goto yy216; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; - } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy814: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy800; + case '6': + case '7': + case '8': + case '9': goto yy796; + case ':': goto yy808; + default: goto yy57; } -yy201: - YYDEBUG(201, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy207; - goto yy208; - } else { - if (yych <= '2') goto yy209; - if (yych <= '9') goto yy210; - goto yy216; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; - } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy815: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy817; + case '1': + case '2': goto yy786; + case '3': goto yy787; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy61; } -yy202: - YYDEBUG(202, *YYCURSOR); +yy816: yych = *++YYCURSOR; - if (yych <= 'M') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'L') goto yy144; - } - } else { - if (yych <= 'l') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'm') goto yy203; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case '0': goto yy785; + case '1': + case '2': goto yy786; + case '3': goto yy787; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy61; } -yy203: - YYDEBUG(203, *YYCURSOR); +yy817: yych = *++YYCURSOR; - if (yych <= 'B') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy145; - } - } else { - if (yych <= 'a') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'b') goto yy204; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy788; + default: goto yy61; } -yy204: - YYDEBUG(204, *YYCURSOR); - yyaccept = 0; +yy818: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy819; + default: goto yy57; + } +yy819: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'E') goto yy205; - if (yych != 'e') goto yy4; + switch (yych) { + case 'E': + case 'e': goto yy820; + default: goto yy734; } -yy205: - YYDEBUG(205, *YYCURSOR); +yy820: yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych != 'r') goto yy57; -yy206: - YYDEBUG(206, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; - } else { - if (yych <= '.') { - if (yych <= ',') goto yy194; - goto yy196; - } else { - if (yych <= '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; - } + switch (yych) { + case 'M': + case 'm': goto yy821; + default: goto yy57; } -yy207: - YYDEBUG(207, *YYCURSOR); +yy821: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; - } else { - if (yych <= '0') goto yy296; - if (yych <= '9') goto yy297; - if (yych <= ':') goto yy221; - goto yy57; + switch (yych) { + case 'B': + case 'b': goto yy822; + default: goto yy57; } -yy208: - YYDEBUG(208, *YYCURSOR); +yy822: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '2') goto yy297; - if (yych <= '9') goto yy296; - if (yych <= ':') goto yy264; - goto yy57; + switch (yych) { + case 'E': + case 'e': goto yy823; + default: goto yy57; } -yy209: - YYDEBUG(209, *YYCURSOR); +yy823: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '4') goto yy296; - if (yych <= '9') goto yy293; - if (yych <= ':') goto yy264; - goto yy57; + switch (yych) { + case 'R': + case 'r': goto yy824; + default: goto yy57; } -yy210: - YYDEBUG(210, *YYCURSOR); +yy824: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '9') goto yy293; - if (yych <= ':') goto yy264; - goto yy57; + goto yy734; +yy825: + yych = *++YYCURSOR; + switch (yych) { + case 'V': + case 'v': goto yy826; + default: goto yy57; } -yy211: - YYDEBUG(211, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - goto yy216; -yy212: - YYDEBUG(212, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - goto yy216; -yy213: - YYDEBUG(213, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - goto yy216; -yy214: - YYDEBUG(214, *YYCURSOR); - yyaccept = 6; +yy826: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - goto yy216; -yy215: - YYDEBUG(215, *YYCURSOR); - yyaccept = 6; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18); - yych = *YYCURSOR; -yy216: - YYDEBUG(216, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy215; - } - if (yych <= '2') { - if (yych <= '/') goto yy199; - if (yych <= '0') goto yy259; - if (yych <= '1') goto yy260; - goto yy261; - } else { - if (yych <= '9') goto yy262; - if (yych != 'T') goto yy199; + switch (yych) { + case 'E': + case 'e': goto yy827; + default: goto yy734; } - YYDEBUG(217, *YYCURSOR); +yy827: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy218; - if (yych <= '2') goto yy219; - if (yych <= '9') goto yy220; - goto yy57; -yy218: - YYDEBUG(218, *YYCURSOR); + switch (yych) { + case 'M': + case 'm': goto yy828; + default: goto yy57; + } +yy828: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; - } else { - if (yych <= '9') goto yy220; - if (yych <= ':') goto yy221; - goto yy57; + switch (yych) { + case 'B': + case 'b': goto yy829; + default: goto yy57; } -yy219: - YYDEBUG(219, *YYCURSOR); +yy829: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; - } else { - if (yych <= '4') goto yy220; - if (yych == ':') goto yy221; - goto yy57; + switch (yych) { + case 'E': + case 'e': goto yy830; + default: goto yy57; } -yy220: - YYDEBUG(220, *YYCURSOR); +yy830: yych = *++YYCURSOR; - if (yych == '.') goto yy221; - if (yych != ':') goto yy57; -yy221: - YYDEBUG(221, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy824; + default: goto yy57; + } +yy831: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy222; - if (yych <= '9') goto yy224; - goto yy57; -yy222: - YYDEBUG(222, *YYCURSOR); - yyaccept = 7; + switch (yych) { + case 'T': + case 't': goto yy832; + default: goto yy57; + } +yy832: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy225; - } else { - if (yych <= '9') goto yy224; - if (yych <= ':') goto yy225; + switch (yych) { + case 'O': + case 'o': goto yy833; + default: goto yy734; } -yy223: - YYDEBUG(223, *YYCURSOR); - { - int tz_not_found; - DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->m = timelib_get_month((char **) &ptr); - s->time->d = timelib_get_nr((char **) &ptr, 2); - - TIMELIB_HAVE_TIME(); - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = timelib_get_nr((char **) &ptr, 2); - if (*ptr == ':') { - s->time->s = timelib_get_nr((char **) &ptr, 2); - - if (*ptr == '.') { - s->time->f = timelib_get_frac_nr((char **) &ptr, 8); - } - } - - if (*ptr != '\0') { - s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); - if (tz_not_found) { - add_error(s, "The timezone could not be found in the database"); - } - } - TIMELIB_DEINIT; - return TIMELIB_SHORTDATE_WITH_TIME; +yy833: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy834; + default: goto yy57; } -yy224: - YYDEBUG(224, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy225; - if (yych != ':') goto yy223; -yy225: - YYDEBUG(225, *YYCURSOR); +yy834: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy226; - if (yych <= '6') goto yy227; - if (yych <= '9') goto yy228; - goto yy57; -yy226: - YYDEBUG(226, *YYCURSOR); + switch (yych) { + case 'E': + case 'e': goto yy835; + default: goto yy57; + } +yy835: yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '9') goto yy229; - goto yy223; -yy227: - YYDEBUG(227, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy824; + default: goto yy57; + } +yy836: yych = *++YYCURSOR; - if (yych == '0') goto yy229; - goto yy223; -yy228: - YYDEBUG(228, *YYCURSOR); + switch (yych) { + case 'C': + case 'c': goto yy129; + case 'P': + case 'p': goto yy837; + default: goto yy57; + } +yy837: yych = *++YYCURSOR; - goto yy223; -yy229: - YYDEBUG(229, *YYCURSOR); - yyaccept = 7; + switch (yych) { + case 'T': + case 't': goto yy838; + default: goto yy734; + } +yy838: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '*') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy231; - goto yy223; - } else { - if (yych <= ' ') goto yy231; - if (yych == '(') goto yy231; - goto yy223; - } - } else { - if (yych <= '@') { - if (yych == ',') goto yy223; - if (yych <= '-') goto yy231; - goto yy223; - } else { - if (yych <= 'Z') goto yy231; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy231; - goto yy223; - } + switch (yych) { + case 'E': + case 'e': goto yy839; + default: goto yy734; } -yy230: - YYDEBUG(230, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; -yy231: - YYDEBUG(231, *YYCURSOR); - if (yych <= '+') { - if (yych <= ' ') { - if (yych == '\t') goto yy230; - if (yych <= 0x1F) goto yy57; - goto yy230; - } else { - if (yych == '(') goto yy234; - if (yych <= '*') goto yy57; - goto yy233; - } - } else { - if (yych <= 'F') { - if (yych == '-') goto yy233; - if (yych <= '@') goto yy57; - goto yy235; - } else { - if (yych <= 'Z') { - if (yych >= 'H') goto yy235; - } else { - if (yych <= '`') goto yy57; - if (yych <= 'z') goto yy236; - goto yy57; - } - } +yy839: + yych = *++YYCURSOR; + switch (yych) { + case 'M': + case 'm': goto yy840; + default: goto yy57; } -yy232: - YYDEBUG(232, *YYCURSOR); +yy840: yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych == ')') goto yy228; - if (yych <= '@') goto yy223; - goto yy237; - } else { - if (yych <= 'Z') { - if (yych <= 'M') goto yy257; - goto yy237; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy242; - goto yy223; - } + switch (yych) { + case 'B': + case 'b': goto yy841; + default: goto yy57; } -yy233: - YYDEBUG(233, *YYCURSOR); +yy841: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy252; - if (yych <= '2') goto yy253; - if (yych <= '9') goto yy254; - goto yy57; -yy234: - YYDEBUG(234, *YYCURSOR); + switch (yych) { + case 'E': + case 'e': goto yy842; + default: goto yy57; + } +yy842: yych = *++YYCURSOR; - if (yych <= '@') goto yy57; - if (yych <= 'Z') goto yy236; - if (yych <= '`') goto yy57; - if (yych <= 'z') goto yy236; - goto yy57; -yy235: - YYDEBUG(235, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy824; + default: goto yy57; + } +yy843: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= 'Z') goto yy237; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy242; - goto yy223; + switch (yych) { + case 'G': + case 'g': goto yy847; + default: goto yy57; } -yy236: - YYDEBUG(236, *YYCURSOR); +yy844: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= 'Z') goto yy237; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + switch (yych) { + case 'R': + case 'r': goto yy845; + default: goto yy57; + } +yy845: + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'I': + case 'i': goto yy846; + default: goto yy734; } -yy237: - YYDEBUG(237, *YYCURSOR); +yy846: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + switch (yych) { + case 'L': + case 'l': goto yy824; + default: goto yy57; } -yy238: - YYDEBUG(238, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= 'Z') goto yy239; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; +yy847: + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case 'U': + case 'u': goto yy848; + default: goto yy734; } -yy239: - YYDEBUG(239, *YYCURSOR); +yy848: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= 'Z') goto yy240; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + switch (yych) { + case 'S': + case 's': goto yy849; + default: goto yy57; } -yy240: - YYDEBUG(240, *YYCURSOR); +yy849: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= 'Z') goto yy241; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + switch (yych) { + case 'T': + case 't': goto yy824; + default: goto yy57; } -yy241: - YYDEBUG(241, *YYCURSOR); +yy850: yych = *++YYCURSOR; - if (yych == ')') goto yy228; - goto yy223; -yy242: - YYDEBUG(242, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych == '.') goto yy223; - goto yy244; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy223; - if (yych <= 'Z') goto yy238; - goto yy223; - } else { - if (yych <= '_') goto yy244; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; - } + switch (yych) { + case 'R': + case 'r': goto yy851; + case 'Y': + case 'y': goto yy824; + default: goto yy57; } -yy243: - YYDEBUG(243, *YYCURSOR); - yyaccept = 7; +yy851: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych == '.') goto yy223; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy223; - if (yych <= 'Z') goto yy239; - goto yy223; - } else { - if (yych <= '_') goto yy244; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy247; - goto yy223; - } - } -yy244: - YYDEBUG(244, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '@') goto yy57; - if (yych <= 'Z') goto yy245; - if (yych <= '`') goto yy57; - if (yych >= '{') goto yy57; -yy245: - YYDEBUG(245, *YYCURSOR); - yyaccept = 7; - YYMARKER = ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(246, *YYCURSOR); - if (yych <= '@') { - if (yych <= '-') { - if (yych <= ',') goto yy223; - goto yy244; - } else { - if (yych == '/') goto yy244; - goto yy223; - } - } else { - if (yych <= '_') { - if (yych <= 'Z') goto yy245; - if (yych <= '^') goto yy223; - goto yy244; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy245; - goto yy223; - } + switch (yych) { + case 'C': + case 'c': goto yy852; + default: goto yy734; } -yy247: - YYDEBUG(247, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych == '.') goto yy223; - goto yy244; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy223; - if (yych <= 'Z') goto yy240; - goto yy223; - } else { - if (yych <= '_') goto yy244; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; - } +yy852: + yych = *++YYCURSOR; + switch (yych) { + case 'H': + case 'h': goto yy824; + default: goto yy57; } - YYDEBUG(248, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych == '.') goto yy223; - goto yy244; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy223; - if (yych <= 'Z') goto yy241; - goto yy223; - } else { - if (yych <= '_') goto yy244; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; - } +yy853: + yych = *++YYCURSOR; + switch (yych) { + case 'B': + case 'b': goto yy854; + default: goto yy57; } - YYDEBUG(249, *YYCURSOR); - yyaccept = 7; +yy854: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy223; - goto yy228; - } else { - if (yych == '-') goto yy244; - goto yy223; - } - } else { - if (yych <= '_') { - if (yych <= '/') goto yy244; - if (yych <= '^') goto yy223; - goto yy244; - } else { - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; - } + switch (yych) { + case 'R': + case 'r': goto yy855; + default: goto yy734; } -yy250: - YYDEBUG(250, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(251, *YYCURSOR); - if (yych <= '/') { - if (yych == '-') goto yy244; - if (yych <= '.') goto yy57; - goto yy244; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy57; - goto yy244; - } else { - if (yych <= '`') goto yy57; - if (yych <= 'z') goto yy250; - goto yy57; - } +yy855: + yych = *++YYCURSOR; + switch (yych) { + case 'U': + case 'u': goto yy856; + default: goto yy57; } -yy252: - YYDEBUG(252, *YYCURSOR); +yy856: yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '9') goto yy254; - if (yych <= ':') goto yy255; - goto yy223; -yy253: - YYDEBUG(253, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '5') { - if (yych <= '/') goto yy223; - if (yych >= '5') goto yy256; - } else { - if (yych <= '9') goto yy228; - if (yych <= ':') goto yy255; - goto yy223; + switch (yych) { + case 'A': + case 'a': goto yy857; + default: goto yy57; } -yy254: - YYDEBUG(254, *YYCURSOR); +yy857: yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '5') goto yy256; - if (yych <= '9') goto yy228; - if (yych >= ';') goto yy223; -yy255: - YYDEBUG(255, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy858; + default: goto yy57; + } +yy858: yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '5') goto yy256; - if (yych <= '9') goto yy228; - goto yy223; -yy256: - YYDEBUG(256, *YYCURSOR); + switch (yych) { + case 'Y': + case 'y': goto yy824; + default: goto yy57; + } +yy859: yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '9') goto yy228; - goto yy223; -yy257: - YYDEBUG(257, *YYCURSOR); + switch (yych) { + case 'L': + case 'l': goto yy866; + case 'N': + case 'n': goto yy865; + default: goto yy57; + } +yy860: yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == ')') goto yy228; - if (yych <= '@') goto yy223; - goto yy238; - } else { - if (yych <= 'Z') { - if (yych >= 'U') goto yy238; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy238; - goto yy223; - } + switch (yych) { + case 'N': + case 'n': goto yy861; + default: goto yy57; } - YYDEBUG(258, *YYCURSOR); - yyaccept = 7; +yy861: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ')') { - if (yych <= '(') goto yy223; - goto yy228; - } else { - if (yych == '+') goto yy233; - goto yy223; - } - } else { - if (yych <= 'Z') { - if (yych <= '-') goto yy233; - if (yych <= '@') goto yy223; - goto yy239; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy239; - goto yy223; - } + switch (yych) { + case 'U': + case 'u': goto yy862; + default: goto yy734; } -yy259: - YYDEBUG(259, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy199; - } else { - if (yych <= '0') goto yy291; - if (yych <= '9') goto yy292; - if (yych <= ':') goto yy221; - goto yy199; +yy862: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy863; + default: goto yy57; } -yy260: - YYDEBUG(260, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy199; - } else { - if (yych <= '2') goto yy292; - if (yych <= '9') goto yy291; - if (yych <= ':') goto yy264; - goto yy199; +yy863: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy864; + default: goto yy57; } -yy261: - YYDEBUG(261, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy199; - } else { - if (yych <= '4') goto yy291; - if (yych <= '9') goto yy263; - if (yych <= ':') goto yy264; - goto yy199; +yy864: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy824; + default: goto yy57; } -yy262: - YYDEBUG(262, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy199; - } else { - if (yych <= '9') goto yy263; - if (yych <= ':') goto yy264; - goto yy199; +yy865: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy824; + default: goto yy734; } -yy263: - YYDEBUG(263, *YYCURSOR); +yy866: yych = *++YYCURSOR; - if (yych <= '/') goto yy199; - if (yych <= '9') goto yy289; - goto yy199; -yy264: - YYDEBUG(264, *YYCURSOR); + switch (yych) { + case 'Y': + case 'y': goto yy824; + default: goto yy734; + } +yy867: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy265; - if (yych <= '9') goto yy266; - goto yy57; -yy265: - YYDEBUG(265, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; - } else { - if (yych <= '9') goto yy282; - if (yych <= ':') goto yy267; - goto yy223; + switch (yych) { + case 'I': goto yy824; + default: goto yy734; } -yy266: - YYDEBUG(266, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy267; - if (yych != ':') goto yy223; -yy267: - YYDEBUG(267, *YYCURSOR); +yy868: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy268; - if (yych <= '6') goto yy269; - if (yych <= '9') goto yy228; - goto yy57; -yy268: - YYDEBUG(268, *YYCURSOR); + switch (yych) { + case 'I': goto yy869; + default: goto yy734; + } +yy869: yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '9') goto yy270; - goto yy223; -yy269: - YYDEBUG(269, *YYCURSOR); + switch (yych) { + case 'I': goto yy824; + default: goto yy734; + } +yy870: yych = *++YYCURSOR; - if (yych != '0') goto yy223; -yy270: - YYDEBUG(270, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '*') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy272; - goto yy223; - } else { - if (yych <= ' ') goto yy272; - if (yych == '(') goto yy272; - goto yy223; - } - } else { - if (yych <= '@') { - if (yych == ',') goto yy223; - if (yych <= '-') goto yy272; - goto yy223; - } else { - if (yych <= 'Z') goto yy272; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy272; - goto yy223; - } + switch (yych) { + case 'I': goto yy824; + default: goto yy734; } -yy271: - YYDEBUG(271, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; -yy272: - YYDEBUG(272, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\'') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy271; - } else { - if (yych == ' ') goto yy271; - goto yy57; - } - } else { - if (yych <= '+') { - if (yych <= '(') goto yy234; - if (yych <= '*') goto yy57; - goto yy233; - } else { - if (yych == '-') goto yy233; - goto yy57; - } - } - } else { - if (yych <= 'Z') { - if (yych <= 'G') { - if (yych <= 'A') goto yy273; - if (yych <= 'F') goto yy235; - goto yy232; - } else { - if (yych != 'P') goto yy235; - } - } else { - if (yych <= 'o') { - if (yych <= '`') goto yy57; - if (yych <= 'a') goto yy274; - goto yy236; - } else { - if (yych <= 'p') goto yy274; - if (yych <= 'z') goto yy236; - goto yy57; - } - } +yy871: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy886; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy885; + default: goto yy57; + } +yy872: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy884; + default: goto yy57; } -yy273: - YYDEBUG(273, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= '.') goto yy275; - if (yych <= '@') goto yy223; - goto yy237; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy276; - if (yych <= 'Z') goto yy237; - goto yy223; - } else { - if (yych == 'm') goto yy281; - if (yych <= 'z') goto yy242; - goto yy223; - } +yy873: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy882; + case '6': goto yy881; + default: goto yy57; } -yy274: - YYDEBUG(274, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= '.') goto yy275; - if (yych <= '@') goto yy223; - goto yy237; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy276; - if (yych <= 'Z') goto yy237; - goto yy223; - } else { - if (yych == 'm') goto yy276; - if (yych <= 'z') goto yy237; - goto yy223; - } +yy874: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy853; + default: goto yy57; } -yy275: - YYDEBUG(275, *YYCURSOR); +yy875: yych = *++YYCURSOR; - if (yych == 'M') goto yy280; - if (yych == 'm') goto yy280; - goto yy57; -yy276: - YYDEBUG(276, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ')') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy223; - goto yy278; - } else { - if (yych == ' ') goto yy278; - if (yych <= '(') goto yy223; - goto yy228; - } - } else { - if (yych <= '@') { - if (yych != '.') goto yy223; - } else { - if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy238; - goto yy223; - } + switch (yych) { + case 'A': + case 'a': goto yy850; + default: goto yy57; } -yy277: - YYDEBUG(277, *YYCURSOR); +yy876: yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy57; - } else { - if (yych != ' ') goto yy57; + switch (yych) { + case 'E': + case 'e': goto yy880; + default: goto yy57; } -yy278: - YYDEBUG(278, *YYCURSOR); +yy877: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy818; + default: goto yy57; + } +yy878: ++YYCURSOR; - YYDEBUG(279, *YYCURSOR); - { - DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->m = timelib_get_month((char **) &ptr); - s->time->d = timelib_get_nr((char **) &ptr, 2); - - TIMELIB_HAVE_TIME(); - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = timelib_get_nr((char **) &ptr, 2); - if (*ptr == ':' || *ptr == '.') { - s->time->s = timelib_get_nr((char **) &ptr, 2); - - if (*ptr == '.') { - s->time->f = timelib_get_frac_nr((char **) &ptr, 8); - } - } - - s->time->h += timelib_meridian((char **) &ptr, s->time->h); - TIMELIB_DEINIT; - return TIMELIB_SHORTDATE_WITH_TIME; + if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); + yych = *YYCURSOR; +yy879: + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy878; + case 'A': + case 'a': goto yy740; + case 'D': + case 'd': goto yy877; + case 'F': + case 'f': goto yy874; + case 'I': goto yy733; + case 'J': + case 'j': goto yy737; + case 'M': + case 'm': goto yy875; + case 'N': + case 'n': goto yy743; + case 'O': + case 'o': goto yy742; + case 'S': + case 's': goto yy876; + case 'V': goto yy735; + case 'X': goto yy736; + default: goto yy57; } -yy280: - YYDEBUG(280, *YYCURSOR); +yy880: yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy57; - } else { - if (yych <= ' ') goto yy278; - if (yych == '.') goto yy277; - goto yy57; + switch (yych) { + case 'P': + case 'p': goto yy837; + default: goto yy57; } -yy281: - YYDEBUG(281, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy223; - } else { - if (yych <= '(') { - if (yych <= ' ') goto yy278; - goto yy223; - } else { - if (yych <= ')') goto yy228; - if (yych <= ',') goto yy223; - goto yy244; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '.') goto yy277; - if (yych <= '/') goto yy244; - if (yych <= '@') goto yy223; - goto yy238; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy223; - goto yy244; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy243; - goto yy223; - } - } +yy881: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': goto yy883; + default: goto yy57; } -yy282: - YYDEBUG(282, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy283; - if (yych <= 0x1F) goto yy223; - } else { - if (yych == '.') goto yy267; - if (yych <= '9') goto yy223; - goto yy267; - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy285; - if (yych <= 'O') goto yy223; - goto yy285; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy223; - goto yy285; - } else { - if (yych == 'p') goto yy285; - goto yy223; - } - } +yy882: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy883; + default: goto yy57; } -yy283: - YYDEBUG(283, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(284, *YYCURSOR); - if (yych <= 'A') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy283; - goto yy57; - } else { - if (yych <= ' ') goto yy283; - if (yych <= '@') goto yy57; - } - } else { - if (yych <= '`') { - if (yych != 'P') goto yy57; - } else { - if (yych <= 'a') goto yy285; - if (yych != 'p') goto yy57; - } +yy883: + yych = *++YYCURSOR; + goto yy762; +yy884: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy883; + default: goto yy57; } -yy285: - YYDEBUG(285, *YYCURSOR); +yy885: yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych != '.') goto yy57; - } else { - if (yych <= 'M') goto yy287; - if (yych == 'm') goto yy287; - goto yy57; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy883; + default: goto yy57; } -yy286: - YYDEBUG(286, *YYCURSOR); +yy886: yych = *++YYCURSOR; - if (yych == 'M') goto yy287; - if (yych != 'm') goto yy57; -yy287: - YYDEBUG(287, *YYCURSOR); + switch (yych) { + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy883; + default: goto yy57; + } +yy887: yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy57; - } else { - if (yych <= ' ') goto yy278; - if (yych != '.') goto yy57; + switch (yych) { + case '/': goto yy890; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy898; + default: goto yy57; } -yy288: - YYDEBUG(288, *YYCURSOR); +yy888: yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy57; - goto yy278; - } else { - if (yych == ' ') goto yy278; - goto yy57; + switch (yych) { + case '/': goto yy890; + case '0': + case '1': + case '2': goto yy898; + default: goto yy57; } -yy289: - YYDEBUG(289, *YYCURSOR); +yy889: yych = *++YYCURSOR; - if (yych <= '/') goto yy199; - if (yych >= ':') goto yy199; - YYDEBUG(290, *YYCURSOR); + switch (yych) { + case '/': goto yy890; + default: goto yy57; + } +yy890: yych = *++YYCURSOR; - goto yy199; -yy291: - YYDEBUG(291, *YYCURSOR); - yyaccept = 6; + switch (yych) { + case '0': + case '1': + case '2': goto yy891; + case '3': goto yy892; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy893; + default: goto yy57; + } +yy891: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy199; - } else { - if (yych <= '9') goto yy289; - if (yych <= ':') goto yy221; - goto yy199; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy893; + case 'n': goto yy895; + case 'r': goto yy896; + case 's': goto yy894; + case 't': goto yy897; + default: goto yy395; + } +yy892: + yyaccept = 20; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': goto yy893; + case 'n': goto yy895; + case 'r': goto yy896; + case 's': goto yy894; + case 't': goto yy897; + default: goto yy395; } -yy292: - YYDEBUG(292, *YYCURSOR); - yyaccept = 6; +yy893: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy199; - } else { - if (yych <= '9') goto yy289; - if (yych <= ':') goto yy264; - goto yy199; + switch (yych) { + case 'n': goto yy895; + case 'r': goto yy896; + case 's': goto yy894; + case 't': goto yy897; + default: goto yy395; } -yy293: - YYDEBUG(293, *YYCURSOR); +yy894: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy294: - YYDEBUG(294, *YYCURSOR); - ++YYCURSOR; -yy295: - YYDEBUG(295, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("datenoday"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->m = timelib_get_month((char **) &ptr); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - s->time->d = 1; - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_DATE_NO_DAY; + switch (yych) { + case 't': goto yy394; + default: goto yy57; } -yy296: - YYDEBUG(296, *YYCURSOR); +yy895: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; - } else { - if (yych <= '9') goto yy294; - if (yych <= ':') goto yy221; - goto yy57; + switch (yych) { + case 'd': goto yy394; + default: goto yy57; } -yy297: - YYDEBUG(297, *YYCURSOR); +yy896: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '9') goto yy294; - if (yych <= ':') goto yy264; - goto yy57; - } -yy298: - YYDEBUG(298, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych == '.') goto yy331; - goto yy216; - } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy221; - if (yych == 'n') goto yy212; - goto yy216; - } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } - } -yy299: - YYDEBUG(299, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych != '.') goto yy216; - } else { - if (yych <= '0') goto yy301; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; - } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } - } -yy300: - YYDEBUG(300, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy306; - goto yy307; - } else { - if (yych <= '2') goto yy308; - if (yych <= '5') goto yy309; - if (yych <= '9') goto yy310; - goto yy216; + switch (yych) { + case 'd': goto yy394; + default: goto yy57; } -yy301: - YYDEBUG(301, *YYCURSOR); +yy897: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '0') goto yy304; - if (yych <= '9') goto yy305; - if (yych <= ':') goto yy264; - goto yy57; + switch (yych) { + case 'h': goto yy394; + default: goto yy57; } -yy302: - YYDEBUG(302, *YYCURSOR); +yy898: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '2') goto yy305; - if (yych <= '9') goto yy304; - if (yych <= ':') goto yy264; - goto yy57; + switch (yych) { + case '/': goto yy899; + default: goto yy57; } -yy303: - YYDEBUG(303, *YYCURSOR); +yy899: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '4') goto yy304; - if (yych <= '9') goto yy294; - if (yych <= ':') goto yy264; - goto yy57; - } -yy304: - YYDEBUG(304, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy221; - if (yych == ':') goto yy221; - goto yy295; -yy305: - YYDEBUG(305, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy264; - if (yych == ':') goto yy264; - goto yy295; -yy306: - YYDEBUG(306, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy326; - goto yy199; - } else { - if (yych <= '0') goto yy325; - if (yych <= '9') goto yy330; - if (yych <= ':') goto yy326; - goto yy199; + switch (yych) { + case '0': goto yy900; + case '1': + case '2': goto yy901; + case '3': goto yy902; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy893; + default: goto yy57; } -yy307: - YYDEBUG(307, *YYCURSOR); - yyaccept = 6; +yy900: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy311; - goto yy199; - } else { - if (yych <= '2') goto yy330; - if (yych <= '9') goto yy325; - if (yych <= ':') goto yy311; - goto yy199; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy903; + case 'n': goto yy895; + case 'r': goto yy896; + case 's': goto yy894; + case 't': goto yy897; + default: goto yy395; } -yy308: - YYDEBUG(308, *YYCURSOR); - yyaccept = 6; +yy901: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy311; - goto yy199; - } else { - if (yych <= '4') goto yy325; - if (yych <= '9') goto yy324; - if (yych <= ':') goto yy311; - goto yy199; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy903; + case 'n': goto yy895; + case 'r': goto yy896; + case 's': goto yy894; + case 't': goto yy897; + default: goto yy395; } -yy309: - YYDEBUG(309, *YYCURSOR); - yyaccept = 6; +yy902: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy311; - goto yy199; - } else { - if (yych <= '9') goto yy324; - if (yych <= ':') goto yy311; - goto yy199; + switch (yych) { + case '0': + case '1': goto yy903; + case 'n': goto yy895; + case 'r': goto yy896; + case 's': goto yy894; + case 't': goto yy897; + default: goto yy395; } -yy310: - YYDEBUG(310, *YYCURSOR); - yyaccept = 6; +yy903: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych != '.') goto yy199; - } else { - if (yych <= '9') goto yy263; - if (yych >= ';') goto yy199; + switch (yych) { + case '/': goto yy394; + case 'n': goto yy895; + case 'r': goto yy896; + case 's': goto yy894; + case 't': goto yy897; + default: goto yy395; } -yy311: - YYDEBUG(311, *YYCURSOR); +yy904: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy312; - if (yych <= '6') goto yy313; - if (yych <= '9') goto yy266; - goto yy57; -yy312: - YYDEBUG(312, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; - } else { - if (yych <= '9') goto yy314; - if (yych <= ':') goto yy267; - goto yy223; - } -yy313: - YYDEBUG(313, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; - } else { - if (yych <= '0') goto yy270; - if (yych == ':') goto yy267; - goto yy223; + switch (yych) { + case 'A': + case 'a': goto yy984; + case 'U': + case 'u': goto yy983; + default: goto yy57; } -yy314: - YYDEBUG(314, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ' ') { - if (yych == '\t') goto yy316; - if (yych <= 0x1F) goto yy223; - goto yy316; - } else { - if (yych <= '(') { - if (yych <= '\'') goto yy223; - goto yy316; - } else { - if (yych == '+') goto yy316; - goto yy223; - } - } - } else { - if (yych <= ':') { - if (yych <= '-') goto yy316; - if (yych <= '.') goto yy267; - if (yych <= '9') goto yy223; - goto yy267; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy223; - goto yy316; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy316; - goto yy223; - } - } +yy905: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy981; + default: goto yy57; } -yy315: - YYDEBUG(315, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; -yy316: - YYDEBUG(316, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\'') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy315; - } else { - if (yych == ' ') goto yy315; - goto yy57; - } - } else { - if (yych <= '+') { - if (yych <= '(') goto yy234; - if (yych <= '*') goto yy57; - goto yy233; - } else { - if (yych == '-') goto yy233; - goto yy57; - } - } - } else { - if (yych <= 'Z') { - if (yych <= 'G') { - if (yych <= 'A') goto yy317; - if (yych <= 'F') goto yy235; - goto yy232; - } else { - if (yych != 'P') goto yy235; - } - } else { - if (yych <= 'o') { - if (yych <= '`') goto yy57; - if (yych <= 'a') goto yy318; - goto yy236; - } else { - if (yych <= 'p') goto yy318; - if (yych <= 'z') goto yy236; - goto yy57; - } - } +yy906: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy978; + default: goto yy57; } -yy317: - YYDEBUG(317, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= '.') goto yy320; - if (yych <= '@') goto yy223; - goto yy237; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy319; - if (yych <= 'Z') goto yy237; - goto yy223; - } else { - if (yych == 'm') goto yy323; - if (yych <= 'z') goto yy242; - goto yy223; - } +yy907: + yych = *++YYCURSOR; + switch (yych) { + case 'P': + case 'p': goto yy975; + case 'U': + case 'u': goto yy974; + default: goto yy57; } -yy318: - YYDEBUG(318, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= '.') goto yy320; - if (yych <= '@') goto yy223; - goto yy237; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy319; - if (yych <= 'Z') goto yy237; - goto yy223; - } else { - if (yych == 'm') goto yy319; - if (yych <= 'z') goto yy237; - goto yy223; - } +yy908: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy971; + default: goto yy57; } -yy319: - YYDEBUG(319, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ')') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy223; - goto yy278; - } else { - if (yych == ' ') goto yy278; - if (yych <= '(') goto yy223; - goto yy228; - } - } else { - if (yych <= '@') { - if (yych == '.') goto yy322; - goto yy223; - } else { - if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy238; - goto yy223; - } +yy909: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy969; + default: goto yy57; } -yy320: - YYDEBUG(320, *YYCURSOR); +yy910: yych = *++YYCURSOR; - if (yych == 'M') goto yy321; - if (yych != 'm') goto yy57; -yy321: - YYDEBUG(321, *YYCURSOR); + switch (yych) { + case 'O': + case 'o': goto yy967; + default: goto yy57; + } +yy911: yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy57; - } else { - if (yych <= ' ') goto yy278; - if (yych != '.') goto yy57; + switch (yych) { + case 'E': + case 'e': goto yy965; + default: goto yy57; } -yy322: - YYDEBUG(322, *YYCURSOR); +yy912: yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy57; - goto yy278; - } else { - if (yych == ' ') goto yy278; - goto yy57; + switch (yych) { + case '0': goto yy751; + case '1': + case '2': + case '3': + case '4': goto yy752; + case '5': goto yy753; + default: goto yy57; } -yy323: - YYDEBUG(323, *YYCURSOR); - yyaccept = 7; +yy913: + yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy223; - } else { - if (yych <= '(') { - if (yych <= ' ') goto yy278; - goto yy223; - } else { - if (yych <= ')') goto yy228; - if (yych <= ',') goto yy223; - goto yy244; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '.') goto yy322; - if (yych <= '/') goto yy244; - if (yych <= '@') goto yy223; - goto yy238; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy223; - goto yy244; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy243; - goto yy223; - } - } + switch (yych) { + case '-': goto yy917; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy936; + default: goto yy914; } -yy324: - YYDEBUG(324, *YYCURSOR); - yyaccept = 6; +yy914: + { + int length = 0; + DEBUG_OUTPUT("gnudateshorter"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + s->time->m = timelib_get_nr((char **) &ptr, 2); + s->time->d = 1; + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_ISO_DATE; + } +yy915: + yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy283; - if (yych <= 0x1F) goto yy199; - goto yy283; - } else { - if (yych <= '.') { - if (yych <= '-') goto yy199; - goto yy267; - } else { - if (yych <= '/') goto yy199; - if (yych <= '9') goto yy289; - goto yy267; - } - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy285; - if (yych <= 'O') goto yy199; - goto yy285; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy199; - goto yy285; - } else { - if (yych == 'p') goto yy285; - goto yy199; - } - } + switch (yych) { + case '-': goto yy917; + case '0': + case '1': + case '2': goto yy936; + default: goto yy914; } -yy325: - YYDEBUG(325, *YYCURSOR); - yyaccept = 6; +yy916: + yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy283; - if (yych <= 0x1F) goto yy199; - goto yy283; - } else { - if (yych <= '.') { - if (yych <= '-') goto yy199; - } else { - if (yych <= '/') goto yy199; - if (yych <= '9') goto yy289; - } - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy285; - if (yych <= 'O') goto yy199; - goto yy285; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy199; - goto yy285; - } else { - if (yych == 'p') goto yy285; - goto yy199; - } - } + switch (yych) { + case '-': goto yy917; + default: goto yy914; } -yy326: - YYDEBUG(326, *YYCURSOR); +yy917: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy327; - if (yych <= '6') goto yy328; - if (yych <= '9') goto yy224; - goto yy57; -yy327: - YYDEBUG(327, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy223; - } else { - if (yych <= '9') goto yy329; - if (yych <= ':') goto yy225; - goto yy223; + switch (yych) { + case '0': + case '1': + case '2': goto yy918; + case '3': goto yy919; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy920; + default: goto yy57; } -yy328: - YYDEBUG(328, *YYCURSOR); - yyaccept = 7; +yy918: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy223; - } else { - if (yych <= '0') goto yy270; - if (yych == ':') goto yy225; - goto yy223; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy920; + case 'T': goto yy925; + case 'n': goto yy922; + case 'r': goto yy923; + case 's': goto yy921; + case 't': goto yy924; + default: goto yy597; } -yy329: - YYDEBUG(329, *YYCURSOR); - yyaccept = 7; +yy919: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ' ') { - if (yych == '\t') goto yy272; - if (yych <= 0x1F) goto yy223; - goto yy272; - } else { - if (yych <= '(') { - if (yych <= '\'') goto yy223; - goto yy272; - } else { - if (yych == '+') goto yy272; - goto yy223; - } - } - } else { - if (yych <= ':') { - if (yych <= '-') goto yy272; - if (yych <= '.') goto yy225; - if (yych <= '9') goto yy223; - goto yy225; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy223; - goto yy272; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy272; - goto yy223; - } - } + switch (yych) { + case '0': + case '1': goto yy920; + case 'T': goto yy925; + case 'n': goto yy922; + case 'r': goto yy923; + case 's': goto yy921; + case 't': goto yy924; + default: goto yy597; } -yy330: - YYDEBUG(330, *YYCURSOR); - yyaccept = 6; +yy920: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy283; - if (yych <= 0x1F) goto yy199; - goto yy283; - } else { - if (yych <= '.') { - if (yych <= '-') goto yy199; - goto yy311; - } else { - if (yych <= '/') goto yy199; - if (yych <= '9') goto yy289; - goto yy311; - } - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy285; - if (yych <= 'O') goto yy199; - goto yy285; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy199; - goto yy285; - } else { - if (yych == 'p') goto yy285; - goto yy199; - } - } + switch (yych) { + case 'T': goto yy925; + case 'n': goto yy922; + case 'r': goto yy923; + case 's': goto yy921; + case 't': goto yy924; + default: goto yy597; } -yy331: - YYDEBUG(331, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy333; - goto yy334; - } else { - if (yych <= '2') goto yy335; - if (yych <= '5') goto yy336; - if (yych <= '9') goto yy337; - goto yy216; +yy921: + yych = *++YYCURSOR; + switch (yych) { + case 't': goto yy935; + default: goto yy57; } -yy332: - YYDEBUG(332, *YYCURSOR); +yy922: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; - } else { - if (yych <= '0') goto yy304; - if (yych <= '9') goto yy305; - if (yych <= ':') goto yy221; - goto yy57; + switch (yych) { + case 'd': goto yy935; + default: goto yy57; } -yy333: - YYDEBUG(333, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy350; - goto yy199; - } else { - if (yych <= '0') goto yy349; - if (yych <= '9') goto yy354; - if (yych <= ':') goto yy350; - goto yy199; +yy923: + yych = *++YYCURSOR; + switch (yych) { + case 'd': goto yy935; + default: goto yy57; } -yy334: - YYDEBUG(334, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy338; - goto yy199; - } else { - if (yych <= '2') goto yy354; - if (yych <= '9') goto yy349; - if (yych <= ':') goto yy338; - goto yy199; +yy924: + yych = *++YYCURSOR; + switch (yych) { + case 'h': goto yy935; + default: goto yy57; } -yy335: - YYDEBUG(335, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy338; - goto yy199; - } else { - if (yych <= '4') goto yy349; - if (yych <= '9') goto yy348; - if (yych <= ':') goto yy338; - goto yy199; +yy925: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': goto yy926; + case '2': goto yy927; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy928; + default: goto yy57; } -yy336: - YYDEBUG(336, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy338; - goto yy199; - } else { - if (yych <= '9') goto yy348; - if (yych <= ':') goto yy338; - goto yy199; +yy926: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy928; + case ':': goto yy929; + default: goto yy57; } -yy337: - YYDEBUG(337, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych != '.') goto yy199; - } else { - if (yych <= '9') goto yy263; - if (yych >= ';') goto yy199; +yy927: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy928; + case ':': goto yy929; + default: goto yy57; } -yy338: - YYDEBUG(338, *YYCURSOR); +yy928: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy339; - if (yych <= '6') goto yy340; - if (yych <= '9') goto yy266; - goto yy57; -yy339: - YYDEBUG(339, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; - } else { - if (yych <= '9') goto yy341; - if (yych <= ':') goto yy267; - goto yy223; + switch (yych) { + case ':': goto yy929; + default: goto yy57; } -yy340: - YYDEBUG(340, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; - } else { - if (yych <= '0') goto yy229; - if (yych == ':') goto yy267; - goto yy223; +yy929: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy930; + case '6': + case '7': + case '8': + case '9': goto yy931; + default: goto yy57; } -yy341: - YYDEBUG(341, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ' ') { - if (yych == '\t') goto yy343; - if (yych <= 0x1F) goto yy223; - goto yy343; - } else { - if (yych <= '(') { - if (yych <= '\'') goto yy223; - goto yy343; - } else { - if (yych == '+') goto yy343; - goto yy223; - } - } - } else { - if (yych <= ':') { - if (yych <= '-') goto yy343; - if (yych <= '.') goto yy267; - if (yych <= '9') goto yy223; - goto yy267; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy223; - goto yy343; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy343; - goto yy223; - } - } +yy930: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy931; + case ':': goto yy932; + default: goto yy57; } -yy342: - YYDEBUG(342, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; -yy343: - YYDEBUG(343, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\'') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy342; - } else { - if (yych == ' ') goto yy342; - goto yy57; - } - } else { - if (yych <= '+') { - if (yych <= '(') goto yy234; - if (yych <= '*') goto yy57; - goto yy233; - } else { - if (yych == '-') goto yy233; - goto yy57; - } - } - } else { - if (yych <= 'Z') { - if (yych <= 'G') { - if (yych <= 'A') goto yy344; - if (yych <= 'F') goto yy235; - goto yy232; - } else { - if (yych != 'P') goto yy235; - } - } else { - if (yych <= 'o') { - if (yych <= '`') goto yy57; - if (yych <= 'a') goto yy345; - goto yy236; - } else { - if (yych <= 'p') goto yy345; - if (yych <= 'z') goto yy236; - goto yy57; - } - } +yy931: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy932; + default: goto yy57; + } +yy932: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy933; + case '6': goto yy934; + case '7': + case '8': + case '9': goto yy782; + default: goto yy57; + } +yy933: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy782; + default: goto yy783; } -yy344: - YYDEBUG(344, *YYCURSOR); - yyaccept = 7; +yy934: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy782; + default: goto yy783; + } +yy935: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= '.') goto yy286; - if (yych <= '@') goto yy223; - goto yy237; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy346; - if (yych <= 'Z') goto yy237; - goto yy223; - } else { - if (yych == 'm') goto yy347; - if (yych <= 'z') goto yy242; - goto yy223; - } + switch (yych) { + case 'T': goto yy925; + default: goto yy597; } -yy345: - YYDEBUG(345, *YYCURSOR); - yyaccept = 7; +yy936: + yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= '.') goto yy286; - if (yych <= '@') goto yy223; - goto yy237; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy346; - if (yych <= 'Z') goto yy237; - goto yy223; - } else { - if (yych == 'm') goto yy346; - if (yych <= 'z') goto yy237; - goto yy223; - } + switch (yych) { + case '-': goto yy937; + default: goto yy914; } -yy346: - YYDEBUG(346, *YYCURSOR); - yyaccept = 7; +yy937: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy938; + case '1': + case '2': goto yy939; + case '3': goto yy940; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy920; + default: goto yy57; + } +yy938: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ')') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy223; - goto yy278; - } else { - if (yych == ' ') goto yy278; - if (yych <= '(') goto yy223; - goto yy228; - } - } else { - if (yych <= '@') { - if (yych == '.') goto yy288; - goto yy223; - } else { - if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy238; - goto yy223; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy941; + case 'T': goto yy925; + case 'n': goto yy922; + case 'r': goto yy923; + case 's': goto yy921; + case 't': goto yy924; + default: goto yy597; } -yy347: - YYDEBUG(347, *YYCURSOR); - yyaccept = 7; +yy939: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy223; - } else { - if (yych <= '(') { - if (yych <= ' ') goto yy278; - goto yy223; - } else { - if (yych <= ')') goto yy228; - if (yych <= ',') goto yy223; - goto yy244; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '.') goto yy288; - if (yych <= '/') goto yy244; - if (yych <= '@') goto yy223; - goto yy238; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy223; - goto yy244; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy243; - goto yy223; - } - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy941; + case 'T': goto yy925; + case 'n': goto yy922; + case 'r': goto yy923; + case 's': goto yy921; + case 't': goto yy924; + default: goto yy597; } -yy348: - YYDEBUG(348, *YYCURSOR); - yyaccept = 6; +yy940: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy199; - } else { - if (yych <= '9') goto yy289; - if (yych <= ':') goto yy225; - goto yy199; + switch (yych) { + case '0': + case '1': goto yy941; + case 'T': goto yy925; + case 'n': goto yy922; + case 'r': goto yy923; + case 's': goto yy921; + case 't': goto yy924; + default: goto yy597; } -yy349: - YYDEBUG(349, *YYCURSOR); - yyaccept = 6; +yy941: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych != '.') goto yy199; - } else { - if (yych <= '9') goto yy289; - if (yych >= ';') goto yy199; + switch (yych) { + case 'T': goto yy942; + case 'n': goto yy922; + case 'r': goto yy923; + case 's': goto yy921; + case 't': goto yy924; + default: goto yy395; } -yy350: - YYDEBUG(350, *YYCURSOR); +yy942: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy351; - if (yych <= '6') goto yy352; - if (yych <= '9') goto yy224; - goto yy57; -yy351: - YYDEBUG(351, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy223; - } else { - if (yych <= '9') goto yy353; - if (yych <= ':') goto yy225; - goto yy223; + switch (yych) { + case '0': + case '1': goto yy943; + case '2': goto yy944; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy928; + default: goto yy57; } -yy352: - YYDEBUG(352, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy223; - } else { - if (yych <= '0') goto yy229; - if (yych == ':') goto yy225; - goto yy223; +yy943: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy945; + case ':': goto yy929; + default: goto yy57; } -yy353: - YYDEBUG(353, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ' ') { - if (yych == '\t') goto yy231; - if (yych <= 0x1F) goto yy223; - goto yy231; - } else { - if (yych <= '(') { - if (yych <= '\'') goto yy223; - goto yy231; - } else { - if (yych == '+') goto yy231; - goto yy223; - } - } - } else { - if (yych <= ':') { - if (yych <= '-') goto yy231; - if (yych <= '.') goto yy225; - if (yych <= '9') goto yy223; - goto yy225; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy223; - goto yy231; - } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy231; - goto yy223; - } - } +yy944: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy945; + case ':': goto yy929; + default: goto yy57; } -yy354: - YYDEBUG(354, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy338; - goto yy199; - } else { - if (yych <= '9') goto yy289; - if (yych <= ':') goto yy338; - goto yy199; +yy945: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy946; + default: goto yy57; } -yy355: - YYDEBUG(355, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych == '.') goto yy300; - goto yy216; - } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; - } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy946: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy947; + case '6': + case '7': + case '8': + case '9': goto yy931; + default: goto yy57; } -yy356: - YYDEBUG(356, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych == '.') goto yy300; - goto yy216; - } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; - } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy947: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy948; + case ':': goto yy932; + default: goto yy57; } -yy357: - YYDEBUG(357, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy360; - goto yy361; - } else { - if (yych <= '2') goto yy368; - if (yych <= '9') goto yy369; - goto yy216; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; - } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy948: + yych = *++YYCURSOR; + switch (yych) { + case ':': goto yy949; + default: goto yy57; } -yy358: - YYDEBUG(358, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy360; - goto yy361; - } else { - if (yych <= '2') goto yy368; - if (yych <= '9') goto yy369; - goto yy216; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; - } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy949: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy950; + case '6': goto yy951; + case '7': + case '8': + case '9': goto yy782; + default: goto yy57; } -yy359: - YYDEBUG(359, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych >= '1') goto yy361; - } else { - if (yych <= '2') goto yy209; - if (yych <= '9') goto yy210; - goto yy216; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; - } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy950: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy952; + default: goto yy783; } -yy360: - YYDEBUG(360, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych <= ',') goto yy216; - if (yych <= '-') goto yy362; - if (yych <= '.') goto yy331; - goto yy216; - } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy221; - if (yych == 'n') goto yy212; - goto yy216; - } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy951: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy952; + default: goto yy783; } -yy361: - YYDEBUG(361, *YYCURSOR); - yyaccept = 6; +yy952: + yyaccept = 22; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych <= ',') goto yy216; - if (yych <= '-') goto yy362; - if (yych <= '.') goto yy300; - goto yy216; - } else { - if (yych <= '0') goto yy301; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; - } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } + switch (yych) { + case '.': goto yy953; + default: goto yy783; } -yy362: - YYDEBUG(362, *YYCURSOR); +yy953: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(363, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy364; - if (yych <= '9') goto yy365; -yy364: - YYDEBUG(364, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("pgtextshort"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->m = timelib_get_month((char **) &ptr); - s->time->d = timelib_get_nr((char **) &ptr, 2); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_PG_TEXT; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy954; + default: goto yy57; } -yy365: - YYDEBUG(365, *YYCURSOR); +yy954: + yyaccept = 22; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); + yych = *YYCURSOR; + switch (yych) { + case '+': + case '-': goto yy957; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy954; + case 'G': goto yy956; + default: goto yy783; + } +yy956: yych = *++YYCURSOR; - if (yych <= '/') goto yy364; - if (yych >= ':') goto yy364; - YYDEBUG(366, *YYCURSOR); + switch (yych) { + case 'M': goto yy963; + default: goto yy57; + } +yy957: yych = *++YYCURSOR; - if (yych <= '/') goto yy364; - if (yych >= ':') goto yy364; - YYDEBUG(367, *YYCURSOR); + switch (yych) { + case '0': + case '1': goto yy958; + case '2': goto yy959; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy960; + default: goto yy57; + } +yy958: yych = *++YYCURSOR; - goto yy364; -yy368: - YYDEBUG(368, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych <= ',') goto yy216; - if (yych <= '-') goto yy362; - if (yych <= '.') goto yy300; - goto yy216; - } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; - } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy960; + case ':': goto yy961; + default: goto yy783; } -yy369: - YYDEBUG(369, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych <= ',') goto yy216; - if (yych <= '-') goto yy362; - if (yych <= '.') goto yy300; - goto yy216; - } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; - } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; - } +yy959: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy960; + case '5': goto yy962; + case '6': + case '7': + case '8': + case '9': goto yy782; + case ':': goto yy961; + default: goto yy783; } -yy370: - YYDEBUG(370, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'B') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'C') goto yy193; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'b') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'c') goto yy371; - if (yych <= 'z') goto yy147; - goto yy4; - } - } +yy960: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy962; + case '6': + case '7': + case '8': + case '9': goto yy782; + case ':': goto yy961; + default: goto yy783; } -yy371: - YYDEBUG(371, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'D') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'E') goto yy202; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 'd') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'e') goto yy373; - if (yych <= 'z') goto yy151; - goto yy194; - } - } +yy961: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy962; + case '6': + case '7': + case '8': + case '9': goto yy782; + default: goto yy783; } -yy372: - YYDEBUG(372, *YYCURSOR); +yy962: yych = *++YYCURSOR; - if (yybm[0+yych] & 8) { - goto yy149; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy782; + default: goto yy783; } - if (yych <= '/') goto yy196; - if (yych <= '0') goto yy357; - if (yych <= '2') goto yy358; - if (yych <= '3') goto yy359; - goto yy196; -yy373: - YYDEBUG(373, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'M') goto yy203; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'l') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'm') goto yy374; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy963: + yych = *++YYCURSOR; + switch (yych) { + case 'T': goto yy964; + default: goto yy57; } -yy374: - YYDEBUG(374, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'A') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'B') goto yy204; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'b') goto yy375; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy964: + yych = *++YYCURSOR; + switch (yych) { + case '+': + case '-': goto yy957; + default: goto yy57; } -yy375: - YYDEBUG(375, *YYCURSOR); - yyaccept = 0; +yy965: + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy966; + default: goto yy57; + } +yy966: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'E') goto yy205; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'e') goto yy376; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case '-': goto yy707; + case 'E': + case 'e': goto yy820; + default: goto yy734; } -yy376: - YYDEBUG(376, *YYCURSOR); +yy967: yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych != 'r') goto yy155; -yy377: - YYDEBUG(377, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; + switch (yych) { + case 'V': + case 'v': goto yy968; + default: goto yy57; } - if (yych <= '-') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy194; - } else { - if (yych <= ' ') goto yy196; - if (yych <= ',') goto yy194; - } - } else { - if (yych <= '9') { - if (yych == '/') goto yy148; - goto yy196; - } else { - if (yych == '_') goto yy148; - goto yy194; - } +yy968: + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy707; + case 'E': + case 'e': goto yy827; + default: goto yy734; } -yy378: - YYDEBUG(378, *YYCURSOR); +yy969: yych = *++YYCURSOR; - if (yybm[0+yych] & 8) { - goto yy149; + switch (yych) { + case 'T': + case 't': goto yy970; + default: goto yy57; } - goto yy196; -yy379: - YYDEBUG(379, *YYCURSOR); +yy970: + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy707; + case 'O': + case 'o': goto yy833; + default: goto yy734; + } +yy971: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy142; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 't') goto yy380; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case 'P': + case 'p': goto yy972; + default: goto yy57; } -yy380: - YYDEBUG(380, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'O') goto yy143; - } - } else { - if (yych <= 'n') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'o') goto yy381; - if (yych <= 'z') goto yy143; - goto yy194; - } - } +yy972: + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy707; + case 'T': + case 't': goto yy973; + default: goto yy734; } -yy381: - YYDEBUG(381, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'B') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy144; - } - } else { - if (yych <= 'a') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'b') goto yy382; - if (yych <= 'z') goto yy144; - goto yy4; - } +yy973: + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy707; + case 'E': + case 'e': goto yy839; + default: goto yy734; } -yy382: - YYDEBUG(382, *YYCURSOR); +yy974: yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy145; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'e') goto yy383; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case 'G': + case 'g': goto yy977; + default: goto yy57; } -yy383: - YYDEBUG(383, *YYCURSOR); +yy975: yych = *++YYCURSOR; - if (yych <= 'Q') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'R') goto yy206; - if (yych == 'r') goto yy206; - goto yy4; + switch (yych) { + case 'R': + case 'r': goto yy976; + default: goto yy57; } -yy384: - YYDEBUG(384, *YYCURSOR); - yyaccept = 0; +yy976: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy380; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 't') goto yy385; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case '-': goto yy707; + case 'I': + case 'i': goto yy846; + default: goto yy734; } -yy385: - YYDEBUG(385, *YYCURSOR); - yyaccept = 5; +yy977: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'N') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'O') goto yy381; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 'n') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'o') goto yy386; - if (yych <= 'z') goto yy151; - goto yy194; - } - } + switch (yych) { + case '-': goto yy707; + case 'U': + case 'u': goto yy848; + default: goto yy734; } -yy386: - YYDEBUG(386, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'A') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'B') goto yy382; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'b') goto yy387; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy978: + yych = *++YYCURSOR; + switch (yych) { + case 'R': + case 'r': goto yy979; + case 'Y': + case 'y': goto yy980; + default: goto yy57; } -yy387: - YYDEBUG(387, *YYCURSOR); - yyaccept = 0; +yy979: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy383; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'e') goto yy388; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case '-': goto yy707; + case 'C': + case 'c': goto yy852; + default: goto yy734; } -yy388: - YYDEBUG(388, *YYCURSOR); - yyaccept = 0; +yy980: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'R') goto yy206; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'r') goto yy377; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case '-': goto yy707; + default: goto yy734; } -yy389: - YYDEBUG(389, *YYCURSOR); +yy981: yych = *++YYCURSOR; - if (yych <= 'G') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'F') goto yy142; - goto yy397; - } - } else { - if (yych <= 'f') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'g') goto yy397; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case 'B': + case 'b': goto yy982; + default: goto yy57; } -yy390: - YYDEBUG(390, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy142; - goto yy394; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'r') goto yy394; - if (yych <= 'z') goto yy142; - goto yy4; - } +yy982: + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy707; + case 'R': + case 'r': goto yy855; + default: goto yy734; } -yy391: - YYDEBUG(391, *YYCURSOR); +yy983: yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'N') goto yy142; - } - } else { - if (yych <= 'n') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'o') goto yy392; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy392: - YYDEBUG(392, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '@') { - if (yych == ')') goto yy140; - } else { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy393; - if (yych <= 'z') goto yy143; + switch (yych) { + case 'L': + case 'l': goto yy987; + case 'N': + case 'n': goto yy986; + default: goto yy57; } -yy393: - YYDEBUG(393, *YYCURSOR); - { - DEBUG_OUTPUT("ago"); - TIMELIB_INIT; - s->time->relative.y = 0 - s->time->relative.y; - s->time->relative.m = 0 - s->time->relative.m; - s->time->relative.d = 0 - s->time->relative.d; - s->time->relative.h = 0 - s->time->relative.h; - s->time->relative.i = 0 - s->time->relative.i; - s->time->relative.s = 0 - s->time->relative.s; - s->time->relative.weekday = 0 - s->time->relative.weekday; - if (s->time->relative.weekday == 0) { - s->time->relative.weekday = -7; - } - if (s->time->relative.have_special_relative && s->time->relative.special.type == TIMELIB_SPECIAL_WEEKDAY) { - s->time->relative.special.amount = 0 - s->time->relative.special.amount; - } - TIMELIB_DEINIT; - return TIMELIB_AGO; +yy984: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy985; + default: goto yy57; } -yy394: - YYDEBUG(394, *YYCURSOR); - yyaccept = 5; +yy985: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'I') goto yy143; - } - } else { - if (yych <= 'h') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'i') goto yy395; - if (yych <= 'z') goto yy143; - goto yy194; - } - } - } -yy395: - YYDEBUG(395, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'K') goto yy144; - } - } else { - if (yych <= 'k') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'l') goto yy396; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case '-': goto yy707; + case 'U': + case 'u': goto yy862; + default: goto yy734; } -yy396: - YYDEBUG(396, *YYCURSOR); - yyaccept = 5; +yy986: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy194; - } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy194; - } - } else { - if (yych <= '@') { - if (yych == '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy145; - goto yy194; - } + switch (yych) { + case '-': goto yy707; + case 'E': + case 'e': goto yy824; + default: goto yy734; } -yy397: - YYDEBUG(397, *YYCURSOR); - yyaccept = 5; +yy987: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'U') goto yy143; - } - } else { - if (yych <= 't') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'u') goto yy398; - if (yych <= 'z') goto yy143; - goto yy194; - } - } + switch (yych) { + case '-': goto yy707; + case 'Y': + case 'y': goto yy824; + default: goto yy734; } -yy398: - YYDEBUG(398, *YYCURSOR); +yy988: yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy144; - } - } else { - if (yych <= 'r') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 's') goto yy399; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case '\t': + case '.': goto yy671; + case '-': goto yy672; + case '/': goto yy670; + case 'U': + case 'u': goto yy78; + default: goto yy518; } -yy399: - YYDEBUG(399, *YYCURSOR); +yy989: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy145; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 't') goto yy400; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case 'C': + case 'c': goto yy129; + case 'P': + case 'p': goto yy526; + default: goto yy57; } -yy400: - YYDEBUG(400, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '.') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy196; - } else { - if (yych <= '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; - } +yy990: + yych = *++YYCURSOR; + switch (yych) { + case '\t': goto yy992; + case '-': goto yy991; + case '.': goto yy671; + case '/': goto yy670; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy681; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy994; } -yy401: - YYDEBUG(401, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'F') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'G') goto yy397; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'f') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'g') goto yy408; - if (yych <= 'z') goto yy147; - goto yy4; - } - } +yy991: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy995; + case '1': goto yy996; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy558; + case 'A': + case 'a': goto yy562; + case 'D': + case 'd': goto yy566; + case 'F': + case 'f': goto yy560; + case 'J': + case 'j': goto yy559; + case 'M': + case 'm': goto yy561; + case 'N': + case 'n': goto yy565; + case 'O': + case 'o': goto yy564; + case 'S': + case 's': goto yy563; + default: goto yy518; } -yy402: - YYDEBUG(402, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'R') goto yy394; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'r') goto yy405; - if (yych <= 'z') goto yy147; - goto yy4; - } - } +yy992: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy676; + case '1': goto yy677; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy678; + default: goto yy994; } -yy403: - YYDEBUG(403, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'O') goto yy392; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'n') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'o') goto yy404; - if (yych <= 'z') goto yy147; - goto yy4; - } - } +yy993: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; +yy994: + switch (yych) { + case '\t': + case ' ': goto yy993; + case '-': + case '.': goto yy517; + case 'A': + case 'a': goto yy514; + case 'D': + case 'd': goto yy406; + case 'F': + case 'f': goto yy407; + case 'H': + case 'h': goto yy64; + case 'I': goto yy415; + case 'J': + case 'j': goto yy419; + case 'M': + case 'm': goto yy405; + case 'N': + case 'n': goto yy422; + case 'O': + case 'o': goto yy421; + case 'S': + case 's': goto yy403; + case 'T': + case 't': goto yy69; + case 'V': goto yy417; + case 'W': + case 'w': goto yy68; + case 'X': goto yy418; + case 'Y': + case 'y': goto yy67; + default: goto yy57; } -yy404: - YYDEBUG(404, *YYCURSOR); - yyaccept = 9; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy393; - } else { - if (yych == '.') goto yy393; - goto yy148; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy393; - if (yych <= 'Z') goto yy143; - goto yy393; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy393; - if (yych <= 'z') goto yy151; - goto yy393; - } +yy995: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy595; + case '.': goto yy542; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy997; + default: goto yy57; } -yy405: - YYDEBUG(405, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'H') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'I') goto yy395; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 'h') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'i') goto yy406; - if (yych <= 'z') goto yy151; - goto yy194; - } - } +yy996: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy595; + case '.': goto yy542; + case '0': + case '1': + case '2': goto yy997; + default: goto yy57; } -yy406: - YYDEBUG(406, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'K') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'L') goto yy396; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'k') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'l') goto yy407; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy997: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy998; + case '.': goto yy542; + default: goto yy57; } -yy407: - YYDEBUG(407, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; - } else { - if (yych <= ')') { - if (yych <= '(') goto yy194; - goto yy140; - } else { - if (yych <= ',') goto yy194; - if (yych <= '-') goto yy378; - goto yy196; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '/') goto yy148; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy194; - goto yy145; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy194; - goto yy148; - } else { - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy153; - goto yy194; - } - } +yy998: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy999; + case '1': + case '2': goto yy1000; + case '3': goto yy1001; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy599; + default: goto yy57; } -yy408: - YYDEBUG(408, *YYCURSOR); - yyaccept = 5; +yy999: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'T') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'U') goto yy398; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 't') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'u') goto yy409; - if (yych <= 'z') goto yy151; - goto yy194; - } - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1002; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; } -yy409: - YYDEBUG(409, *YYCURSOR); - yyaccept = 0; +yy1000: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'S') goto yy399; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 's') goto yy410; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1002; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; } -yy410: - YYDEBUG(410, *YYCURSOR); - yyaccept = 0; +yy1001: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy400; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 't') goto yy411; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case '0': + case '1': goto yy1002; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy544; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy597; } -yy411: - YYDEBUG(411, *YYCURSOR); - yyaccept = 5; +yy1002: + yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; - } - if (yych <= ',') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy194; - } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy194; - } - } else { - if (yych <= '/') { - if (yych <= '-') goto yy378; - if (yych <= '.') goto yy196; - goto yy148; - } else { - if (yych <= '9') goto yy196; - if (yych == '_') goto yy148; - goto yy194; - } - } -yy412: - YYDEBUG(412, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == 'L') goto yy419; - if (yych <= 'M') goto yy142; - goto yy418; - } - } else { - if (yych <= 'l') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'k') goto yy142; - goto yy419; - } else { - if (yych == 'n') goto yy418; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy545; + case 'n': goto yy601; + case 'r': goto yy602; + case 's': goto yy600; + case 't': goto yy603; + default: goto yy704; } -yy413: - YYDEBUG(413, *YYCURSOR); +yy1003: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'n') goto yy414; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy414: - YYDEBUG(414, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'U') goto yy143; - } - } else { - if (yych <= 't') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'u') goto yy415; - if (yych <= 'z') goto yy143; - goto yy194; - } - } + switch (yych) { + case '\t': goto yy992; + case '-': goto yy991; + case '.': goto yy1004; + case '/': goto yy670; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1006; + case '6': + case '7': + case '8': + case '9': goto yy681; + case ':': goto yy1005; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy994; } -yy415: - YYDEBUG(415, *YYCURSOR); +yy1004: yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy144; - goto yy4; - } else { - if (yych <= 'a') goto yy416; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case '0': goto yy1028; + case '1': goto yy1029; + case '2': + case '3': + case '4': + case '5': goto yy1030; + case '6': + case '7': + case '8': + case '9': goto yy1031; + default: goto yy518; } -yy416: - YYDEBUG(416, *YYCURSOR); +yy1005: yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy145; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'r') goto yy417; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1023; + case '6': + case '7': + case '8': + case '9': goto yy1024; + default: goto yy57; } -yy417: - YYDEBUG(417, *YYCURSOR); +yy1006: yych = *++YYCURSOR; - if (yych <= 'X') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Y') goto yy206; - if (yych == 'y') goto yy206; - goto yy4; + switch (yych) { + case '-': goto yy725; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1007; + default: goto yy61; } -yy418: - YYDEBUG(418, *YYCURSOR); - yyaccept = 5; +yy1007: + yyaccept = 23; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych == 'E') goto yy420; - goto yy143; - } - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'e') goto yy420; - if (yych <= 'z') goto yy143; - goto yy194; - } - } + switch (yych) { + case '\t': + case ' ': + case 'A': + case 'D': + case 'F': + case 'H': + case 'I': + case 'J': + case 'M': + case 'N': + case 'O': + case 'S': + case 'T': + case 'V': + case 'X': + case 'Y': + case 'a': + case 'd': + case 'f': + case 'h': + case 'j': + case 'm': + case 'n': + case 'o': + case 's': + case 't': + case 'w': + case 'y': goto yy731; + case '-': goto yy728; + case '.': goto yy732; + case '/': goto yy729; + case '0': goto yy1009; + case '1': goto yy1010; + case '2': goto yy1011; + case '3': goto yy1012; + case '4': + case '5': goto yy1013; + case '6': goto yy1014; + case '7': + case '8': + case '9': goto yy55; + case ':': goto yy747; + case 'W': goto yy750; + default: goto yy1008; } -yy419: - YYDEBUG(419, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'Y') goto yy143; - } - } else { - if (yych <= 'x') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'y') goto yy420; - if (yych <= 'z') goto yy143; - goto yy194; - } +yy1008: + { + DEBUG_OUTPUT("gnunocolon"); + TIMELIB_INIT; + switch (s->time->have_time) { + case 0: + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = timelib_get_nr((char **) &ptr, 2); + s->time->s = 0; + break; + case 1: + s->time->y = timelib_get_nr((char **) &ptr, 4); + break; + default: + TIMELIB_DEINIT; + add_error(s, "Double time specification"); + return TIMELIB_ERROR; } + s->time->have_time++; + TIMELIB_DEINIT; + return TIMELIB_GNU_NOCOLON; } -yy420: - YYDEBUG(420, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy194; - } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy194; - } - } else { - if (yych <= '@') { - if (yych == '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy144; - goto yy194; - } +yy1009: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy1021; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1022; + default: goto yy61; } -yy421: - YYDEBUG(421, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; - } else { - if (yych == 'L') goto yy419; - goto yy142; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= 'N') goto yy418; - goto yy142; - } else { - if (yych == '_') goto yy148; - goto yy4; - } - } else { - if (yych <= 'm') { - if (yych == 'l') goto yy428; - goto yy147; - } else { - if (yych <= 'n') goto yy427; - if (yych <= 'z') goto yy147; - goto yy4; - } - } +yy1010: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': goto yy1020; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1019; + default: goto yy61; } -yy422: - YYDEBUG(422, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy414; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'n') goto yy423; - if (yych <= 'z') goto yy147; - goto yy4; - } - } +yy1011: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1019; + default: goto yy61; } -yy423: - YYDEBUG(423, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'T') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'U') goto yy415; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 't') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'u') goto yy424; - if (yych <= 'z') goto yy151; - goto yy194; - } - } +yy1012: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1017; + case '6': goto yy1018; + case '7': + case '8': + case '9': goto yy1015; + default: goto yy61; } -yy424: - YYDEBUG(424, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy416; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy425; - if (yych <= 'z') goto yy152; - goto yy4; - } +yy1013: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1015; + default: goto yy61; } -yy425: - YYDEBUG(425, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'R') goto yy417; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'r') goto yy426; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy1014: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy1015; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy61; } -yy426: - YYDEBUG(426, *YYCURSOR); - yyaccept = 0; +yy1015: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'Y') goto yy206; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'y') goto yy377; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy55; + default: goto yy1016; } -yy427: - YYDEBUG(427, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'D') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'E') goto yy420; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 'd') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'e') goto yy429; - if (yych <= 'z') goto yy151; - goto yy194; +yy1016: + { + int tz_not_found; + DEBUG_OUTPUT("iso8601nocolon"); + TIMELIB_INIT; + TIMELIB_HAVE_TIME(); + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = timelib_get_nr((char **) &ptr, 2); + s->time->s = timelib_get_nr((char **) &ptr, 2); + + if (*ptr != '\0') { + s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); + if (tz_not_found) { + add_error(s, "The timezone could not be found in the database"); } } + TIMELIB_DEINIT; + return TIMELIB_ISO_NOCOLON; } -yy428: - YYDEBUG(428, *YYCURSOR); - yyaccept = 5; +yy1017: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'X') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'Y') goto yy420; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 'x') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'y') goto yy429; - if (yych <= 'z') goto yy151; - goto yy194; - } - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy1016; } -yy429: - YYDEBUG(429, *YYCURSOR); - yyaccept = 5; +yy1018: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; - } else { - if (yych <= ')') { - if (yych <= '(') goto yy194; - goto yy140; - } else { - if (yych <= ',') goto yy194; - if (yych <= '-') goto yy378; - goto yy196; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '/') goto yy148; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy194; - goto yy144; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy194; - goto yy148; - } else { - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy152; - goto yy194; - } - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': goto yy761; + case '7': + case '8': + case '9': goto yy55; + default: goto yy1016; } -yy430: - YYDEBUG(430, *YYCURSOR); - yyaccept = 0; +yy1019: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy142; - } else { - if (yych <= 'Z') { - if (yych >= 'J') goto yy142; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; - } - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy1016; } -yy431: - YYDEBUG(431, *YYCURSOR); - yyaccept = 0; +yy1020: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy4; - } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych == '/') goto yy4; - if (yych <= '9') goto yy196; - goto yy4; - } else { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': goto yy785; + case '1': + case '2': goto yy786; + case '3': goto yy787; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy1016; } -yy432: - YYDEBUG(432, *YYCURSOR); - yyaccept = 0; +yy1021: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy142; - } else { - if (yych <= 'Z') { - if (yych >= 'J') goto yy142; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; - } - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': goto yy817; + case '1': + case '2': goto yy786; + case '3': goto yy787; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy1016; } - YYDEBUG(433, *YYCURSOR); - yyaccept = 0; +yy1022: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy143; - } else { - if (yych <= 'Z') { - if (yych >= 'J') goto yy143; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy143; - goto yy4; - } - } + switch (yych) { + case '\t': + case ' ': + case 'D': + case 'F': + case 'H': + case 'M': + case 'S': + case 'T': + case 'W': + case 'Y': + case 'd': + case 'f': + case 'h': + case 'm': + case 's': + case 't': + case 'w': + case 'y': goto yy61; + case '0': goto yy785; + case '1': + case '2': goto yy786; + case '3': goto yy787; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy761; + default: goto yy1016; } - YYDEBUG(434, *YYCURSOR); - yyaccept = 0; +yy1023: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy4; - } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych == '/') goto yy4; - if (yych <= '9') goto yy196; - goto yy4; - } else { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case '.': + case ':': goto yy1025; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1024; + default: goto yy431; } -yy435: - YYDEBUG(435, *YYCURSOR); - yyaccept = 0; +yy1024: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy4; - } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych == '/') goto yy4; - if (yych <= '9') goto yy196; - goto yy4; - } else { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case '.': + case ':': goto yy1025; + default: goto yy431; } -yy436: - YYDEBUG(436, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy142; - } else { - if (yych <= 'Z') { - if (yych <= 'I') goto yy431; - goto yy142; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; - } - } +yy1025: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1026; + case '6': goto yy1027; + case '7': + case '8': + case '9': goto yy436; + default: goto yy57; } -yy437: - YYDEBUG(437, *YYCURSOR); - yyaccept = 0; +yy1026: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych <= '9') { - if (yych <= '/') goto yy4; - goto yy457; - } else { - if (yych <= ':') goto yy163; - if (yych <= 'C') goto yy4; - goto yy61; - } - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; - } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; - } else { - if (yych == 'g') goto yy4; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } + switch (yych) { + case '.': goto yy437; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy436; + default: goto yy431; } -yy438: - YYDEBUG(438, *YYCURSOR); - yyaccept = 0; +yy1027: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych <= '4') { - if (yych <= '/') goto yy4; - goto yy457; - } else { - if (yych <= '5') goto yy442; - if (yych <= '9') goto yy443; - goto yy163; - } - } - } else { - if (yych <= 'G') { - if (yych <= 'D') { - if (yych <= 'C') goto yy4; - goto yy61; - } else { - if (yych == 'F') goto yy61; - goto yy4; - } - } else { - if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy4; - } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy4; - goto yy61; - } - } - } - } else { - if (yych <= 'g') { - if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy4; - goto yy61; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy4; - goto yy61; - } else { - if (yych == 'f') goto yy61; - goto yy4; - } - } - } else { - if (yych <= 't') { - if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy4; - } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } + switch (yych) { + case '.': goto yy437; + case '0': goto yy436; + default: goto yy431; } -yy439: - YYDEBUG(439, *YYCURSOR); - yyaccept = 0; +yy1028: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych <= '5') { - if (yych <= '/') goto yy4; - goto yy442; - } else { - if (yych <= '9') goto yy443; - if (yych <= ':') goto yy163; - goto yy4; - } - } - } else { - if (yych <= 'G') { - if (yych == 'E') goto yy4; - if (yych <= 'F') goto yy61; - goto yy4; - } else { - if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy4; - } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy4; - goto yy61; - } - } - } - } else { - if (yych <= 'g') { - if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy4; - goto yy61; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy4; - goto yy61; - } else { - if (yych == 'f') goto yy61; - goto yy4; - } - } - } else { - if (yych <= 't') { - if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy4; - } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } + switch (yych) { + case '-': goto yy542; + case '.': goto yy1032; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1031; + case ':': goto yy1025; + default: goto yy431; } -yy440: - YYDEBUG(440, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(441, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy58; - } - if (yych <= ',') { - if (yych == '+') goto yy440; - goto yy57; - } else { - if (yych <= '-') goto yy440; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy55; - goto yy57; - } -yy442: - YYDEBUG(442, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy456; - if (yych <= 'C') goto yy4; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; - } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; - } else { - if (yych == 'g') goto yy4; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } +yy1029: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy542; + case '.': goto yy1032; + case '0': + case '1': + case '2': goto yy1031; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1024; + case ':': goto yy1025; + default: goto yy431; } -yy443: - YYDEBUG(443, *YYCURSOR); - yyaccept = 0; +yy1030: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy444; - if (yych <= 'C') goto yy4; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; - } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; - } else { - if (yych == 'g') goto yy4; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } + switch (yych) { + case '-': goto yy542; + case '.': goto yy1032; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1024; + case ':': goto yy1025; + default: goto yy431; } -yy444: - YYDEBUG(444, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych >= ':') goto yy61; -yy445: - YYDEBUG(445, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 2) { - goto yy55; +yy1031: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': goto yy542; + case '.': goto yy1032; + case ':': goto yy1025; + default: goto yy431; } - if (yych != '-') goto yy61; -yy446: - YYDEBUG(446, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy447; - if (yych <= '1') goto yy448; - goto yy57; -yy447: - YYDEBUG(447, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy449; - goto yy57; -yy448: - YYDEBUG(448, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; -yy449: - YYDEBUG(449, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '-') goto yy57; - YYDEBUG(450, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy451; - if (yych <= '2') goto yy452; - if (yych <= '3') goto yy453; - goto yy57; -yy451: - YYDEBUG(451, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy454; - goto yy57; -yy452: - YYDEBUG(452, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy454; - goto yy57; -yy453: - YYDEBUG(453, *YYCURSOR); +yy1032: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '2') goto yy57; -yy454: - YYDEBUG(454, *YYCURSOR); - ++YYCURSOR; -yy455: - YYDEBUG(455, *YYCURSOR); - { - DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_unsigned_nr((char **) &ptr, 4); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->d = timelib_get_nr((char **) &ptr, 2); - TIMELIB_DEINIT; - return TIMELIB_ISO_DATE; - } -yy456: - YYDEBUG(456, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy445; - if (yych <= 'C') goto yy4; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; - } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; - } else { - if (yych == 'g') goto yy4; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1033; + case '6': goto yy1034; + case '7': + case '8': + case '9': goto yy550; + default: goto yy57; } -yy457: - YYDEBUG(457, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych <= '5') { - if (yych <= '/') goto yy4; - } else { - if (yych <= '9') goto yy456; - if (yych <= ':') goto yy163; - goto yy4; - } - } - } else { - if (yych <= 'G') { - if (yych == 'E') goto yy4; - if (yych <= 'F') goto yy61; - goto yy4; - } else { - if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy4; - } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy4; - goto yy61; - } - } - } - } else { - if (yych <= 'g') { - if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy4; - goto yy61; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy4; - goto yy61; - } else { - if (yych == 'f') goto yy61; - goto yy4; - } - } - } else { - if (yych <= 't') { - if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy4; - } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } +yy1033: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '.': goto yy437; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1035; + default: goto yy431; } - YYDEBUG(458, *YYCURSOR); - yyaccept = 0; +yy1034: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy459; - if (yych <= 'C') goto yy4; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; - } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; - } else { - if (yych == 'g') goto yy4; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } + switch (yych) { + case '.': goto yy437; + case '0': goto yy1035; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy551; + default: goto yy431; } -yy459: - YYDEBUG(459, *YYCURSOR); - yyaccept = 0; +yy1035: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 2) { - goto yy55; + switch (yych) { + case '.': goto yy437; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy545; + default: goto yy431; } - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; - } else { - if (yych == '-') goto yy446; - if (yych <= 'C') goto yy4; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; - } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; - } else { - if (yych == 'g') goto yy4; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy4; - } - } - } +yy1036: + yych = *++YYCURSOR; + switch (yych) { + case '\t': goto yy400; + case '-': goto yy991; + case '.': goto yy414; + case '/': goto yy412; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1006; + case '6': + case '7': + case '8': + case '9': goto yy681; + case ':': goto yy423; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy402; } -yy460: - YYDEBUG(460, *YYCURSOR); +yy1037: yych = *++YYCURSOR; - if (yych <= '/') goto yy462; - if (yych <= '0') goto yy736; - if (yych <= '1') goto yy737; - if (yych <= '9') goto yy738; - goto yy462; -yy461: - YYDEBUG(461, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; -yy462: - YYDEBUG(462, *YYCURSOR); - YYDEBUG(-1, yych); switch (yych) { - case '\t': - case ' ': goto yy461; - case '-': - case '.': goto yy577; + case '\t': goto yy992; + case '-': goto yy991; + case '.': goto yy1004; + case '/': goto yy412; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1006; + case '6': + case '7': + case '8': + case '9': goto yy681; + case ':': goto yy1005; + case 'n': goto yy410; + case 'r': goto yy411; + case 's': goto yy404; + case 't': goto yy408; + default: goto yy994; + } +yy1038: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; case 'A': - case 'a': goto yy480; + case 'B': + case 'C': case 'D': - case 'd': goto yy466; case 'F': - case 'f': goto yy467; + case 'G': case 'H': - case 'h': goto yy64; - case 'I': goto yy475; + case 'I': case 'J': - case 'j': goto yy479; + case 'K': + case 'L': case 'M': - case 'm': goto yy465; case 'N': - case 'n': goto yy482; case 'O': - case 'o': goto yy481; case 'P': - case 'p': goto yy484; + case 'Q': + case 'R': case 'S': - case 's': goto yy463; case 'T': - case 't': goto yy69; - case 'V': goto yy477; + case 'U': + case 'V': case 'W': - case 'w': goto yy68; - case 'X': goto yy478; + case 'X': case 'Y': - case 'y': goto yy67; - default: goto yy57; - } -yy463: - YYDEBUG(463, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'D') { - if (yych == 'A') goto yy127; - goto yy57; - } else { - if (yych <= 'E') goto yy1049; - if (yych <= 'T') goto yy57; - goto yy126; - } - } else { - if (yych <= 'd') { - if (yych == 'a') goto yy127; - goto yy57; - } else { - if (yych <= 'e') goto yy1049; - if (yych == 'u') goto yy126; - goto yy57; - } - } -yy464: - YYDEBUG(464, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '`') { - if (yych <= 'D') { - if (yych == 'A') goto yy127; - goto yy57; - } else { - if (yych <= 'E') goto yy1049; - if (yych == 'U') goto yy126; - goto yy57; - } - } else { - if (yych <= 'e') { - if (yych <= 'a') goto yy127; - if (yych <= 'd') goto yy57; - goto yy1049; - } else { - if (yych <= 's') goto yy57; - if (yych <= 't') goto yy729; - if (yych <= 'u') goto yy126; - goto yy57; - } - } -yy465: - YYDEBUG(465, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'H') { - if (yych == 'A') goto yy592; - goto yy57; - } else { - if (yych <= 'I') goto yy118; - if (yych <= 'N') goto yy57; - goto yy117; - } - } else { - if (yych <= 'h') { - if (yych == 'a') goto yy592; - goto yy57; - } else { - if (yych <= 'i') goto yy118; - if (yych == 'o') goto yy117; - goto yy57; - } - } -yy466: - YYDEBUG(466, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy114; - if (yych <= 'D') goto yy57; - goto yy579; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy114; - } else { - if (yych == 'e') goto yy579; - goto yy57; - } - } -yy467: - YYDEBUG(467, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= 'N') { - if (yych == 'E') goto yy595; - goto yy57; - } else { - if (yych <= 'O') goto yy99; - if (yych <= 'Q') goto yy57; - goto yy98; - } - } else { - if (yych <= 'n') { - if (yych == 'e') goto yy595; - goto yy57; - } else { - if (yych <= 'o') goto yy99; - if (yych == 'r') goto yy98; - goto yy57; - } - } -yy468: - YYDEBUG(468, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'H') goto yy70; - if (yych <= 'T') goto yy57; - goto yy71; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy57; - goto yy1048; - } else { - if (yych == 'u') goto yy71; - goto yy57; - } + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'E': + case 'e': goto yy1039; + default: goto yy4; } -yy469: - YYDEBUG(469, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '-') goto yy742; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy741; - goto yy61; -yy470: - YYDEBUG(470, *YYCURSOR); +yy1039: yych = *++YYCURSOR; - if (yych <= 'c') { - if (yych == 'O') goto yy530; - goto yy57; - } else { - if (yych <= 'd') goto yy729; - if (yych == 'o') goto yy530; - goto yy57; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'V': + case 'v': goto yy1040; + default: goto yy4; } -yy471: - YYDEBUG(471, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy729; - goto yy57; -yy472: - YYDEBUG(472, *YYCURSOR); +yy1040: yych = *++YYCURSOR; - YYDEBUG(-1, yych); switch (yych) { - case '0': - case '1': - case '2': goto yy666; - case '3': goto yy668; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy669; + case ')': goto yy140; case 'A': - case 'a': goto yy673; + case 'B': + case 'C': case 'D': - case 'd': goto yy677; + case 'E': case 'F': - case 'f': goto yy671; + case 'G': + case 'H': case 'J': - case 'j': goto yy670; + case 'K': + case 'L': case 'M': - case 'm': goto yy672; case 'N': - case 'n': goto yy676; case 'O': - case 'o': goto yy675; + case 'P': + case 'Q': + case 'R': case 'S': - case 's': goto yy674; - default: goto yy57; + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'I': + case 'i': goto yy1041; + default: goto yy4; } -yy473: - YYDEBUG(473, *YYCURSOR); +yy1041: yych = *++YYCURSOR; - YYDEBUG(-1, yych); switch (yych) { - case '0': goto yy616; - case '1': goto yy617; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy618; + case ')': goto yy140; case 'A': - case 'a': goto yy622; + case 'B': + case 'C': case 'D': - case 'd': goto yy626; + case 'E': case 'F': - case 'f': goto yy620; + case 'G': + case 'H': + case 'I': case 'J': - case 'j': goto yy619; + case 'K': + case 'L': case 'M': - case 'm': goto yy621; case 'N': - case 'n': goto yy625; - case 'O': - case 'o': goto yy624; + case 'P': + case 'Q': + case 'R': case 'S': - case 's': goto yy623; - default: goto yy578; - } -yy474: - YYDEBUG(474, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '1') { - if (yych <= '/') goto yy578; - if (yych <= '0') goto yy568; - goto yy569; - } else { - if (yych <= '5') goto yy570; - if (yych <= '9') goto yy571; - goto yy578; - } -yy475: - YYDEBUG(475, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '.') goto yy532; - } - } else { - if (yych <= 'U') { - if (yych <= '9') goto yy534; - if (yych == 'I') goto yy567; - } else { - if (yych == 'W') goto yy476; - if (yych <= 'X') goto yy540; - } - } -yy476: - YYDEBUG(476, *YYCURSOR); - { - DEBUG_OUTPUT("datenoyearrev"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->d = timelib_get_nr((char **) &ptr, 2); - timelib_skip_day_suffix((char **) &ptr); - s->time->m = timelib_get_month((char **) &ptr); - TIMELIB_DEINIT; - return TIMELIB_DATE_TEXT; - } -yy477: - YYDEBUG(477, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; - } else { - if (yych == ' ') goto yy532; - goto yy476; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; - } else { - if (yych == 'I') goto yy565; - goto yy476; - } - } -yy478: - YYDEBUG(478, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; - } else { - if (yych == ' ') goto yy532; - goto yy476; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; - } else { - if (yych == 'I') goto yy564; - goto yy476; - } - } -yy479: - YYDEBUG(479, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'A') goto yy557; - if (yych <= 'T') goto yy57; - goto yy556; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy557; - } else { - if (yych == 'u') goto yy556; - goto yy57; - } - } -yy480: - YYDEBUG(480, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'L') { - if (yych == '.') goto yy485; - goto yy57; - } else { - if (yych <= 'M') goto yy486; - if (yych == 'P') goto yy550; - goto yy57; - } - } else { - if (yych <= 'o') { - if (yych <= 'U') goto yy549; - if (yych == 'm') goto yy486; - goto yy57; - } else { - if (yych <= 'p') goto yy550; - if (yych == 'u') goto yy549; - goto yy57; - } - } -yy481: - YYDEBUG(481, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy544; - if (yych == 'c') goto yy544; - goto yy57; -yy482: - YYDEBUG(482, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy530; - if (yych == 'o') goto yy530; - goto yy57; -yy483: - YYDEBUG(483, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy490; - if (yych <= '9') goto yy492; - goto yy57; -yy484: - YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych != '.') goto yy57; - } else { - if (yych <= 'M') goto yy486; - if (yych == 'm') goto yy486; - goto yy57; - } -yy485: - YYDEBUG(485, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy486; - if (yych != 'm') goto yy57; -yy486: - YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy488; - if (yych == '\t') goto yy488; - goto yy57; - } else { - if (yych <= ' ') goto yy488; - if (yych != '.') goto yy57; - } - YYDEBUG(487, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy488; - if (yych <= 0x08) goto yy57; - } else { - if (yych != ' ') goto yy57; - } -yy488: - YYDEBUG(488, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(489, *YYCURSOR); - { - DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12"); - TIMELIB_INIT; - TIMELIB_HAVE_TIME(); - s->time->h = timelib_get_nr((char **) &ptr, 2); - if (*ptr == ':' || *ptr == '.') { - s->time->i = timelib_get_nr((char **) &ptr, 2); - if (*ptr == ':' || *ptr == '.') { - s->time->s = timelib_get_nr((char **) &ptr, 2); - } - } - s->time->h += timelib_meridian((char **) &ptr, s->time->h); - TIMELIB_DEINIT; - return TIMELIB_TIME12; - } -yy490: - YYDEBUG(490, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy493; - } else { - if (yych <= '9') goto yy507; - if (yych <= ':') goto yy493; - } -yy491: - YYDEBUG(491, *YYCURSOR); - { - int tz_not_found; - DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long"); - TIMELIB_INIT; - TIMELIB_HAVE_TIME(); - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = timelib_get_nr((char **) &ptr, 2); - if (*ptr == ':' || *ptr == '.') { - s->time->s = timelib_get_nr((char **) &ptr, 2); - - if (*ptr == '.') { - s->time->f = timelib_get_frac_nr((char **) &ptr, 8); - } - } - - if (*ptr != '\0') { - s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); - if (tz_not_found) { - add_error(s, "The timezone could not be found in the database"); - } - } - TIMELIB_DEINIT; - return TIMELIB_TIME24_WITH_ZONE; + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'O': + case 'o': goto yy1042; + default: goto yy4; } -yy492: - YYDEBUG(492, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy493; - if (yych != ':') goto yy491; -yy493: - YYDEBUG(493, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy494; - if (yych <= '6') goto yy495; - if (yych <= '9') goto yy496; - goto yy57; -yy494: - YYDEBUG(494, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy500; - goto yy491; -yy495: - YYDEBUG(495, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych == '0') goto yy500; - goto yy491; -yy496: - YYDEBUG(496, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych != '.') goto yy491; -yy497: - YYDEBUG(497, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy498: - YYDEBUG(498, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(499, *YYCURSOR); - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy498; - goto yy491; -yy500: - YYDEBUG(500, *YYCURSOR); - yyaccept = 11; +yy1042: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= 0x1F) { - if (yych != '\t') goto yy491; - } else { - if (yych <= ' ') goto yy501; - if (yych == '.') goto yy497; - goto yy491; - } - } else { - if (yych <= '`') { - if (yych <= 'A') goto yy503; - if (yych == 'P') goto yy503; - goto yy491; - } else { - if (yych <= 'a') goto yy503; - if (yych == 'p') goto yy503; - goto yy491; - } - } -yy501: - YYDEBUG(501, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(502, *YYCURSOR); - if (yych <= 'A') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy501; - goto yy57; - } else { - if (yych <= ' ') goto yy501; - if (yych <= '@') goto yy57; - } - } else { - if (yych <= '`') { - if (yych != 'P') goto yy57; - } else { - if (yych <= 'a') goto yy503; - if (yych != 'p') goto yy57; - } - } -yy503: - YYDEBUG(503, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych != '.') goto yy57; - } else { - if (yych <= 'M') goto yy505; - if (yych == 'm') goto yy505; - goto yy57; + switch (yych) { + case ')': goto yy140; + case 'U': + case 'u': goto yy1043; + default: goto yy4; } - YYDEBUG(504, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy505; - if (yych != 'm') goto yy57; -yy505: - YYDEBUG(505, *YYCURSOR); +yy1043: yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy488; - if (yych == '\t') goto yy488; - goto yy57; - } else { - if (yych <= ' ') goto yy488; - if (yych != '.') goto yy57; + switch (yych) { + case 'S': + case 's': goto yy1044; + default: goto yy57; } - YYDEBUG(506, *YYCURSOR); +yy1044: yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy488; - if (yych <= 0x08) goto yy57; - goto yy488; - } else { - if (yych == ' ') goto yy488; - goto yy57; - } -yy507: - YYDEBUG(507, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy508; - if (yych <= 0x1F) goto yy491; - } else { - if (yych == '.') goto yy493; - if (yych <= '9') goto yy491; - goto yy511; - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy510; - if (yych <= 'O') goto yy491; - goto yy510; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy510; - } else { - if (yych == 'p') goto yy510; - goto yy491; - } - } + switch (yych) { + case '\t': + case ' ': goto yy1045; + default: goto yy57; } -yy508: - YYDEBUG(508, *YYCURSOR); +yy1045: ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; - YYDEBUG(509, *YYCURSOR); - if (yych <= 'A') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy508; - goto yy57; - } else { - if (yych <= ' ') goto yy508; - if (yych <= '@') goto yy57; - } - } else { - if (yych <= '`') { - if (yych != 'P') goto yy57; - } else { - if (yych <= 'a') goto yy510; - if (yych != 'p') goto yy57; - } +yy1046: + switch (yych) { + case '\t': + case ' ': goto yy1045; + case 'D': + case 'd': goto yy1050; + case 'F': + case 'f': goto yy1051; + case 'H': + case 'h': goto yy1049; + case 'M': + case 'm': goto yy1048; + case 'S': + case 's': goto yy1047; + case 'T': + case 't': goto yy1054; + case 'W': + case 'w': goto yy1053; + case 'Y': + case 'y': goto yy1052; + default: goto yy57; } -yy510: - YYDEBUG(510, *YYCURSOR); +yy1047: yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych == '.') goto yy527; - goto yy57; - } else { - if (yych <= 'M') goto yy528; - if (yych == 'm') goto yy528; - goto yy57; + switch (yych) { + case 'A': + case 'a': goto yy1119; + case 'E': + case 'e': goto yy1120; + case 'U': + case 'u': goto yy1118; + default: goto yy57; } -yy511: - YYDEBUG(511, *YYCURSOR); +yy1048: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy512; - if (yych <= '6') goto yy513; - if (yych <= '9') goto yy496; - goto yy57; -yy512: - YYDEBUG(512, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy514; - goto yy491; -yy513: - YYDEBUG(513, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych != '0') goto yy491; -yy514: - YYDEBUG(514, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy501; - if (yych <= 0x1F) goto yy491; - goto yy501; - } else { - if (yych == '.') goto yy515; - if (yych <= '9') goto yy491; - goto yy516; - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy503; - if (yych <= 'O') goto yy491; - goto yy503; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy503; - } else { - if (yych == 'p') goto yy503; - goto yy491; - } - } + switch (yych) { + case 'I': + case 'i': goto yy1110; + case 'O': + case 'o': goto yy1109; + default: goto yy57; } -yy515: - YYDEBUG(515, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy525; - goto yy57; -yy516: - YYDEBUG(516, *YYCURSOR); +yy1049: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy517: - YYDEBUG(517, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(518, *YYCURSOR); - if (yych <= 'O') { - if (yych <= '9') { - if (yych <= '/') goto yy57; - goto yy517; - } else { - if (yych != 'A') goto yy57; - } - } else { - if (yych <= 'a') { - if (yych <= 'P') goto yy519; - if (yych <= '`') goto yy57; - } else { - if (yych != 'p') goto yy57; - } + switch (yych) { + case 'O': + case 'o': goto yy1107; + default: goto yy57; } -yy519: - YYDEBUG(519, *YYCURSOR); +yy1050: yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych != '.') goto yy57; - } else { - if (yych <= 'M') goto yy521; - if (yych == 'm') goto yy521; - goto yy57; + switch (yych) { + case 'A': + case 'a': goto yy1106; + default: goto yy57; } - YYDEBUG(520, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy521; - if (yych != 'm') goto yy57; -yy521: - YYDEBUG(521, *YYCURSOR); +yy1051: yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy523; - if (yych == '\t') goto yy523; - goto yy57; - } else { - if (yych <= ' ') goto yy523; - if (yych != '.') goto yy57; + switch (yych) { + case 'O': + case 'o': goto yy1091; + case 'R': + case 'r': goto yy1090; + default: goto yy57; } - YYDEBUG(522, *YYCURSOR); +yy1052: yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy523; - if (yych <= 0x08) goto yy57; - } else { - if (yych != ' ') goto yy57; - } -yy523: - YYDEBUG(523, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(524, *YYCURSOR); - { - DEBUG_OUTPUT("mssqltime"); - TIMELIB_INIT; - TIMELIB_HAVE_TIME(); - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = timelib_get_nr((char **) &ptr, 2); - if (*ptr == ':' || *ptr == '.') { - s->time->s = timelib_get_nr((char **) &ptr, 2); - - if (*ptr == ':' || *ptr == '.') { - s->time->f = timelib_get_frac_nr((char **) &ptr, 8); - } - } - timelib_eat_spaces((char **) &ptr); - s->time->h += timelib_meridian((char **) &ptr, s->time->h); - TIMELIB_DEINIT; - return TIMELIB_TIME24_WITH_ZONE; - } -yy525: - YYDEBUG(525, *YYCURSOR); - yyaccept = 11; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(526, *YYCURSOR); - if (yych <= 'O') { - if (yych <= '9') { - if (yych <= '/') goto yy491; - goto yy525; - } else { - if (yych == 'A') goto yy519; - goto yy491; - } - } else { - if (yych <= 'a') { - if (yych <= 'P') goto yy519; - if (yych <= '`') goto yy491; - goto yy519; - } else { - if (yych == 'p') goto yy519; - goto yy491; - } + switch (yych) { + case 'E': + case 'e': goto yy1087; + default: goto yy57; } -yy527: - YYDEBUG(527, *YYCURSOR); +yy1053: yych = *++YYCURSOR; - if (yych == 'M') goto yy528; - if (yych != 'm') goto yy57; -yy528: - YYDEBUG(528, *YYCURSOR); + switch (yych) { + case 'E': + case 'e': goto yy1073; + default: goto yy57; + } +yy1054: yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy488; - if (yych == '\t') goto yy488; - goto yy57; - } else { - if (yych <= ' ') goto yy488; - if (yych != '.') goto yy57; + switch (yych) { + case 'H': + case 'h': goto yy1055; + case 'U': + case 'u': goto yy1056; + default: goto yy57; } - YYDEBUG(529, *YYCURSOR); +yy1055: yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy488; - if (yych <= 0x08) goto yy57; - goto yy488; - } else { - if (yych == ' ') goto yy488; - goto yy57; + switch (yych) { + case 'U': + case 'u': goto yy1068; + default: goto yy57; } -yy530: - YYDEBUG(530, *YYCURSOR); +yy1056: yych = *++YYCURSOR; - if (yych == 'V') goto yy531; - if (yych != 'v') goto yy57; -yy531: - YYDEBUG(531, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych != '\t') goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'E') goto yy536; - if (yych == 'e') goto yy536; - goto yy476; - } + switch (yych) { + case 'E': + case 'e': goto yy1057; + default: goto yy57; } -yy532: - YYDEBUG(532, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; -yy533: - YYDEBUG(533, *YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy532; - if (yych <= 0x1F) goto yy57; - goto yy532; - } else { - if (yych <= '.') { - if (yych <= ',') goto yy57; - goto yy532; - } else { - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - } +yy1057: + yyaccept = 25; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy1059; + case 'S': + case 's': goto yy1061; + default: goto yy1058; } -yy534: - YYDEBUG(534, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy535; - if (yych <= '9') goto yy541; -yy535: - YYDEBUG(535, *YYCURSOR); +yy1058: { - int length = 0; - DEBUG_OUTPUT("datefull"); + timelib_sll i; + int behavior = 0; + DEBUG_OUTPUT("relativetext"); TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->d = timelib_get_nr((char **) &ptr, 2); - timelib_skip_day_suffix((char **) &ptr); - s->time->m = timelib_get_month((char **) &ptr); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_HAVE_RELATIVE(); + + while(*ptr) { + i = timelib_get_relative_text((char **) &ptr, &behavior); + timelib_eat_spaces((char **) &ptr); + timelib_set_relative((char **) &ptr, i, behavior, s); + } TIMELIB_DEINIT; - return TIMELIB_DATE_FULL; + return TIMELIB_RELATIVE; } -yy536: - YYDEBUG(536, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy537; - if (yych != 'm') goto yy57; -yy537: - YYDEBUG(537, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy538; - if (yych != 'b') goto yy57; -yy538: - YYDEBUG(538, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy539; - if (yych != 'e') goto yy57; -yy539: - YYDEBUG(539, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych != 'r') goto yy57; -yy540: - YYDEBUG(540, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy532; - if (yych <= 0x1F) goto yy476; - goto yy532; - } else { - if (yych <= '.') { - if (yych <= ',') goto yy476; - goto yy532; - } else { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } +yy1059: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy1059; + case 'O': + case 'o': goto yy1065; + default: goto yy57; } -yy541: - YYDEBUG(541, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych >= ':') goto yy535; -yy542: - YYDEBUG(542, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych >= ':') goto yy535; - YYDEBUG(543, *YYCURSOR); - yych = *++YYCURSOR; - goto yy535; -yy544: - YYDEBUG(544, *YYCURSOR); +yy1061: yych = *++YYCURSOR; - if (yych == 'T') goto yy545; - if (yych != 't') goto yy57; -yy545: - YYDEBUG(545, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'N') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'O') goto yy546; - if (yych != 'o') goto yy476; - } + switch (yych) { + case 'D': + case 'd': goto yy1062; + default: goto yy57; } -yy546: - YYDEBUG(546, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy547; - if (yych != 'b') goto yy57; -yy547: - YYDEBUG(547, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy548; - if (yych != 'e') goto yy57; -yy548: - YYDEBUG(548, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych == 'r') goto yy540; - goto yy57; -yy549: - YYDEBUG(549, *YYCURSOR); +yy1062: yych = *++YYCURSOR; - if (yych == 'G') goto yy553; - if (yych == 'g') goto yy553; - goto yy57; -yy550: - YYDEBUG(550, *YYCURSOR); + switch (yych) { + case 'A': + case 'a': goto yy1063; + default: goto yy57; + } +yy1063: yych = *++YYCURSOR; - if (yych == 'R') goto yy551; - if (yych != 'r') goto yy57; -yy551: - YYDEBUG(551, *YYCURSOR); - yyaccept = 10; + switch (yych) { + case 'Y': + case 'y': goto yy1064; + default: goto yy57; + } +yy1064: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'I') goto yy552; - if (yych != 'i') goto yy476; - } + switch (yych) { + case '\t': + case ' ': goto yy1059; + default: goto yy1058; } -yy552: - YYDEBUG(552, *YYCURSOR); +yy1065: yych = *++YYCURSOR; - if (yych == 'L') goto yy540; - if (yych == 'l') goto yy540; - goto yy57; -yy553: - YYDEBUG(553, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'T') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'U') goto yy554; - if (yych != 'u') goto yy476; + switch (yych) { + case 'F': + case 'f': goto yy1066; + default: goto yy57; + } +yy1066: + ++YYCURSOR; + { + timelib_sll i; + int behavior = 0; + DEBUG_OUTPUT("weekdayof"); + TIMELIB_INIT; + TIMELIB_HAVE_RELATIVE(); + TIMELIB_HAVE_SPECIAL_RELATIVE(); + + i = timelib_get_relative_text((char **) &ptr, &behavior); + timelib_eat_spaces((char **) &ptr); + if (i > 0) { /* first, second... etc */ + s->time->relative.special.type = TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH; + timelib_set_relative((char **) &ptr, i, 1, s); + } else { /* last */ + s->time->relative.special.type = TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH; + timelib_set_relative((char **) &ptr, i, behavior, s); } + TIMELIB_DEINIT; + return TIMELIB_WEEK_DAY_OF_MONTH; } -yy554: - YYDEBUG(554, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy555; - if (yych != 's') goto yy57; -yy555: - YYDEBUG(555, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy540; - if (yych == 't') goto yy540; - goto yy57; -yy556: - YYDEBUG(556, *YYCURSOR); +yy1068: + yyaccept = 25; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy1059; + case 'R': + case 'r': goto yy1069; + default: goto yy1058; + } +yy1069: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'L') goto yy563; - if (yych <= 'M') goto yy57; - goto yy562; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy563; - } else { - if (yych == 'n') goto yy562; - goto yy57; - } + switch (yych) { + case 'S': + case 's': goto yy1070; + default: goto yy57; } -yy557: - YYDEBUG(557, *YYCURSOR); +yy1070: yych = *++YYCURSOR; - if (yych == 'N') goto yy558; - if (yych != 'n') goto yy57; -yy558: - YYDEBUG(558, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'T') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'U') goto yy559; - if (yych != 'u') goto yy476; - } + switch (yych) { + case 'D': + case 'd': goto yy1071; + default: goto yy57; } -yy559: - YYDEBUG(559, *YYCURSOR); +yy1071: yych = *++YYCURSOR; - if (yych == 'A') goto yy560; - if (yych != 'a') goto yy57; -yy560: - YYDEBUG(560, *YYCURSOR); + switch (yych) { + case 'A': + case 'a': goto yy1072; + default: goto yy57; + } +yy1072: yych = *++YYCURSOR; - if (yych == 'R') goto yy561; - if (yych != 'r') goto yy57; -yy561: - YYDEBUG(561, *YYCURSOR); + switch (yych) { + case 'Y': + case 'y': goto yy1064; + default: goto yy57; + } +yy1073: yych = *++YYCURSOR; - if (yych == 'Y') goto yy540; - if (yych == 'y') goto yy540; - goto yy57; -yy562: - YYDEBUG(562, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'E') goto yy540; - if (yych == 'e') goto yy540; - goto yy476; - } + switch (yych) { + case 'D': + case 'd': goto yy1075; + case 'E': + case 'e': goto yy1074; + default: goto yy57; } -yy563: - YYDEBUG(563, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'X') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'Y') goto yy540; - if (yych == 'y') goto yy540; - goto yy476; - } +yy1074: + yych = *++YYCURSOR; + switch (yych) { + case 'K': + case 'k': goto yy1081; + default: goto yy57; } -yy564: - YYDEBUG(564, *YYCURSOR); - yyaccept = 10; +yy1075: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; - } else { - if (yych == ' ') goto yy532; - goto yy476; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; - } else { - if (yych == 'I') goto yy540; - goto yy476; - } + switch (yych) { + case '\t': + case ' ': goto yy1059; + case 'N': + case 'n': goto yy1076; + default: goto yy1058; } -yy565: - YYDEBUG(565, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; - } else { - if (yych == ' ') goto yy532; - goto yy476; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; - } else { - if (yych != 'I') goto yy476; - } +yy1076: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy1077; + default: goto yy57; } - YYDEBUG(566, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; - } else { - if (yych == ' ') goto yy532; - goto yy476; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; - } else { - if (yych == 'I') goto yy540; - goto yy476; - } +yy1077: + yych = *++YYCURSOR; + switch (yych) { + case 'S': + case 's': goto yy1078; + default: goto yy57; } -yy567: - YYDEBUG(567, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; - } else { - if (yych == ' ') goto yy532; - goto yy476; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; - } else { - if (yych == 'I') goto yy540; - goto yy476; - } +yy1078: + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy1079; + default: goto yy57; } -yy568: - YYDEBUG(568, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy601; - } else { - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy615; - if (yych <= ':') goto yy493; - goto yy491; +yy1079: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy1080; + default: goto yy57; } -yy569: - YYDEBUG(569, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - if (yych <= '.') goto yy601; - goto yy491; - } else { - if (yych <= '2') goto yy615; - if (yych <= '9') goto yy614; - if (yych <= ':') goto yy493; - goto yy491; +yy1080: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy1064; + default: goto yy57; } -yy570: - YYDEBUG(570, *YYCURSOR); - yyaccept = 11; +yy1081: + yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy601; - } else { - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy614; - if (yych <= ':') goto yy493; - goto yy491; + switch (yych) { + case 'D': + case 'd': goto yy1084; + case 'S': + case 's': goto yy1083; + default: goto yy1082; } -yy571: - YYDEBUG(571, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy601; - } else { - if (yych == ':') goto yy493; - goto yy491; +yy1082: + { + timelib_sll i; + int behavior = 0; + DEBUG_OUTPUT("relativetextweek"); + TIMELIB_INIT; + TIMELIB_HAVE_RELATIVE(); + + while(*ptr) { + i = timelib_get_relative_text((char **) &ptr, &behavior); + timelib_eat_spaces((char **) &ptr); + timelib_set_relative((char **) &ptr, i, behavior, s); + s->time->relative.weekday_behavior = 2; + + /* to handle the format weekday + last/this/next week */ + if (s->time->relative.have_weekday_relative == 0) { + TIMELIB_HAVE_WEEKDAY_RELATIVE(); + s->time->relative.weekday = 1; + } + } + TIMELIB_DEINIT; + return TIMELIB_RELATIVE; } -yy572: - YYDEBUG(572, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy595; - if (yych == 'e') goto yy595; - goto yy57; -yy573: - YYDEBUG(573, *YYCURSOR); +yy1083: yych = *++YYCURSOR; - if (yych == 'A') goto yy592; - if (yych == 'a') goto yy592; - goto yy57; -yy574: - YYDEBUG(574, *YYCURSOR); + goto yy1058; +yy1084: yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'P') goto yy550; - if (yych <= 'T') goto yy57; - goto yy549; - } else { - if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy550; - } else { - if (yych == 'u') goto yy549; - goto yy57; - } + switch (yych) { + case 'A': + case 'a': goto yy1085; + default: goto yy57; } -yy575: - YYDEBUG(575, *YYCURSOR); +yy1085: yych = *++YYCURSOR; - if (yych == 'E') goto yy585; - if (yych == 'e') goto yy585; - goto yy57; -yy576: - YYDEBUG(576, *YYCURSOR); + switch (yych) { + case 'Y': + case 'y': goto yy1086; + default: goto yy57; + } +yy1086: + yych = *++YYCURSOR; + switch (yych) { + case 'S': + case 's': goto yy1083; + default: goto yy1058; + } +yy1087: yych = *++YYCURSOR; - if (yych == 'E') goto yy579; - if (yych == 'e') goto yy579; - goto yy57; -yy577: - YYDEBUG(577, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; -yy578: - YYDEBUG(578, *YYCURSOR); - YYDEBUG(-1, yych); switch (yych) { - case '\t': - case ' ': - case '-': - case '.': goto yy577; case 'A': - case 'a': goto yy574; - case 'D': - case 'd': goto yy576; - case 'F': - case 'f': goto yy572; - case 'I': goto yy475; - case 'J': - case 'j': goto yy479; - case 'M': - case 'm': goto yy573; - case 'N': - case 'n': goto yy482; - case 'O': - case 'o': goto yy481; - case 'S': - case 's': goto yy575; - case 'V': goto yy477; - case 'X': goto yy478; + case 'a': goto yy1088; default: goto yy57; } -yy579: - YYDEBUG(579, *YYCURSOR); +yy1088: yych = *++YYCURSOR; - if (yych == 'C') goto yy580; - if (yych != 'c') goto yy57; -yy580: - YYDEBUG(580, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'E') goto yy581; - if (yych != 'e') goto yy476; - } + switch (yych) { + case 'R': + case 'r': goto yy1089; + default: goto yy57; } -yy581: - YYDEBUG(581, *YYCURSOR); +yy1089: yych = *++YYCURSOR; - if (yych == 'M') goto yy582; - if (yych != 'm') goto yy57; -yy582: - YYDEBUG(582, *YYCURSOR); + switch (yych) { + case 'S': + case 's': goto yy1083; + default: goto yy1058; + } +yy1090: yych = *++YYCURSOR; - if (yych == 'B') goto yy583; - if (yych != 'b') goto yy57; -yy583: - YYDEBUG(583, *YYCURSOR); + switch (yych) { + case 'I': + case 'i': goto yy1103; + default: goto yy57; + } +yy1091: yych = *++YYCURSOR; - if (yych == 'E') goto yy584; - if (yych != 'e') goto yy57; -yy584: - YYDEBUG(584, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy1092; + default: goto yy57; + } +yy1092: yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych == 'r') goto yy540; - goto yy57; -yy585: - YYDEBUG(585, *YYCURSOR); + switch (yych) { + case 'T': + case 't': goto yy1093; + default: goto yy57; + } +yy1093: yych = *++YYCURSOR; - if (yych == 'P') goto yy586; - if (yych != 'p') goto yy57; -yy586: - YYDEBUG(586, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'S') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'T') goto yy587; - if (yych != 't') goto yy476; - } + switch (yych) { + case 'H': + case 'h': goto yy1095; + case 'N': + case 'n': goto yy1094; + default: goto yy57; } -yy587: - YYDEBUG(587, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'E') goto yy588; - if (yych != 'e') goto yy476; - } +yy1094: + yych = *++YYCURSOR; + switch (yych) { + case 'I': + case 'i': goto yy1100; + default: goto yy57; } -yy588: - YYDEBUG(588, *YYCURSOR); +yy1095: yych = *++YYCURSOR; - if (yych == 'M') goto yy589; - if (yych != 'm') goto yy57; -yy589: - YYDEBUG(589, *YYCURSOR); + switch (yych) { + case 'N': + case 'n': goto yy1096; + default: goto yy57; + } +yy1096: yych = *++YYCURSOR; - if (yych == 'B') goto yy590; - if (yych != 'b') goto yy57; -yy590: - YYDEBUG(590, *YYCURSOR); + switch (yych) { + case 'I': + case 'i': goto yy1097; + default: goto yy57; + } +yy1097: yych = *++YYCURSOR; - if (yych == 'E') goto yy591; - if (yych != 'e') goto yy57; -yy591: - YYDEBUG(591, *YYCURSOR); + switch (yych) { + case 'G': + case 'g': goto yy1098; + default: goto yy57; + } +yy1098: yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych == 'r') goto yy540; - goto yy57; -yy592: - YYDEBUG(592, *YYCURSOR); + switch (yych) { + case 'H': + case 'h': goto yy1099; + default: goto yy57; + } +yy1099: yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'R') goto yy593; - if (yych <= 'X') goto yy57; - goto yy540; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy57; - } else { - if (yych == 'y') goto yy540; - goto yy57; - } + switch (yych) { + case 'T': + case 't': goto yy1089; + default: goto yy57; } -yy593: - YYDEBUG(593, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'B') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'C') goto yy594; - if (yych != 'c') goto yy476; - } +yy1100: + yych = *++YYCURSOR; + switch (yych) { + case 'G': + case 'g': goto yy1101; + default: goto yy57; } -yy594: - YYDEBUG(594, *YYCURSOR); +yy1101: yych = *++YYCURSOR; - if (yych == 'H') goto yy540; - if (yych == 'h') goto yy540; - goto yy57; -yy595: - YYDEBUG(595, *YYCURSOR); + switch (yych) { + case 'H': + case 'h': goto yy1102; + default: goto yy57; + } +yy1102: yych = *++YYCURSOR; - if (yych == 'B') goto yy596; - if (yych != 'b') goto yy57; -yy596: - YYDEBUG(596, *YYCURSOR); - yyaccept = 10; + switch (yych) { + case 'T': + case 't': goto yy1089; + default: goto yy57; + } +yy1103: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; - } - } else { - if (yych <= 'Q') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'R') goto yy597; - if (yych != 'r') goto yy476; - } + switch (yych) { + case '\t': + case ' ': goto yy1059; + case 'D': + case 'd': goto yy1104; + default: goto yy1058; } -yy597: - YYDEBUG(597, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy598; - if (yych != 'u') goto yy57; -yy598: - YYDEBUG(598, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy599; - if (yych != 'a') goto yy57; -yy599: - YYDEBUG(599, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy600; - if (yych != 'r') goto yy57; -yy600: - YYDEBUG(600, *YYCURSOR); +yy1104: yych = *++YYCURSOR; - if (yych == 'Y') goto yy540; - if (yych == 'y') goto yy540; - goto yy57; -yy601: - YYDEBUG(601, *YYCURSOR); + switch (yych) { + case 'A': + case 'a': goto yy1105; + default: goto yy57; + } +yy1105: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy608; - if (yych <= '6') goto yy609; - if (yych <= '9') goto yy610; - goto yy57; -yy602: - YYDEBUG(602, *YYCURSOR); + switch (yych) { + case 'Y': + case 'y': goto yy1064; + default: goto yy57; + } +yy1106: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(603, *YYCURSOR); + switch (yych) { + case 'Y': + case 'y': goto yy1089; + default: goto yy57; + } +yy1107: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy604: - YYDEBUG(604, *YYCURSOR); + switch (yych) { + case 'U': + case 'u': goto yy1108; + default: goto yy57; + } +yy1108: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy605: - YYDEBUG(605, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy1089; + default: goto yy57; + } +yy1109: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(606, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(607, *YYCURSOR); - { - DEBUG_OUTPUT("pointed date YYYY"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->d = timelib_get_nr((char **) &ptr, 2); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->y = timelib_get_nr((char **) &ptr, 4); - TIMELIB_DEINIT; - return TIMELIB_DATE_FULL_POINTED; + switch (yych) { + case 'N': + case 'n': goto yy1114; + default: goto yy57; } -yy608: - YYDEBUG(608, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy613; - goto yy491; -yy609: - YYDEBUG(609, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy497; - goto yy491; - } else { - if (yych <= '0') goto yy613; - if (yych <= '9') goto yy611; - goto yy491; +yy1110: + yych = *++YYCURSOR; + switch (yych) { + case 'N': + case 'n': goto yy1111; + default: goto yy57; } -yy610: - YYDEBUG(610, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych >= ':') goto yy491; -yy611: - YYDEBUG(611, *YYCURSOR); - yyaccept = 12; +yy1111: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy612; - if (yych <= '9') goto yy605; -yy612: - YYDEBUG(612, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("pointed date YY"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->d = timelib_get_nr((char **) &ptr, 2); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length); - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_DATE_FULL_POINTED; + switch (yych) { + case 'S': + case 's': goto yy1083; + case 'U': + case 'u': goto yy1112; + default: goto yy1058; } -yy613: - YYDEBUG(613, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= ' ') { - if (yych == '\t') goto yy501; - if (yych <= 0x1F) goto yy491; - goto yy501; - } else { - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - goto yy605; - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy503; - if (yych <= 'O') goto yy491; - goto yy503; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy503; - } else { - if (yych == 'p') goto yy503; - goto yy491; - } - } +yy1112: + yych = *++YYCURSOR; + switch (yych) { + case 'T': + case 't': goto yy1113; + default: goto yy57; } -yy614: - YYDEBUG(614, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy508; - if (yych <= 0x1F) goto yy491; - goto yy508; - } else { - if (yych == '.') goto yy493; - if (yych <= '9') goto yy491; - goto yy493; - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy510; - if (yych <= 'O') goto yy491; - goto yy510; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy510; - } else { - if (yych == 'p') goto yy510; - goto yy491; - } - } +yy1113: + yych = *++YYCURSOR; + switch (yych) { + case 'E': + case 'e': goto yy1089; + default: goto yy57; } -yy615: - YYDEBUG(615, *YYCURSOR); - yyaccept = 11; +yy1114: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy508; - if (yych <= 0x1F) goto yy491; - goto yy508; - } else { - if (yych <= '-') { - if (yych <= ',') goto yy491; - goto yy602; - } else { - if (yych <= '.') goto yy601; - if (yych <= '9') goto yy491; - goto yy493; - } - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy510; - if (yych <= 'O') goto yy491; - goto yy510; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy510; - } else { - if (yych == 'p') goto yy510; - goto yy491; - } - } + switch (yych) { + case '\t': + case ' ': goto yy1059; + case 'D': + case 'd': goto yy1115; + case 'T': + case 't': goto yy1116; + default: goto yy1058; } -yy616: - YYDEBUG(616, *YYCURSOR); +yy1115: yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - goto yy602; - } else { - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy618; - goto yy57; + switch (yych) { + case 'A': + case 'a': goto yy1117; + default: goto yy57; } -yy617: - YYDEBUG(617, *YYCURSOR); +yy1116: yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - goto yy602; - } else { - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; + switch (yych) { + case 'H': + case 'h': goto yy1089; + default: goto yy57; } -yy618: - YYDEBUG(618, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - if (yych <= '.') goto yy602; - goto yy57; -yy619: - YYDEBUG(619, *YYCURSOR); +yy1117: yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'A') goto yy651; - if (yych <= 'T') goto yy57; - goto yy650; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy651; - } else { - if (yych == 'u') goto yy650; - goto yy57; - } + switch (yych) { + case 'Y': + case 'y': goto yy1064; + default: goto yy57; } -yy620: - YYDEBUG(620, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy648; - if (yych == 'e') goto yy648; - goto yy57; -yy621: - YYDEBUG(621, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy645; - if (yych == 'a') goto yy645; - goto yy57; -yy622: - YYDEBUG(622, *YYCURSOR); +yy1118: yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'P') goto yy642; - if (yych <= 'T') goto yy57; - goto yy641; - } else { - if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy642; - } else { - if (yych == 'u') goto yy641; - goto yy57; - } + switch (yych) { + case 'N': + case 'n': goto yy1129; + default: goto yy57; } -yy623: - YYDEBUG(623, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy638; - if (yych == 'e') goto yy638; - goto yy57; -yy624: - YYDEBUG(624, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy636; - if (yych == 'c') goto yy636; - goto yy57; -yy625: - YYDEBUG(625, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy634; - if (yych == 'o') goto yy634; - goto yy57; -yy626: - YYDEBUG(626, *YYCURSOR); +yy1119: yych = *++YYCURSOR; - if (yych == 'E') goto yy627; - if (yych != 'e') goto yy57; -yy627: - YYDEBUG(627, *YYCURSOR); + switch (yych) { + case 'T': + case 't': goto yy1124; + default: goto yy57; + } +yy1120: yych = *++YYCURSOR; - if (yych == 'C') goto yy628; - if (yych != 'c') goto yy57; -yy628: - YYDEBUG(628, *YYCURSOR); - yyaccept = 10; + switch (yych) { + case 'C': + case 'c': goto yy1121; + default: goto yy57; + } +yy1121: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych >= '.') goto yy532; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'E') goto yy581; - if (yych == 'e') goto yy581; - goto yy476; - } + switch (yych) { + case 'O': + case 'o': goto yy1122; + case 'S': + case 's': goto yy1083; + default: goto yy1058; } -yy629: - YYDEBUG(629, *YYCURSOR); +yy1122: yych = *++YYCURSOR; - if (yych <= '/') goto yy533; - if (yych <= '0') goto yy630; - if (yych <= '2') goto yy631; - if (yych <= '3') goto yy632; - goto yy533; -yy630: - YYDEBUG(630, *YYCURSOR); + switch (yych) { + case 'N': + case 'n': goto yy1123; + default: goto yy57; + } +yy1123: yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych <= '9') goto yy633; - goto yy535; -yy631: - YYDEBUG(631, *YYCURSOR); + switch (yych) { + case 'D': + case 'd': goto yy1089; + default: goto yy57; + } +yy1124: + yyaccept = 25; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy1059; + case 'U': + case 'u': goto yy1125; + default: goto yy1058; + } +yy1125: yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych <= '9') goto yy633; - goto yy535; -yy632: - YYDEBUG(632, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy1126; + default: goto yy57; + } +yy1126: yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych <= '1') goto yy633; - if (yych <= '9') goto yy541; - goto yy535; -yy633: - YYDEBUG(633, *YYCURSOR); + switch (yych) { + case 'D': + case 'd': goto yy1127; + default: goto yy57; + } +yy1127: yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych <= '9') goto yy542; - goto yy535; -yy634: - YYDEBUG(634, *YYCURSOR); + switch (yych) { + case 'A': + case 'a': goto yy1128; + default: goto yy57; + } +yy1128: yych = *++YYCURSOR; - if (yych == 'V') goto yy635; - if (yych != 'v') goto yy57; -yy635: - YYDEBUG(635, *YYCURSOR); - yyaccept = 10; + switch (yych) { + case 'Y': + case 'y': goto yy1064; + default: goto yy57; + } +yy1129: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'E') goto yy536; - if (yych == 'e') goto yy536; - goto yy476; - } + switch (yych) { + case '\t': + case ' ': goto yy1059; + case 'D': + case 'd': goto yy1130; + default: goto yy1058; } -yy636: - YYDEBUG(636, *YYCURSOR); +yy1130: yych = *++YYCURSOR; - if (yych == 'T') goto yy637; - if (yych != 't') goto yy57; -yy637: - YYDEBUG(637, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'N') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'O') goto yy546; - if (yych == 'o') goto yy546; - goto yy476; - } + switch (yych) { + case 'A': + case 'a': goto yy1131; + default: goto yy57; } -yy638: - YYDEBUG(638, *YYCURSOR); +yy1131: yych = *++YYCURSOR; - if (yych == 'P') goto yy639; - if (yych != 'p') goto yy57; -yy639: - YYDEBUG(639, *YYCURSOR); - yyaccept = 10; + switch (yych) { + case 'Y': + case 'y': goto yy1064; + default: goto yy57; + } +yy1132: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'S') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'T') goto yy640; - if (yych != 't') goto yy476; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'E': goto yy1039; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'e': goto yy1133; + default: goto yy4; + } +yy1133: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'V': goto yy1040; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'v': goto yy1134; + default: goto yy4; } -yy640: - YYDEBUG(640, *YYCURSOR); - yyaccept = 10; +yy1134: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'E') goto yy588; - if (yych == 'e') goto yy588; - goto yy476; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'I': goto yy1041; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'i': goto yy1135; + default: goto yy4; } -yy641: - YYDEBUG(641, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy644; - if (yych == 'g') goto yy644; - goto yy57; -yy642: - YYDEBUG(642, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy643; - if (yych != 'r') goto yy57; -yy643: - YYDEBUG(643, *YYCURSOR); - yyaccept = 10; +yy1135: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'I') goto yy552; - if (yych == 'i') goto yy552; - goto yy476; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'O': goto yy1042; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'o': goto yy1136; + default: goto yy4; } -yy644: - YYDEBUG(644, *YYCURSOR); - yyaccept = 10; +yy1136: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'T') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'U') goto yy554; - if (yych == 'u') goto yy554; - goto yy476; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'U': goto yy1043; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'u': goto yy1137; + default: goto yy4; } -yy645: - YYDEBUG(645, *YYCURSOR); +yy1137: yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'R') goto yy646; - if (yych <= 'X') goto yy57; - goto yy647; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy57; - } else { - if (yych == 'y') goto yy647; - goto yy57; - } + switch (yych) { + case 'S': goto yy1044; + case 's': goto yy1138; + default: goto yy155; } -yy646: - YYDEBUG(646, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'B') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'C') goto yy594; - if (yych == 'c') goto yy594; - goto yy476; - } +yy1138: + yych = *++YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy1045; + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy57; } -yy647: - YYDEBUG(647, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; - } else { - if (yych == ' ') goto yy532; - goto yy476; - } - } else { - if (yych <= '.') { - if (yych <= '-') goto yy629; - goto yy532; - } else { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } +yy1139: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'G': + case 'g': goto yy1153; + default: goto yy4; } -yy648: - YYDEBUG(648, *YYCURSOR); +yy1140: yych = *++YYCURSOR; - if (yych == 'B') goto yy649; - if (yych != 'b') goto yy57; -yy649: - YYDEBUG(649, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'Q') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'R') goto yy597; - if (yych == 'r') goto yy597; - goto yy476; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'E': + case 'e': goto yy1141; + default: goto yy4; } -yy650: - YYDEBUG(650, *YYCURSOR); +yy1141: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'L') goto yy654; - if (yych <= 'M') goto yy57; - goto yy653; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy654; - } else { - if (yych == 'n') goto yy653; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'V': + case 'v': goto yy1142; + default: goto yy4; } -yy651: - YYDEBUG(651, *YYCURSOR); +yy1142: yych = *++YYCURSOR; - if (yych == 'N') goto yy652; - if (yych != 'n') goto yy57; -yy652: - YYDEBUG(652, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'T') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'U') goto yy559; - if (yych == 'u') goto yy559; - goto yy476; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'E': + case 'e': goto yy1143; + default: goto yy4; } -yy653: - YYDEBUG(653, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'E') goto yy540; - if (yych == 'e') goto yy540; - goto yy476; - } +yy1143: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'N': + case 'n': goto yy1144; + default: goto yy4; } -yy654: - YYDEBUG(654, *YYCURSOR); - yyaccept = 10; +yy1144: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; - } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; - } - } else { - if (yych <= 'X') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; - } else { - if (yych <= 'Y') goto yy540; - if (yych == 'y') goto yy540; - goto yy476; - } + switch (yych) { + case ')': goto yy140; + case 'T': + case 't': goto yy1145; + default: goto yy4; } -yy655: - YYDEBUG(655, *YYCURSOR); +yy1145: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy656; - if (yych <= '3') goto yy658; - if (yych <= '9') goto yy659; - goto yy57; -yy656: - YYDEBUG(656, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy665; - if (yych >= 'n') goto yy661; - } else { - if (yych <= 'r') { - if (yych >= 'r') goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - } - } -yy657: - YYDEBUG(657, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("gnudateshort"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->d = timelib_get_nr((char **) &ptr, 2); - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_ISO_DATE; - } -yy658: - YYDEBUG(658, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '1') { - if (yych <= '/') goto yy657; - goto yy665; - } else { - if (yych <= '9') goto yy604; - if (yych <= 'm') goto yy657; - goto yy661; - } - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy659: - YYDEBUG(659, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy604; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } + switch (yych) { + case 'H': + case 'h': goto yy1146; + default: goto yy57; } -yy660: - YYDEBUG(660, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 't') goto yy664; - goto yy57; -yy661: - YYDEBUG(661, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy664; - goto yy57; -yy662: - YYDEBUG(662, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy664; - goto yy57; -yy663: - YYDEBUG(663, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != 'h') goto yy57; -yy664: - YYDEBUG(664, *YYCURSOR); +yy1146: yych = *++YYCURSOR; - goto yy657; -yy665: - YYDEBUG(665, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy605; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy666: - YYDEBUG(666, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') { - if (yych >= '/') goto yy723; - } else { - if (yych <= '9') goto yy669; - if (yych >= 'n') goto yy720; - } - } else { - if (yych <= 'r') { - if (yych >= 'r') goto yy721; - } else { - if (yych <= 's') goto yy719; - if (yych <= 't') goto yy722; - } - } -yy667: - YYDEBUG(667, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("americanshort | american"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->d = timelib_get_nr((char **) &ptr, 2); - if (*ptr == '/') { - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - TIMELIB_PROCESS_YEAR(s->time->y, length); - } - TIMELIB_DEINIT; - return TIMELIB_AMERICAN; - } -yy668: - YYDEBUG(668, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') { - if (yych <= '.') goto yy667; - goto yy723; - } else { - if (yych <= '1') goto yy669; - if (yych <= 'm') goto yy667; - goto yy720; - } - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy667; - goto yy721; - } else { - if (yych <= 's') goto yy719; - if (yych <= 't') goto yy722; - goto yy667; - } + switch (yych) { + case '\t': + case ' ': goto yy1147; + default: goto yy57; } -yy669: - YYDEBUG(669, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych == '/') goto yy723; - if (yych <= 'm') goto yy667; - goto yy720; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy667; - goto yy721; - } else { - if (yych <= 's') goto yy719; - if (yych <= 't') goto yy722; - goto yy667; - } +yy1147: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; +yy1148: + switch (yych) { + case '\t': + case ' ': goto yy1147; + case 'D': + case 'd': goto yy1050; + case 'F': + case 'f': goto yy1051; + case 'H': + case 'h': goto yy1049; + case 'M': + case 'm': goto yy1048; + case 'S': + case 's': goto yy1047; + case 'T': + case 't': goto yy1054; + case 'W': + case 'w': goto yy1149; + case 'Y': + case 'y': goto yy1052; + default: goto yy57; } -yy670: - YYDEBUG(670, *YYCURSOR); +yy1149: yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'A') goto yy718; - if (yych <= 'T') goto yy57; - goto yy717; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy718; - } else { - if (yych == 'u') goto yy717; - goto yy57; - } + switch (yych) { + case 'E': + case 'e': goto yy1150; + default: goto yy57; } -yy671: - YYDEBUG(671, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy716; - if (yych == 'e') goto yy716; - goto yy57; -yy672: - YYDEBUG(672, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy715; - if (yych == 'a') goto yy715; - goto yy57; -yy673: - YYDEBUG(673, *YYCURSOR); +yy1150: yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'P') goto yy714; - if (yych <= 'T') goto yy57; - goto yy713; - } else { - if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy714; - } else { - if (yych == 'u') goto yy713; - goto yy57; - } + switch (yych) { + case 'D': + case 'd': goto yy1075; + case 'E': + case 'e': goto yy1151; + default: goto yy57; } -yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy711; - if (yych == 'e') goto yy711; - goto yy57; -yy675: - YYDEBUG(675, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy710; - if (yych == 'c') goto yy710; - goto yy57; -yy676: - YYDEBUG(676, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy709; - if (yych == 'o') goto yy709; - goto yy57; -yy677: - YYDEBUG(677, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy678; - if (yych != 'e') goto yy57; -yy678: - YYDEBUG(678, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy679; - if (yych != 'c') goto yy57; -yy679: - YYDEBUG(679, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '/') goto yy57; -yy680: - YYDEBUG(680, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(681, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(682, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(683, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(684, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(685, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy686; - if (yych <= '2') goto yy687; - goto yy57; -yy686: - YYDEBUG(686, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy688; - goto yy57; -yy687: - YYDEBUG(687, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '5') goto yy57; -yy688: - YYDEBUG(688, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(689, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '6') goto yy57; - YYDEBUG(690, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(691, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(692, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy693; - if (yych <= '6') goto yy694; - goto yy57; -yy693: - YYDEBUG(693, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy695; - goto yy57; -yy694: - YYDEBUG(694, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '0') goto yy57; -yy695: - YYDEBUG(695, *YYCURSOR); +yy1151: yych = *++YYCURSOR; - if (yych == '\t') goto yy696; - if (yych != ' ') goto yy57; -yy696: - YYDEBUG(696, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; - YYDEBUG(697, *YYCURSOR); - if (yych <= '*') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy696; - } else { - if (yych == ' ') goto yy696; - goto yy57; - } - } else { - if (yych <= '-') { - if (yych == ',') goto yy57; - goto yy699; - } else { - if (yych != 'G') goto yy57; - } + switch (yych) { + case 'K': + case 'k': goto yy1152; + default: goto yy57; } - YYDEBUG(698, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy707; - goto yy57; -yy699: - YYDEBUG(699, *YYCURSOR); +yy1152: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy700; - if (yych <= '2') goto yy702; - if (yych <= '9') goto yy703; - goto yy57; -yy700: - YYDEBUG(700, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy701; - if (yych <= '9') goto yy703; - if (yych <= ':') goto yy704; -yy701: - YYDEBUG(701, *YYCURSOR); - { - int tz_not_found; - DEBUG_OUTPUT("clf"); - TIMELIB_INIT; - TIMELIB_HAVE_TIME(); - TIMELIB_HAVE_DATE(); - s->time->d = timelib_get_nr((char **) &ptr, 2); - s->time->m = timelib_get_month((char **) &ptr); - s->time->y = timelib_get_nr((char **) &ptr, 4); - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = timelib_get_nr((char **) &ptr, 2); - s->time->s = timelib_get_nr((char **) &ptr, 2); - s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); - if (tz_not_found) { - add_error(s, "The timezone could not be found in the database"); - } - TIMELIB_DEINIT; - return TIMELIB_CLF; + switch (yych) { + case 'D': + case 'd': goto yy1084; + case 'S': + case 's': goto yy1083; + default: goto yy57; } -yy702: - YYDEBUG(702, *YYCURSOR); +yy1153: yych = *++YYCURSOR; - if (yych <= '5') { - if (yych <= '/') goto yy701; - if (yych >= '5') goto yy705; - } else { - if (yych <= '9') goto yy706; - if (yych <= ':') goto yy704; - goto yy701; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'H': + case 'h': goto yy1154; + default: goto yy4; } -yy703: - YYDEBUG(703, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy701; - if (yych <= '5') goto yy705; - if (yych <= '9') goto yy706; - if (yych >= ';') goto yy701; -yy704: - YYDEBUG(704, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy701; - if (yych <= '5') goto yy705; - if (yych <= '9') goto yy706; - goto yy701; -yy705: - YYDEBUG(705, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy701; - if (yych >= ':') goto yy701; -yy706: - YYDEBUG(706, *YYCURSOR); - yych = *++YYCURSOR; - goto yy701; -yy707: - YYDEBUG(707, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != 'T') goto yy57; - YYDEBUG(708, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '+') goto yy699; - if (yych == '-') goto yy699; - goto yy57; -yy709: - YYDEBUG(709, *YYCURSOR); +yy1154: yych = *++YYCURSOR; - if (yych == 'V') goto yy679; - if (yych == 'v') goto yy679; - goto yy57; -yy710: - YYDEBUG(710, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy679; - if (yych == 't') goto yy679; - goto yy57; -yy711: - YYDEBUG(711, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy712; - if (yych != 'p') goto yy57; -yy712: - YYDEBUG(712, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == '/') goto yy680; - goto yy57; - } else { - if (yych <= 'T') goto yy679; - if (yych == 't') goto yy679; - goto yy57; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'T': + case 't': goto yy1155; + default: goto yy4; } -yy713: - YYDEBUG(713, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy679; - if (yych == 'g') goto yy679; - goto yy57; -yy714: - YYDEBUG(714, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy679; - if (yych == 'r') goto yy679; - goto yy57; -yy715: - YYDEBUG(715, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'R') goto yy679; - if (yych <= 'X') goto yy57; - goto yy679; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy57; - goto yy679; - } else { - if (yych == 'y') goto yy679; - goto yy57; - } +yy1155: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy1147; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'H': + case 'h': goto yy1156; + default: goto yy4; } -yy716: - YYDEBUG(716, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy679; - if (yych == 'b') goto yy679; - goto yy57; -yy717: - YYDEBUG(717, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'L') goto yy679; - if (yych <= 'M') goto yy57; - goto yy679; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy679; - } else { - if (yych == 'n') goto yy679; - goto yy57; - } +yy1156: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy1147; + case ')': goto yy140; + default: goto yy4; } -yy718: - YYDEBUG(718, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy679; - if (yych == 'n') goto yy679; - goto yy57; -yy719: - YYDEBUG(719, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 't') goto yy728; - goto yy57; -yy720: - YYDEBUG(720, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy728; - goto yy57; -yy721: - YYDEBUG(721, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy728; - goto yy57; -yy722: - YYDEBUG(722, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'h') goto yy728; - goto yy57; -yy723: - YYDEBUG(723, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(724, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy667; - if (yych >= ':') goto yy667; - YYDEBUG(725, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy667; - if (yych >= ':') goto yy667; - YYDEBUG(726, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy667; - if (yych >= ':') goto yy667; - YYDEBUG(727, *YYCURSOR); - yych = *++YYCURSOR; - goto yy667; -yy728: - YYDEBUG(728, *YYCURSOR); - yyaccept = 14; +yy1157: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '/') goto yy723; - goto yy667; -yy729: - YYDEBUG(729, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '\t') goto yy731; - goto yy578; - } else { - if (yych <= '-') goto yy732; - if (yych <= '.') goto yy731; - if (yych >= '0') goto yy578; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'G': goto yy1153; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'g': goto yy1165; + default: goto yy4; } -yy730: - YYDEBUG(730, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); +yy1158: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; case 'A': - case 'a': goto yy673; + case 'B': + case 'C': case 'D': - case 'd': goto yy677; case 'F': - case 'f': goto yy671; + case 'G': + case 'H': + case 'I': case 'J': - case 'j': goto yy670; + case 'K': + case 'L': case 'M': - case 'm': goto yy672; case 'N': - case 'n': goto yy676; case 'O': - case 'o': goto yy675; + case 'P': + case 'Q': + case 'R': case 'S': - case 's': goto yy674; - default: goto yy57; - } -yy731: - YYDEBUG(731, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy578; - if (yych <= '0') goto yy736; - if (yych <= '1') goto yy737; - if (yych <= '9') goto yy738; - goto yy578; -yy732: - YYDEBUG(732, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy578; - if (yych <= '0') goto yy733; - if (yych <= '1') goto yy734; - if (yych <= '9') goto yy735; - goto yy578; -yy733: - YYDEBUG(733, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '.') goto yy602; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy735; - goto yy57; -yy734: - YYDEBUG(734, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '.') goto yy602; - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; -yy735: - YYDEBUG(735, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '.') goto yy602; - goto yy57; -yy736: - YYDEBUG(736, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy602; - goto yy739; - } else { - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy738; - goto yy57; - } -yy737: - YYDEBUG(737, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy602; - goto yy739; - } else { - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'E': goto yy1141; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'e': goto yy1159; + default: goto yy4; } -yy738: - YYDEBUG(738, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy602; - if (yych >= '/') goto yy57; -yy739: - YYDEBUG(739, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(740, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy611; - goto yy57; -yy741: - YYDEBUG(741, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '-') goto yy785; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy783; - goto yy61; -yy742: - YYDEBUG(742, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); +yy1159: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '0': goto yy751; - case '1': goto yy752; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy753; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; case 'A': - case 'a': goto yy746; + case 'B': + case 'C': case 'D': - case 'd': goto yy750; + case 'E': case 'F': - case 'f': goto yy744; + case 'G': + case 'H': + case 'I': case 'J': - case 'j': goto yy743; + case 'K': + case 'L': case 'M': - case 'm': goto yy745; case 'N': - case 'n': goto yy749; case 'O': - case 'o': goto yy748; + case 'P': + case 'Q': + case 'R': case 'S': - case 's': goto yy747; - default: goto yy57; - } -yy743: - YYDEBUG(743, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'A') goto yy782; - if (yych <= 'T') goto yy57; - goto yy781; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy782; - } else { - if (yych == 'u') goto yy781; - goto yy57; - } - } -yy744: - YYDEBUG(744, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy780; - if (yych == 'e') goto yy780; - goto yy57; -yy745: - YYDEBUG(745, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy779; - if (yych == 'a') goto yy779; - goto yy57; -yy746: - YYDEBUG(746, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'P') goto yy778; - if (yych <= 'T') goto yy57; - goto yy777; - } else { - if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy778; - } else { - if (yych == 'u') goto yy777; - goto yy57; - } - } -yy747: - YYDEBUG(747, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy775; - if (yych == 'e') goto yy775; - goto yy57; -yy748: - YYDEBUG(748, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy774; - if (yych == 'c') goto yy774; - goto yy57; -yy749: - YYDEBUG(749, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy773; - if (yych == 'o') goto yy773; - goto yy57; -yy750: - YYDEBUG(750, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy765; - if (yych == 'e') goto yy765; - goto yy57; -yy751: - YYDEBUG(751, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '-') goto yy754; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy758; - goto yy57; -yy752: - YYDEBUG(752, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '-') goto yy754; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy758; - goto yy57; -yy753: - YYDEBUG(753, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '-') goto yy57; -yy754: - YYDEBUG(754, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy755; - if (yych <= '3') goto yy756; - if (yych <= '9') goto yy757; - goto yy57; -yy755: - YYDEBUG(755, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy757; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy756: - YYDEBUG(756, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '1') goto yy757; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy757: - YYDEBUG(757, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'q') { - if (yych == 'n') goto yy661; - goto yy657; - } else { - if (yych <= 'r') goto yy662; - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } -yy758: - YYDEBUG(758, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '-') goto yy57; - YYDEBUG(759, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '1') goto yy761; - } else { - if (yych <= '3') goto yy762; - if (yych <= '9') goto yy757; - goto yy57; - } - YYDEBUG(760, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy763; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy761: - YYDEBUG(761, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy763; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy762: - YYDEBUG(762, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '1') goto yy763; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy763: - YYDEBUG(763, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'q') { - if (yych == 'n') goto yy661; - } else { - if (yych <= 'r') goto yy662; - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - } -yy764: - YYDEBUG(764, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("iso8601date2"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->d = timelib_get_nr((char **) &ptr, 2); - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_ISO_DATE; - } -yy765: - YYDEBUG(765, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy766; - if (yych != 'c') goto yy57; -yy766: - YYDEBUG(766, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '-') goto yy57; -yy767: - YYDEBUG(767, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy768; - if (yych <= '2') goto yy769; - if (yych <= '3') goto yy770; - goto yy57; -yy768: - YYDEBUG(768, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy771; - goto yy57; -yy769: - YYDEBUG(769, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy771; - goto yy57; -yy770: - YYDEBUG(770, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '2') goto yy57; -yy771: - YYDEBUG(771, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(772, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("pgtextreverse"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - s->time->m = timelib_get_month((char **) &ptr); - s->time->d = timelib_get_nr((char **) &ptr, 2); - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_PG_TEXT; - } -yy773: - YYDEBUG(773, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'V') goto yy766; - if (yych == 'v') goto yy766; - goto yy57; -yy774: - YYDEBUG(774, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy766; - if (yych == 't') goto yy766; - goto yy57; -yy775: - YYDEBUG(775, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy776; - if (yych != 'p') goto yy57; -yy776: - YYDEBUG(776, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == '-') goto yy767; - goto yy57; - } else { - if (yych <= 'T') goto yy766; - if (yych == 't') goto yy766; - goto yy57; - } -yy777: - YYDEBUG(777, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy766; - if (yych == 'g') goto yy766; - goto yy57; -yy778: - YYDEBUG(778, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy766; - if (yych == 'r') goto yy766; - goto yy57; -yy779: - YYDEBUG(779, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'R') goto yy766; - if (yych <= 'X') goto yy57; - goto yy766; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy57; - goto yy766; - } else { - if (yych == 'y') goto yy766; - goto yy57; - } - } -yy780: - YYDEBUG(780, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy766; - if (yych == 'b') goto yy766; - goto yy57; -yy781: - YYDEBUG(781, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'L') goto yy766; - if (yych <= 'M') goto yy57; - goto yy766; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy766; - } else { - if (yych == 'n') goto yy766; - goto yy57; - } + case 'T': + case 'U': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'V': goto yy1142; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'v': goto yy1160; + default: goto yy4; } -yy782: - YYDEBUG(782, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy766; - if (yych == 'n') goto yy766; - goto yy57; -yy783: - YYDEBUG(783, *YYCURSOR); - yyaccept = 16; +yy1160: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); switch (yych) { - case '\t': - case ' ': + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; case 'A': + case 'B': + case 'C': case 'D': case 'F': + case 'G': case 'H': case 'I': case 'J': + case 'K': + case 'L': case 'M': case 'N': case 'O': + case 'P': + case 'Q': + case 'R': case 'S': case 'T': + case 'U': case 'V': + case 'W': case 'X': case 'Y': + case 'Z': goto yy144; + case 'E': goto yy1143; case 'a': + case 'b': + case 'c': case 'd': case 'f': + case 'g': case 'h': + case 'i': case 'j': + case 'k': + case 'l': case 'm': case 'n': case 'o': + case 'p': + case 'q': + case 'r': case 's': case 't': + case 'u': + case 'v': case 'w': - case 'y': goto yy791; - case '-': goto yy788; - case '.': goto yy792; - case '/': goto yy789; - case '0': goto yy805; - case '1': goto yy806; - case '2': goto yy808; - case '3': goto yy809; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy55; - case ':': goto yy807; - case 'W': goto yy810; - default: goto yy784; - } -yy784: - YYDEBUG(784, *YYCURSOR); - { - DEBUG_OUTPUT("year4"); - TIMELIB_INIT; - s->time->y = timelib_get_nr((char **) &ptr, 4); - TIMELIB_DEINIT; - return TIMELIB_CLF; - } -yy785: - YYDEBUG(785, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch (yych) { - case '0': goto yy786; - case '1': goto yy787; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy753; - case 'A': - case 'a': goto yy746; - case 'D': - case 'd': goto yy750; - case 'F': - case 'f': goto yy744; - case 'J': - case 'j': goto yy743; - case 'M': - case 'm': goto yy745; - case 'N': - case 'n': goto yy749; - case 'O': - case 'o': goto yy748; - case 'S': - case 's': goto yy747; - default: goto yy57; - } -yy786: - YYDEBUG(786, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '-') goto yy754; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy753; - goto yy57; -yy787: - YYDEBUG(787, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '-') goto yy754; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy753; - goto yy57; -yy788: - YYDEBUG(788, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch (yych) { - case '0': goto yy973; - case '1': goto yy975; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy976; - case 'A': - case 'a': goto yy967; - case 'D': - case 'd': goto yy971; - case 'F': - case 'f': goto yy965; - case 'J': - case 'j': goto yy964; - case 'M': - case 'm': goto yy966; - case 'N': - case 'n': goto yy970; - case 'O': - case 'o': goto yy969; - case 'S': - case 's': goto yy968; - case 'W': goto yy972; - default: goto yy939; + case 'x': + case 'y': + case 'z': goto yy152; + case 'e': goto yy1161; + default: goto yy4; } -yy789: - YYDEBUG(789, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy947; - if (yych <= '1') goto yy948; - if (yych <= '9') goto yy949; - goto yy57; -yy790: - YYDEBUG(790, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; -yy791: - YYDEBUG(791, *YYCURSOR); - YYDEBUG(-1, yych); +yy1161: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\t': - case ' ': goto yy790; + case ')': goto yy140; case '-': - case '.': goto yy938; + case '/': + case '_': goto yy148; case 'A': - case 'a': goto yy800; + case 'B': + case 'C': case 'D': - case 'd': goto yy804; + case 'E': case 'F': - case 'f': goto yy798; + case 'G': case 'H': - case 'h': goto yy64; - case 'I': goto yy793; + case 'I': case 'J': - case 'j': goto yy797; + case 'K': + case 'L': case 'M': - case 'm': goto yy799; - case 'N': - case 'n': goto yy803; case 'O': - case 'o': goto yy802; - case 'S': - case 's': goto yy801; - case 'T': - case 't': goto yy69; - case 'V': goto yy795; - case 'W': - case 'w': goto yy68; - case 'X': goto yy796; - case 'Y': - case 'y': goto yy67; - default: goto yy57; - } -yy792: - YYDEBUG(792, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy939; - if (yych <= '0') goto yy931; - if (yych <= '2') goto yy932; - if (yych <= '3') goto yy933; - goto yy939; -yy793: - YYDEBUG(793, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= 'U') { - if (yych == 'I') goto yy930; - } else { - if (yych == 'W') goto yy794; - if (yych <= 'X') goto yy884; - } -yy794: - YYDEBUG(794, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("datenodayrev"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - s->time->m = timelib_get_month((char **) &ptr); - s->time->d = 1; - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_DATE_NO_DAY; - } -yy795: - YYDEBUG(795, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy928; - goto yy794; -yy796: - YYDEBUG(796, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy927; - goto yy794; -yy797: - YYDEBUG(797, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'A') goto yy920; - if (yych <= 'T') goto yy57; - goto yy919; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy920; - } else { - if (yych == 'u') goto yy919; - goto yy57; - } - } -yy798: - YYDEBUG(798, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= 'N') { - if (yych == 'E') goto yy913; - goto yy57; - } else { - if (yych <= 'O') goto yy99; - if (yych <= 'Q') goto yy57; - goto yy98; - } - } else { - if (yych <= 'n') { - if (yych == 'e') goto yy913; - goto yy57; - } else { - if (yych <= 'o') goto yy99; - if (yych == 'r') goto yy98; - goto yy57; - } - } -yy799: - YYDEBUG(799, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'H') { - if (yych == 'A') goto yy910; - goto yy57; - } else { - if (yych <= 'I') goto yy118; - if (yych <= 'N') goto yy57; - goto yy117; - } - } else { - if (yych <= 'h') { - if (yych == 'a') goto yy910; - goto yy57; - } else { - if (yych <= 'i') goto yy118; - if (yych == 'o') goto yy117; - goto yy57; - } - } -yy800: - YYDEBUG(800, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'P') goto yy904; - if (yych <= 'T') goto yy57; - goto yy903; - } else { - if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy904; - } else { - if (yych == 'u') goto yy903; - goto yy57; - } - } -yy801: - YYDEBUG(801, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'D') { - if (yych == 'A') goto yy127; - goto yy57; - } else { - if (yych <= 'E') goto yy896; - if (yych <= 'T') goto yy57; - goto yy126; - } - } else { - if (yych <= 'd') { - if (yych == 'a') goto yy127; - goto yy57; - } else { - if (yych <= 'e') goto yy896; - if (yych == 'u') goto yy126; - goto yy57; - } - } -yy802: - YYDEBUG(802, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy891; - if (yych == 'c') goto yy891; - goto yy57; -yy803: - YYDEBUG(803, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy885; - if (yych == 'o') goto yy885; - goto yy57; -yy804: - YYDEBUG(804, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy114; - if (yych <= 'D') goto yy57; - goto yy878; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy114; - } else { - if (yych == 'e') goto yy878; - goto yy57; - } - } -yy805: - YYDEBUG(805, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy875; - if (yych <= '9') goto yy876; - goto yy61; -yy806: - YYDEBUG(806, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '2') goto yy844; - if (yych <= '9') goto yy823; - goto yy61; -yy807: - YYDEBUG(807, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy824; - if (yych <= '1') goto yy825; - goto yy57; -yy808: - YYDEBUG(808, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy823; - goto yy61; -yy809: - YYDEBUG(809, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '5') goto yy819; - if (yych <= '6') goto yy820; - if (yych <= '9') goto yy55; - goto yy61; -yy810: - YYDEBUG(810, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '5') { - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy811; - if (yych <= '4') goto yy812; - goto yy813; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy57; - goto yy83; - } else { - if (yych == 'e') goto yy83; - goto yy57; - } - } -yy811: - YYDEBUG(811, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '0') goto yy57; - if (yych <= '9') goto yy814; - goto yy57; -yy812: - YYDEBUG(812, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy814; - goto yy57; -yy813: - YYDEBUG(813, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '4') goto yy57; -yy814: - YYDEBUG(814, *YYCURSOR); - yyaccept = 17; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy816; - if (yych <= '/') goto yy815; - if (yych <= '7') goto yy817; -yy815: - YYDEBUG(815, *YYCURSOR); - { - timelib_sll w, d; - DEBUG_OUTPUT("isoweek"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - TIMELIB_HAVE_RELATIVE(); - - s->time->y = timelib_get_nr((char **) &ptr, 4); - w = timelib_get_nr((char **) &ptr, 2); - d = 1; - s->time->m = 1; - s->time->d = 1; - s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d); - - TIMELIB_DEINIT; - return TIMELIB_ISO_WEEK; - } -yy816: - YYDEBUG(816, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '8') goto yy57; -yy817: - YYDEBUG(817, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(818, *YYCURSOR); - { - timelib_sll w, d; - DEBUG_OUTPUT("isoweekday"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - TIMELIB_HAVE_RELATIVE(); - - s->time->y = timelib_get_nr((char **) &ptr, 4); - w = timelib_get_nr((char **) &ptr, 2); - d = timelib_get_nr((char **) &ptr, 1); - s->time->m = 1; - s->time->d = 1; - s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d); - - TIMELIB_DEINIT; - return TIMELIB_ISO_WEEK; + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'N': goto yy1144; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'n': goto yy1162; + default: goto yy4; } -yy819: - YYDEBUG(819, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy821; - goto yy61; -yy820: - YYDEBUG(820, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '6') goto yy821; - if (yych <= '9') goto yy55; - goto yy61; -yy821: - YYDEBUG(821, *YYCURSOR); - yyaccept = 18; +yy1162: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 2) { - goto yy55; - } - if (yych <= 'W') { - if (yych <= 'F') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych >= ' ') goto yy61; - } else { - if (yych == 'D') goto yy61; - if (yych >= 'F') goto yy61; - } - } else { - if (yych <= 'M') { - if (yych == 'H') goto yy61; - if (yych >= 'M') goto yy61; - } else { - if (yych <= 'R') goto yy822; - if (yych <= 'T') goto yy61; - if (yych >= 'W') goto yy61; - } - } - } else { - if (yych <= 'h') { - if (yych <= 'd') { - if (yych == 'Y') goto yy61; - if (yych >= 'd') goto yy61; - } else { - if (yych == 'f') goto yy61; - if (yych >= 'h') goto yy61; - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych >= 's') goto yy61; - } else { - if (yych <= 'w') { - if (yych >= 'w') goto yy61; - } else { - if (yych == 'y') goto yy61; - } - } - } - } -yy822: - YYDEBUG(822, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("pgydotd"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - s->time->d = timelib_get_nr((char **) &ptr, 3); - s->time->m = 1; - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_PG_YEARDAY; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'T': goto yy1145; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 't': goto yy1163; + default: goto yy4; } -yy823: - YYDEBUG(823, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy821; - goto yy61; -yy824: - YYDEBUG(824, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy826; - goto yy57; -yy825: - YYDEBUG(825, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; -yy826: - YYDEBUG(826, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(827, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy828; - if (yych <= '2') goto yy829; - if (yych <= '3') goto yy830; - goto yy57; -yy828: - YYDEBUG(828, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy831; - goto yy57; -yy829: - YYDEBUG(829, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy831; - goto yy57; -yy830: - YYDEBUG(830, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '2') goto yy57; -yy831: - YYDEBUG(831, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ' ') goto yy57; - YYDEBUG(832, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy833; - if (yych <= '2') goto yy834; - goto yy57; -yy833: - YYDEBUG(833, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy835; - goto yy57; -yy834: - YYDEBUG(834, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '5') goto yy57; -yy835: - YYDEBUG(835, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(836, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '6') goto yy57; - YYDEBUG(837, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(838, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(839, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy840; - if (yych <= '6') goto yy841; - goto yy57; -yy840: - YYDEBUG(840, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy842; - goto yy57; -yy841: - YYDEBUG(841, *YYCURSOR); +yy1163: yych = *++YYCURSOR; - if (yych != '0') goto yy57; -yy842: - YYDEBUG(842, *YYCURSOR); - ++YYCURSOR; -yy843: - YYDEBUG(843, *YYCURSOR); - { - int tz_not_found; - DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif"); - TIMELIB_INIT; - TIMELIB_HAVE_TIME(); - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_nr((char **) &ptr, 4); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->d = timelib_get_nr((char **) &ptr, 2); - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = timelib_get_nr((char **) &ptr, 2); - s->time->s = timelib_get_nr((char **) &ptr, 2); - if (*ptr == '.') { - s->time->f = timelib_get_frac_nr((char **) &ptr, 9); - if (*ptr) { /* timezone is optional */ - s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); - if (tz_not_found) { - add_error(s, "The timezone could not be found in the database"); - } - } - } - TIMELIB_DEINIT; - return TIMELIB_XMLRPC_SOAP; + switch (yych) { + case 'H': goto yy1146; + case 'h': goto yy1164; + default: goto yy155; } -yy844: - YYDEBUG(844, *YYCURSOR); +yy1164: yych = *++YYCURSOR; - if (yych <= '2') { - if (yych <= '/') goto yy61; - if (yych >= '1') goto yy846; - } else { - if (yych <= '3') goto yy847; - if (yych <= '9') goto yy821; - goto yy61; - } -yy845: - YYDEBUG(845, *YYCURSOR); - yyaccept = 18; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy822; - goto yy61; - } else { - if (yych <= '/') goto yy822; - if (yych <= '9') goto yy848; - if (yych <= 'C') goto yy822; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy822; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy822; - goto yy61; - } else { - if (yych <= 'R') goto yy822; - if (yych <= 'T') goto yy61; - goto yy822; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy822; - if (yych <= 'Y') goto yy61; - goto yy822; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy822; - } else { - if (yych == 'g') goto yy822; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy822; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy822; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy822; - } - } - } + switch (yych) { + case '\t': + case ' ': goto yy1147; + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy57; } -yy846: - YYDEBUG(846, *YYCURSOR); - yyaccept = 18; +yy1165: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy822; - goto yy61; - } else { - if (yych <= '/') goto yy822; - if (yych <= '9') goto yy848; - if (yych <= 'C') goto yy822; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy822; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy822; - goto yy61; - } else { - if (yych <= 'R') goto yy822; - if (yych <= 'T') goto yy61; - goto yy822; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy822; - if (yych <= 'Y') goto yy61; - goto yy822; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy822; - } else { - if (yych == 'g') goto yy822; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy822; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy822; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy822; - } - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'H': goto yy1154; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'h': goto yy1166; + default: goto yy4; } -yy847: - YYDEBUG(847, *YYCURSOR); - yyaccept = 18; +yy1166: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy822; - goto yy61; - } else { - if (yych <= '1') { - if (yych <= '/') goto yy822; - } else { - if (yych <= '9') goto yy55; - if (yych <= 'C') goto yy822; - goto yy61; - } - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy822; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy822; - goto yy61; - } else { - if (yych <= 'R') goto yy822; - if (yych <= 'T') goto yy61; - goto yy822; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy822; - if (yych <= 'Y') goto yy61; - goto yy822; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy822; - } else { - if (yych == 'g') goto yy822; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy822; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy822; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy822; - } - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'T': goto yy1155; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 't': goto yy1167; + default: goto yy4; } -yy848: - YYDEBUG(848, *YYCURSOR); - yyaccept = 19; +yy1167: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy1147; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'H': goto yy1156; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'h': goto yy1168; + default: goto yy4; + } +yy1168: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 2) { - goto yy55; + switch (yych) { + case '\t': + case ' ': goto yy1147; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy4; } - if (yych <= 'W') { - if (yych <= 'F') { - if (yych <= ' ') { - if (yych == '\t') goto yy60; - if (yych >= ' ') goto yy60; - } else { - if (yych == 'D') goto yy65; - if (yych >= 'F') goto yy66; - } - } else { - if (yych <= 'M') { - if (yych == 'H') goto yy64; - if (yych >= 'M') goto yy63; - } else { - if (yych <= 'S') { - if (yych >= 'S') goto yy62; - } else { - if (yych <= 'T') goto yy850; - if (yych >= 'W') goto yy68; - } - } - } - } else { - if (yych <= 'l') { - if (yych <= 'd') { - if (yych == 'Y') goto yy67; - if (yych >= 'd') goto yy65; - } else { - if (yych <= 'f') { - if (yych >= 'f') goto yy66; - } else { - if (yych == 'h') goto yy64; - } - } - } else { - if (yych <= 't') { - if (yych <= 'm') goto yy63; - if (yych <= 'r') goto yy849; - if (yych <= 's') goto yy62; - goto yy851; - } else { - if (yych <= 'w') { - if (yych >= 'w') goto yy68; - } else { - if (yych == 'y') goto yy67; - } - } - } +yy1169: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'C': + case 'c': goto yy1185; + case 'P': + case 'p': goto yy1187; + case 'V': + case 'v': goto yy1186; + default: goto yy4; } -yy849: - YYDEBUG(849, *YYCURSOR); - { - DEBUG_OUTPUT("datenocolon"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_nr((char **) &ptr, 4); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->d = timelib_get_nr((char **) &ptr, 2); - TIMELIB_DEINIT; - return TIMELIB_DATE_NOCOLON; +yy1170: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'T': + case 't': goto yy1180; + default: goto yy4; } -yy850: - YYDEBUG(850, *YYCURSOR); +yy1171: yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy865; - goto yy866; - } else { - if (yych <= '9') goto yy867; - if (yych <= 'G') goto yy57; - goto yy70; - } - } else { - if (yych <= 'g') { - if (yych == 'U') goto yy71; - goto yy57; - } else { - if (yych <= 'h') goto yy70; - if (yych == 'u') goto yy71; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'y': + case 'z': goto yy142; + case 'X': + case 'x': goto yy1177; + default: goto yy4; } -yy851: - YYDEBUG(851, *YYCURSOR); +yy1172: yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '2') goto yy853; - } else { - if (yych <= '9') goto yy854; - if (yych <= 'G') goto yy57; - goto yy70; - } - } else { - if (yych <= 'g') { - if (yych == 'U') goto yy71; - goto yy57; - } else { - if (yych <= 'h') goto yy70; - if (yych == 'u') goto yy71; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'N': + case 'n': goto yy1173; + default: goto yy4; } - YYDEBUG(852, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy859; - if (yych <= '9') goto yy854; - goto yy57; -yy853: - YYDEBUG(853, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '4') goto yy859; - if (yych <= '5') goto yy855; - goto yy57; -yy854: - YYDEBUG(854, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '6') goto yy57; -yy855: - YYDEBUG(855, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy856: - YYDEBUG(856, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy857; - if (yych <= '6') goto yy858; - goto yy57; -yy857: - YYDEBUG(857, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy842; - goto yy57; -yy858: - YYDEBUG(858, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '0') goto yy842; - goto yy57; -yy859: - YYDEBUG(859, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy860; - if (yych <= '9') goto yy856; - goto yy57; -yy860: - YYDEBUG(860, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy861; - if (yych <= '6') goto yy862; - if (yych <= '9') goto yy856; - goto yy57; -yy861: - YYDEBUG(861, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy863; - if (yych <= '6') goto yy864; - if (yych <= '9') goto yy842; - goto yy57; -yy862: - YYDEBUG(862, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy863; - if (yych <= '5') goto yy857; - if (yych <= '6') goto yy858; - goto yy57; -yy863: - YYDEBUG(863, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy842; - goto yy843; -yy864: - YYDEBUG(864, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '0') goto yy842; - goto yy843; -yy865: - YYDEBUG(865, *YYCURSOR); +yy1173: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy874; - if (yych <= '9') goto yy867; - if (yych <= ':') goto yy868; - goto yy57; -yy866: - YYDEBUG(866, *YYCURSOR); + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'D': + case 'd': goto yy1174; + default: goto yy167; + } +yy1174: yych = *++YYCURSOR; - if (yych <= '5') { - if (yych <= '/') goto yy57; - if (yych <= '4') goto yy874; - goto yy855; - } else { - if (yych == ':') goto yy868; - goto yy57; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1175; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; } -yy867: - YYDEBUG(867, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy855; - if (yych != ':') goto yy57; -yy868: - YYDEBUG(868, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '6') goto yy57; - YYDEBUG(869, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(870, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(871, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy872; - if (yych <= '6') goto yy873; - goto yy57; -yy872: - YYDEBUG(872, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy842; - goto yy57; -yy873: - YYDEBUG(873, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '0') goto yy842; - goto yy57; -yy874: - YYDEBUG(874, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy860; - if (yych <= '9') goto yy856; - if (yych <= ':') goto yy868; - goto yy57; -yy875: - YYDEBUG(875, *YYCURSOR); +yy1175: yych = *++YYCURSOR; - if (yych <= '2') { - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy877; - goto yy846; - } else { - if (yych <= '3') goto yy847; - if (yych <= '9') goto yy821; - goto yy61; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy145; + case 'Y': + case 'y': goto yy1176; + default: goto yy4; } -yy876: - YYDEBUG(876, *YYCURSOR); +yy1176: yych = *++YYCURSOR; - if (yych <= '2') { - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy845; - goto yy846; - } else { - if (yych <= '3') goto yy847; - if (yych <= '9') goto yy821; - goto yy61; + switch (yych) { + case ')': goto yy140; + default: goto yy167; } -yy877: - YYDEBUG(877, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy848; - goto yy61; -yy878: - YYDEBUG(878, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy879; - if (yych != 'c') goto yy57; -yy879: - YYDEBUG(879, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy880; - if (yych != 'e') goto yy794; -yy880: - YYDEBUG(880, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy881; - if (yych != 'm') goto yy57; -yy881: - YYDEBUG(881, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy882; - if (yych != 'b') goto yy57; -yy882: - YYDEBUG(882, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy883; - if (yych != 'e') goto yy57; -yy883: - YYDEBUG(883, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy884; - if (yych != 'r') goto yy57; -yy884: - YYDEBUG(884, *YYCURSOR); - yych = *++YYCURSOR; - goto yy794; -yy885: - YYDEBUG(885, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'V') goto yy886; - if (yych != 'v') goto yy57; -yy886: - YYDEBUG(886, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy887; - if (yych != 'e') goto yy794; -yy887: - YYDEBUG(887, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy888; - if (yych != 'm') goto yy57; -yy888: - YYDEBUG(888, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy889; - if (yych != 'b') goto yy57; -yy889: - YYDEBUG(889, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy890; - if (yych != 'e') goto yy57; -yy890: - YYDEBUG(890, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy884; - if (yych == 'r') goto yy884; - goto yy57; -yy891: - YYDEBUG(891, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy892; - if (yych != 't') goto yy57; -yy892: - YYDEBUG(892, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'O') goto yy893; - if (yych != 'o') goto yy794; -yy893: - YYDEBUG(893, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy894; - if (yych != 'b') goto yy57; -yy894: - YYDEBUG(894, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy895; - if (yych != 'e') goto yy57; -yy895: - YYDEBUG(895, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy884; - if (yych == 'r') goto yy884; - goto yy57; -yy896: - YYDEBUG(896, *YYCURSOR); +yy1177: yych = *++YYCURSOR; - if (yych <= 'P') { - if (yych == 'C') goto yy129; - if (yych <= 'O') goto yy57; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy57; - goto yy129; - } else { - if (yych != 'p') goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'T': + case 't': goto yy1178; + default: goto yy4; } -yy897: - YYDEBUG(897, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy898; - if (yych != 't') goto yy794; -yy898: - YYDEBUG(898, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy899; - if (yych != 'e') goto yy794; -yy899: - YYDEBUG(899, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy900; - if (yych != 'm') goto yy57; -yy900: - YYDEBUG(900, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy901; - if (yych != 'b') goto yy57; -yy901: - YYDEBUG(901, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy902; - if (yych != 'e') goto yy57; -yy902: - YYDEBUG(902, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy884; - if (yych == 'r') goto yy884; - goto yy57; -yy903: - YYDEBUG(903, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy907; - if (yych == 'g') goto yy907; - goto yy57; -yy904: - YYDEBUG(904, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy905; - if (yych != 'r') goto yy57; -yy905: - YYDEBUG(905, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'I') goto yy906; - if (yych != 'i') goto yy794; -yy906: - YYDEBUG(906, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy884; - if (yych == 'l') goto yy884; - goto yy57; -yy907: - YYDEBUG(907, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy908; - if (yych != 'u') goto yy794; -yy908: - YYDEBUG(908, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy909; - if (yych != 's') goto yy57; -yy909: - YYDEBUG(909, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy884; - if (yych == 't') goto yy884; - goto yy57; -yy910: - YYDEBUG(910, *YYCURSOR); +yy1178: yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'R') goto yy911; - if (yych <= 'X') goto yy57; - goto yy884; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy57; - } else { - if (yych == 'y') goto yy884; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'H': + case 'h': goto yy1179; + default: goto yy4; } -yy911: - YYDEBUG(911, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'C') goto yy912; - if (yych != 'c') goto yy794; -yy912: - YYDEBUG(912, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy884; - if (yych == 'h') goto yy884; - goto yy57; -yy913: - YYDEBUG(913, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy914; - if (yych != 'b') goto yy57; -yy914: - YYDEBUG(914, *YYCURSOR); - yyaccept = 20; +yy1179: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'R') goto yy915; - if (yych != 'r') goto yy794; -yy915: - YYDEBUG(915, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy916; - if (yych != 'u') goto yy57; -yy916: - YYDEBUG(916, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy917; - if (yych != 'a') goto yy57; -yy917: - YYDEBUG(917, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy918; - if (yych != 'r') goto yy57; -yy918: - YYDEBUG(918, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy884; - if (yych == 'y') goto yy884; - goto yy57; -yy919: - YYDEBUG(919, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'L') goto yy926; - if (yych <= 'M') goto yy57; - goto yy925; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy926; - } else { - if (yych == 'n') goto yy925; - goto yy57; - } + switch (yych) { + case '\t': + case ' ': goto yy1147; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy4; } -yy920: - YYDEBUG(920, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy921; - if (yych != 'n') goto yy57; -yy921: - YYDEBUG(921, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy922; - if (yych != 'u') goto yy794; -yy922: - YYDEBUG(922, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy923; - if (yych != 'a') goto yy57; -yy923: - YYDEBUG(923, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy924; - if (yych != 'r') goto yy57; -yy924: - YYDEBUG(924, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy884; - if (yych == 'y') goto yy884; - goto yy57; -yy925: - YYDEBUG(925, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy884; - if (yych == 'e') goto yy884; - goto yy794; -yy926: - YYDEBUG(926, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy884; - if (yych == 'y') goto yy884; - goto yy794; -yy927: - YYDEBUG(927, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy884; - goto yy794; -yy928: - YYDEBUG(928, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != 'I') goto yy794; - YYDEBUG(929, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy884; - goto yy794; -yy930: - YYDEBUG(930, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy884; - goto yy794; -yy931: - YYDEBUG(931, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy946; - if (yych <= '9') goto yy945; - goto yy57; -yy932: - YYDEBUG(932, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy944; - goto yy57; -yy933: - YYDEBUG(933, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy942; - if (yych <= '6') goto yy941; - goto yy57; -yy934: - YYDEBUG(934, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy913; - if (yych == 'e') goto yy913; - goto yy57; -yy935: - YYDEBUG(935, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy910; - if (yych == 'a') goto yy910; - goto yy57; -yy936: - YYDEBUG(936, *YYCURSOR); +yy1180: yych = *++YYCURSOR; - if (yych == 'E') goto yy940; - if (yych == 'e') goto yy940; - goto yy57; -yy937: - YYDEBUG(937, *YYCURSOR); + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'U': + case 'u': goto yy1181; + default: goto yy167; + } +yy1181: yych = *++YYCURSOR; - if (yych == 'E') goto yy878; - if (yych == 'e') goto yy878; - goto yy57; -yy938: - YYDEBUG(938, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; -yy939: - YYDEBUG(939, *YYCURSOR); - YYDEBUG(-1, yych); switch (yych) { - case '\t': - case ' ': - case '-': - case '.': goto yy938; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'R': + case 'r': goto yy1182; + default: goto yy4; + } +yy1182: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; case 'A': - case 'a': goto yy800; - case 'D': - case 'd': goto yy937; + case 'B': + case 'C': + case 'E': case 'F': - case 'f': goto yy934; - case 'I': goto yy793; + case 'G': + case 'H': + case 'I': case 'J': - case 'j': goto yy797; + case 'K': + case 'L': case 'M': - case 'm': goto yy935; case 'N': - case 'n': goto yy803; case 'O': - case 'o': goto yy802; + case 'P': + case 'Q': + case 'R': case 'S': - case 's': goto yy936; - case 'V': goto yy795; - case 'X': goto yy796; - default: goto yy57; - } -yy940: - YYDEBUG(940, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy897; - if (yych == 'p') goto yy897; - goto yy57; -yy941: - YYDEBUG(941, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '6') goto yy943; - goto yy57; -yy942: - YYDEBUG(942, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy943: - YYDEBUG(943, *YYCURSOR); - yych = *++YYCURSOR; - goto yy822; -yy944: - YYDEBUG(944, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy943; - goto yy57; -yy945: - YYDEBUG(945, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy943; - goto yy57; -yy946: - YYDEBUG(946, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '0') goto yy57; - if (yych <= '9') goto yy943; - goto yy57; -yy947: - YYDEBUG(947, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') goto yy57; - if (yych <= '/') goto yy950; - if (yych <= '9') goto yy958; - goto yy57; -yy948: - YYDEBUG(948, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') goto yy57; - if (yych <= '/') goto yy950; - if (yych <= '2') goto yy958; - goto yy57; -yy949: - YYDEBUG(949, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '/') goto yy57; -yy950: - YYDEBUG(950, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy951; - if (yych <= '3') goto yy952; - if (yych <= '9') goto yy953; - goto yy57; -yy951: - YYDEBUG(951, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '9') goto yy953; - if (yych <= 'm') goto yy455; - goto yy955; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; - } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; - } - } -yy952: - YYDEBUG(952, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '1') goto yy953; - if (yych <= 'm') goto yy455; - goto yy955; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; - } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; - } - } -yy953: - YYDEBUG(953, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'q') { - if (yych == 'n') goto yy955; - goto yy455; - } else { - if (yych <= 'r') goto yy956; - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; - } -yy954: - YYDEBUG(954, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 't') goto yy454; - goto yy57; -yy955: - YYDEBUG(955, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy454; - goto yy57; -yy956: - YYDEBUG(956, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy454; - goto yy57; -yy957: - YYDEBUG(957, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'h') goto yy454; - goto yy57; -yy958: - YYDEBUG(958, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '/') goto yy57; - YYDEBUG(959, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '1') goto yy961; - } else { - if (yych <= '3') goto yy962; - if (yych <= '9') goto yy953; - goto yy57; - } - YYDEBUG(960, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '9') goto yy963; - if (yych <= 'm') goto yy455; - goto yy955; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; - } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; - } - } -yy961: - YYDEBUG(961, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '9') goto yy963; - if (yych <= 'm') goto yy455; - goto yy955; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; - } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; - } - } -yy962: - YYDEBUG(962, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '1') goto yy963; - if (yych <= 'm') goto yy455; - goto yy955; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; - } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; - } + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'D': + case 'd': goto yy1183; + default: goto yy4; } -yy963: - YYDEBUG(963, *YYCURSOR); - yyaccept = 21; +yy1183: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych == '/') goto yy454; - if (yych <= 'm') goto yy455; - goto yy955; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; - } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; - } - } -yy964: - YYDEBUG(964, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'A') goto yy1044; - if (yych <= 'T') goto yy57; - goto yy1043; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy1044; - } else { - if (yych == 'u') goto yy1043; - goto yy57; - } - } -yy965: - YYDEBUG(965, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1041; - if (yych == 'e') goto yy1041; - goto yy57; -yy966: - YYDEBUG(966, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1038; - if (yych == 'a') goto yy1038; - goto yy57; -yy967: - YYDEBUG(967, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'P') goto yy1035; - if (yych <= 'T') goto yy57; - goto yy1034; - } else { - if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy1035; - } else { - if (yych == 'u') goto yy1034; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1184; + default: goto yy4; } -yy968: - YYDEBUG(968, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1031; - if (yych == 'e') goto yy1031; - goto yy57; -yy969: - YYDEBUG(969, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy1029; - if (yych == 'c') goto yy1029; - goto yy57; -yy970: - YYDEBUG(970, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy1027; - if (yych == 'o') goto yy1027; - goto yy57; -yy971: - YYDEBUG(971, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1025; - if (yych == 'e') goto yy1025; - goto yy57; -yy972: - YYDEBUG(972, *YYCURSOR); +yy1184: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy811; - if (yych <= '4') goto yy812; - if (yych <= '5') goto yy813; - goto yy57; -yy973: - YYDEBUG(973, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy977; - if (yych <= '/') goto yy974; - if (yych <= '9') goto yy996; -yy974: - YYDEBUG(974, *YYCURSOR); - { - int length = 0; - DEBUG_OUTPUT("gnudateshorter"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - s->time->m = timelib_get_nr((char **) &ptr, 2); - s->time->d = 1; - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_ISO_DATE; + switch (yych) { + case 'Y': + case 'y': goto yy173; + default: goto yy57; } -yy975: - YYDEBUG(975, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy977; - if (yych <= '/') goto yy974; - if (yych <= '2') goto yy996; - goto yy974; -yy976: - YYDEBUG(976, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if (yych != '-') goto yy974; -yy977: - YYDEBUG(977, *YYCURSOR); +yy1185: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy978; - if (yych <= '3') goto yy979; - if (yych <= '9') goto yy980; - goto yy57; -yy978: - YYDEBUG(978, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '9') { - if (yych <= '/') goto yy657; - goto yy980; - } else { - if (yych == 'T') goto yy985; - goto yy657; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; - } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; - } - } -yy979: - YYDEBUG(979, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy657; - } else { - if (yych == 'T') goto yy985; - goto yy657; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; - } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; - } - } -yy980: - YYDEBUG(980, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych == 'T') goto yy985; - if (yych <= 'm') goto yy657; - goto yy982; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy983; - } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'O': + case 'o': goto yy1196; + default: goto yy4; } -yy981: - YYDEBUG(981, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 't') goto yy995; - goto yy57; -yy982: - YYDEBUG(982, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy995; - goto yy57; -yy983: - YYDEBUG(983, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'd') goto yy995; - goto yy57; -yy984: - YYDEBUG(984, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'h') goto yy995; - goto yy57; -yy985: - YYDEBUG(985, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy986; - if (yych <= '2') goto yy987; - if (yych <= '9') goto yy988; - goto yy57; -yy986: - YYDEBUG(986, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy988; - if (yych <= ':') goto yy989; - goto yy57; -yy987: - YYDEBUG(987, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '4') goto yy988; - if (yych == ':') goto yy989; - goto yy57; -yy988: - YYDEBUG(988, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; -yy989: - YYDEBUG(989, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy990; - if (yych <= '9') goto yy991; - goto yy57; -yy990: - YYDEBUG(990, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy991; - if (yych <= ':') goto yy992; - goto yy57; -yy991: - YYDEBUG(991, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; -yy992: - YYDEBUG(992, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy993; - if (yych <= '6') goto yy994; - if (yych <= '9') goto yy842; - goto yy57; -yy993: - YYDEBUG(993, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy842; - goto yy843; -yy994: - YYDEBUG(994, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '0') goto yy842; - goto yy843; -yy995: - YYDEBUG(995, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'T') goto yy985; - goto yy657; -yy996: - YYDEBUG(996, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if (yych != '-') goto yy974; - YYDEBUG(997, *YYCURSOR); +yy1186: yych = *++YYCURSOR; - if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '1') goto yy999; - } else { - if (yych <= '3') goto yy1000; - if (yych <= '9') goto yy980; - goto yy57; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'E': + case 'e': goto yy1193; + default: goto yy4; } - YYDEBUG(998, *YYCURSOR); - yyaccept = 13; +yy1187: + yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '9') { - if (yych <= '/') goto yy657; - goto yy1001; - } else { - if (yych == 'T') goto yy985; - goto yy657; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; - } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'T': + case 't': goto yy1188; + default: goto yy194; } -yy999: - YYDEBUG(999, *YYCURSOR); - yyaccept = 13; +yy1188: + yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '9') { - if (yych <= '/') goto yy657; - goto yy1001; - } else { - if (yych == 'T') goto yy985; - goto yy657; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; - } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'E': + case 'e': goto yy1189; + default: goto yy194; } -yy1000: - YYDEBUG(1000, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy657; - } else { - if (yych == 'T') goto yy985; - goto yy657; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; - } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; - } +yy1189: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'M': + case 'm': goto yy1190; + default: goto yy4; } -yy1001: - YYDEBUG(1001, *YYCURSOR); - yyaccept = 21; +yy1190: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych == 'T') goto yy1002; - if (yych <= 'm') goto yy455; - goto yy982; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy983; - } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy455; - } + switch (yych) { + case ')': goto yy140; + case 'B': + case 'b': goto yy1191; + default: goto yy4; } -yy1002: - YYDEBUG(1002, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy1003; - if (yych <= '2') goto yy1004; - if (yych <= '9') goto yy988; - goto yy57; -yy1003: - YYDEBUG(1003, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy1005; - if (yych <= ':') goto yy989; - goto yy57; -yy1004: - YYDEBUG(1004, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '4') goto yy1005; - if (yych == ':') goto yy989; - goto yy57; -yy1005: - YYDEBUG(1005, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(1006, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1007; - if (yych <= '9') goto yy991; - goto yy57; -yy1007: - YYDEBUG(1007, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy1008; - if (yych <= ':') goto yy992; - goto yy57; -yy1008: - YYDEBUG(1008, *YYCURSOR); +yy1191: yych = *++YYCURSOR; - if (yych != ':') goto yy57; - YYDEBUG(1009, *YYCURSOR); + switch (yych) { + case 'E': + case 'e': goto yy1192; + default: goto yy57; + } +yy1192: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1010; - if (yych <= '6') goto yy1011; - if (yych <= '9') goto yy842; - goto yy57; -yy1010: - YYDEBUG(1010, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy205; + default: goto yy57; + } +yy1193: yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy1012; - goto yy843; -yy1011: - YYDEBUG(1011, *YYCURSOR); + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'N': + case 'n': goto yy1194; + default: goto yy4; + } +yy1194: yych = *++YYCURSOR; - if (yych != '0') goto yy843; -yy1012: - YYDEBUG(1012, *YYCURSOR); - yyaccept = 23; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'T': + case 't': goto yy1195; + default: goto yy4; + } +yy1195: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '.') goto yy843; - YYDEBUG(1013, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy1014: - YYDEBUG(1014, *YYCURSOR); - yyaccept = 23; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; - YYDEBUG(1015, *YYCURSOR); - if (yych <= '-') { - if (yych == '+') goto yy1017; - if (yych <= ',') goto yy843; - goto yy1017; - } else { - if (yych <= '9') { - if (yych <= '/') goto yy843; - goto yy1014; - } else { - if (yych != 'G') goto yy843; - } + switch (yych) { + case ')': goto yy140; + case 'H': + case 'h': goto yy1146; + default: goto yy4; } - YYDEBUG(1016, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy1023; - goto yy57; -yy1017: - YYDEBUG(1017, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy1018; - if (yych <= '2') goto yy1019; - if (yych <= '9') goto yy1020; - goto yy57; -yy1018: - YYDEBUG(1018, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy1020; - if (yych <= ':') goto yy1021; - goto yy843; -yy1019: - YYDEBUG(1019, *YYCURSOR); +yy1196: yych = *++YYCURSOR; - if (yych <= '5') { - if (yych <= '/') goto yy843; - if (yych >= '5') goto yy1022; - } else { - if (yych <= '9') goto yy842; - if (yych <= ':') goto yy1021; - goto yy843; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'N': + case 'n': goto yy1197; + default: goto yy4; } -yy1020: - YYDEBUG(1020, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '5') goto yy1022; - if (yych <= '9') goto yy842; - if (yych >= ';') goto yy843; -yy1021: - YYDEBUG(1021, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '5') goto yy1022; - if (yych <= '9') goto yy842; - goto yy843; -yy1022: - YYDEBUG(1022, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy842; - goto yy843; -yy1023: - YYDEBUG(1023, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != 'T') goto yy57; - YYDEBUG(1024, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '+') goto yy1017; - if (yych == '-') goto yy1017; - goto yy57; -yy1025: - YYDEBUG(1025, *YYCURSOR); +yy1197: yych = *++YYCURSOR; - if (yych == 'C') goto yy1026; - if (yych != 'c') goto yy57; -yy1026: - YYDEBUG(1026, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'E') goto yy880; - if (yych == 'e') goto yy880; - goto yy794; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'D': + case 'd': goto yy1156; + default: goto yy4; } -yy1027: - YYDEBUG(1027, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'V') goto yy1028; - if (yych != 'v') goto yy57; -yy1028: - YYDEBUG(1028, *YYCURSOR); - yyaccept = 20; +yy1198: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'E') goto yy887; - if (yych == 'e') goto yy887; - goto yy794; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'C': goto yy1185; + case 'P': goto yy1187; + case 'V': goto yy1186; + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'c': goto yy1214; + case 'p': goto yy1216; + case 'v': goto yy1215; + default: goto yy4; } -yy1029: - YYDEBUG(1029, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy1030; - if (yych != 't') goto yy57; -yy1030: - YYDEBUG(1030, *YYCURSOR); - yyaccept = 20; +yy1199: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'O') goto yy893; - if (yych == 'o') goto yy893; - goto yy794; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'T': goto yy1180; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 't': goto yy1209; + default: goto yy4; } -yy1031: - YYDEBUG(1031, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy1032; - if (yych != 'p') goto yy57; -yy1032: - YYDEBUG(1032, *YYCURSOR); - yyaccept = 20; +yy1200: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'T') goto yy1033; - if (yych != 't') goto yy794; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'Y': + case 'Z': goto yy142; + case 'X': goto yy1177; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'y': + case 'z': goto yy147; + case 'x': goto yy1206; + default: goto yy4; } -yy1033: - YYDEBUG(1033, *YYCURSOR); - yyaccept = 20; +yy1201: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'E') goto yy899; - if (yych == 'e') goto yy899; - goto yy794; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'N': goto yy1173; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'n': goto yy1202; + default: goto yy4; } -yy1034: - YYDEBUG(1034, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy1037; - if (yych == 'g') goto yy1037; - goto yy57; -yy1035: - YYDEBUG(1035, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy1036; - if (yych != 'r') goto yy57; -yy1036: - YYDEBUG(1036, *YYCURSOR); - yyaccept = 20; +yy1202: + yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'H') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'I') goto yy906; - if (yych == 'i') goto yy906; - goto yy794; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'D': goto yy1174; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'd': goto yy1203; + default: goto yy167; } -yy1037: - YYDEBUG(1037, *YYCURSOR); - yyaccept = 20; +yy1203: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'U') goto yy908; - if (yych == 'u') goto yy908; - goto yy794; - } -yy1038: - YYDEBUG(1038, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'R') goto yy1039; - if (yych <= 'X') goto yy57; - goto yy1040; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy57; - } else { - if (yych == 'y') goto yy1040; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy1175; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': goto yy1204; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy4; } -yy1039: - YYDEBUG(1039, *YYCURSOR); - yyaccept = 20; +yy1204: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'B') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'C') goto yy912; - if (yych == 'c') goto yy912; - goto yy794; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': goto yy145; + case 'Y': goto yy1176; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy153; + case 'y': goto yy1205; + default: goto yy4; } -yy1040: - YYDEBUG(1040, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy767; - goto yy794; -yy1041: - YYDEBUG(1041, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy1042; - if (yych != 'b') goto yy57; -yy1042: - YYDEBUG(1042, *YYCURSOR); - yyaccept = 20; +yy1205: + yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'R') goto yy915; - if (yych == 'r') goto yy915; - goto yy794; - } -yy1043: - YYDEBUG(1043, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'L') goto yy1047; - if (yych <= 'M') goto yy57; - goto yy1046; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy1047; - } else { - if (yych == 'n') goto yy1046; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy167; } -yy1044: - YYDEBUG(1044, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy1045; - if (yych != 'n') goto yy57; -yy1045: - YYDEBUG(1045, *YYCURSOR); - yyaccept = 20; +yy1206: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'U') goto yy922; - if (yych == 'u') goto yy922; - goto yy794; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'T': goto yy1178; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 't': goto yy1207; + default: goto yy4; } -yy1046: - YYDEBUG(1046, *YYCURSOR); - yyaccept = 20; +yy1207: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'E') goto yy884; - if (yych == 'e') goto yy884; - goto yy794; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'H': goto yy1179; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'h': goto yy1208; + default: goto yy4; } -yy1047: - YYDEBUG(1047, *YYCURSOR); - yyaccept = 20; +yy1208: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych == '-') goto yy767; - goto yy794; - } else { - if (yych <= 'Y') goto yy884; - if (yych == 'y') goto yy884; - goto yy794; - } -yy1048: - YYDEBUG(1048, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy578; - goto yy731; - } else { - if (yych <= ',') goto yy578; - if (yych <= '-') goto yy732; - goto yy731; - } - } else { - if (yych <= 'U') { - if (yych <= '/') goto yy730; - if (yych <= 'T') goto yy578; - goto yy78; - } else { - if (yych == 'u') goto yy78; - goto yy578; - } - } -yy1049: - YYDEBUG(1049, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'P') { - if (yych == 'C') goto yy129; - if (yych <= 'O') goto yy57; - goto yy586; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy57; - goto yy129; - } else { - if (yych == 'p') goto yy586; - goto yy57; - } - } -yy1050: - YYDEBUG(1050, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '9') { - if (yych <= ',') { - if (yych == '\t') goto yy1052; - goto yy1054; - } else { - if (yych <= '-') goto yy1051; - if (yych <= '.') goto yy731; - if (yych <= '/') goto yy730; - goto yy741; - } - } else { - if (yych <= 'q') { - if (yych == 'n') goto yy470; - goto yy1054; - } else { - if (yych <= 'r') goto yy471; - if (yych <= 's') goto yy464; - if (yych <= 't') goto yy468; - goto yy1054; - } + switch (yych) { + case '\t': + case ' ': goto yy1147; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy4; } -yy1051: - YYDEBUG(1051, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); +yy1209: + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '0': goto yy1055; - case '1': goto yy1056; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy618; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'U': goto yy1181; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'u': goto yy1210; + default: goto yy167; + } +yy1210: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; case 'A': - case 'a': goto yy622; + case 'B': + case 'C': case 'D': - case 'd': goto yy626; + case 'E': case 'F': - case 'f': goto yy620; + case 'G': + case 'H': + case 'I': case 'J': - case 'j': goto yy619; + case 'K': + case 'L': case 'M': - case 'm': goto yy621; case 'N': - case 'n': goto yy625; case 'O': - case 'o': goto yy624; + case 'P': + case 'Q': case 'S': - case 's': goto yy623; - default: goto yy578; + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'R': goto yy1182; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'r': goto yy1211; + default: goto yy4; } -yy1052: - YYDEBUG(1052, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy1054; - if (yych <= '0') goto yy736; - if (yych <= '1') goto yy737; - if (yych <= '9') goto yy738; - goto yy1054; -yy1053: - YYDEBUG(1053, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; -yy1054: - YYDEBUG(1054, *YYCURSOR); - YYDEBUG(-1, yych); +yy1211: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\t': - case ' ': goto yy1053; + case ')': goto yy140; case '-': - case '.': goto yy577; + case '/': + case '_': goto yy148; case 'A': - case 'a': goto yy574; - case 'D': - case 'd': goto yy466; + case 'B': + case 'C': + case 'E': case 'F': - case 'f': goto yy467; + case 'G': case 'H': - case 'h': goto yy64; - case 'I': goto yy475; + case 'I': case 'J': - case 'j': goto yy479; + case 'K': + case 'L': case 'M': - case 'm': goto yy465; case 'N': - case 'n': goto yy482; case 'O': - case 'o': goto yy481; + case 'P': + case 'Q': + case 'R': case 'S': - case 's': goto yy463; case 'T': - case 't': goto yy69; - case 'V': goto yy477; + case 'U': + case 'V': case 'W': - case 'w': goto yy68; - case 'X': goto yy478; + case 'X': case 'Y': - case 'y': goto yy67; - default: goto yy57; - } -yy1055: - YYDEBUG(1055, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - goto yy602; - } else { - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy1057; - goto yy57; - } -yy1056: - YYDEBUG(1056, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - goto yy602; - } else { - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; - } -yy1057: - YYDEBUG(1057, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy1058; - if (yych <= '.') goto yy602; - goto yy57; -yy1058: - YYDEBUG(1058, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '1') goto yy1060; - } else { - if (yych <= '3') goto yy1061; - if (yych <= '9') goto yy659; - goto yy57; - } - YYDEBUG(1059, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy1062; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy1060: - YYDEBUG(1060, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy1062; - if (yych <= 'm') goto yy657; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } - } -yy1061: - YYDEBUG(1061, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '1') { - if (yych <= '/') goto yy657; - } else { - if (yych <= '9') goto yy604; - if (yych <= 'm') goto yy657; - goto yy661; - } - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; - } + case 'Z': goto yy145; + case 'D': goto yy1183; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'd': goto yy1212; + default: goto yy4; } -yy1062: - YYDEBUG(1062, *YYCURSOR); - yyaccept = 15; +yy1212: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'n') { - if (yych <= '/') goto yy764; - if (yych <= '9') goto yy605; - if (yych <= 'm') goto yy764; - goto yy661; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy764; - goto yy662; - } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy764; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy1184; + case 'a': goto yy1213; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy4; } -yy1063: - YYDEBUG(1063, *YYCURSOR); +yy1213: yych = *++YYCURSOR; - if (yych <= '9') { - if (yych <= '-') { - if (yych == '\t') goto yy1052; - if (yych <= ',') goto yy1054; - goto yy1051; - } else { - if (yych <= '.') goto yy1064; - if (yych <= '/') goto yy730; - if (yych <= '5') goto yy1066; - goto yy741; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy1065; - if (yych == 'n') goto yy470; - goto yy1054; - } else { - if (yych <= 'r') goto yy471; - if (yych <= 's') goto yy464; - if (yych <= 't') goto yy468; - goto yy1054; - } + switch (yych) { + case 'Y': goto yy173; + case 'y': goto yy186; + default: goto yy155; } -yy1064: - YYDEBUG(1064, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '1') { - if (yych <= '/') goto yy578; - if (yych <= '0') goto yy1088; - goto yy1089; - } else { - if (yych <= '5') goto yy1090; - if (yych <= '9') goto yy1091; - goto yy578; +yy1214: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'O': goto yy1196; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'o': goto yy1225; + default: goto yy4; } -yy1065: - YYDEBUG(1065, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1083; - if (yych <= '9') goto yy1084; - goto yy57; -yy1066: - YYDEBUG(1066, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '-') goto yy785; - if (yych <= '/') goto yy61; - if (yych >= ':') goto yy61; - YYDEBUG(1067, *YYCURSOR); - yyaccept = 24; +yy1215: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); switch (yych) { - case '\t': - case ' ': + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; case 'A': + case 'B': + case 'C': case 'D': case 'F': + case 'G': case 'H': case 'I': case 'J': + case 'K': + case 'L': case 'M': case 'N': case 'O': + case 'P': + case 'Q': + case 'R': case 'S': case 'T': + case 'U': case 'V': + case 'W': case 'X': case 'Y': + case 'Z': goto yy143; + case 'E': goto yy1193; case 'a': + case 'b': + case 'c': case 'd': case 'f': + case 'g': case 'h': + case 'i': case 'j': + case 'k': + case 'l': case 'm': case 'n': case 'o': + case 'p': + case 'q': + case 'r': case 's': case 't': + case 'u': + case 'v': case 'w': - case 'y': goto yy791; - case '-': goto yy788; - case '.': goto yy792; - case '/': goto yy789; - case '0': goto yy1069; - case '1': goto yy1070; - case '2': goto yy1071; - case '3': goto yy1072; + case 'x': + case 'y': + case 'z': goto yy151; + case 'e': goto yy1222; + default: goto yy4; + } +yy1216: + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': case '4': - case '5': goto yy1073; - case '6': goto yy1074; + case '5': + case '6': case '7': case '8': - case '9': goto yy55; - case ':': goto yy807; - case 'W': goto yy810; - default: goto yy1068; - } -yy1068: - YYDEBUG(1068, *YYCURSOR); - { - DEBUG_OUTPUT("gnunocolon"); - TIMELIB_INIT; - switch (s->time->have_time) { - case 0: - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = timelib_get_nr((char **) &ptr, 2); - s->time->s = 0; - break; - case 1: - s->time->y = timelib_get_nr((char **) &ptr, 4); - break; - default: - TIMELIB_DEINIT; - add_error(s, "Double time specification"); - return TIMELIB_ERROR; - } - s->time->have_time++; - TIMELIB_DEINIT; - return TIMELIB_GNU_NOCOLON; - } -yy1069: - YYDEBUG(1069, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy1081; - if (yych <= '9') goto yy1082; - goto yy61; -yy1070: - YYDEBUG(1070, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '2') goto yy1080; - if (yych <= '9') goto yy1079; - goto yy61; -yy1071: - YYDEBUG(1071, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy1079; - goto yy61; -yy1072: - YYDEBUG(1072, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '5') goto yy1077; - if (yych <= '6') goto yy1078; - if (yych <= '9') goto yy1075; - goto yy61; -yy1073: - YYDEBUG(1073, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy1075; - goto yy61; -yy1074: - YYDEBUG(1074, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy1075; - if (yych <= '9') goto yy55; - goto yy61; -yy1075: - YYDEBUG(1075, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 2) { - goto yy55; - } - if (yych <= 'W') { - if (yych <= 'F') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych >= ' ') goto yy61; - } else { - if (yych == 'D') goto yy61; - if (yych >= 'F') goto yy61; - } - } else { - if (yych <= 'M') { - if (yych == 'H') goto yy61; - if (yych >= 'M') goto yy61; - } else { - if (yych <= 'R') goto yy1076; - if (yych <= 'T') goto yy61; - if (yych >= 'W') goto yy61; - } - } - } else { - if (yych <= 'h') { - if (yych <= 'd') { - if (yych == 'Y') goto yy61; - if (yych >= 'd') goto yy61; - } else { - if (yych == 'f') goto yy61; - if (yych >= 'h') goto yy61; - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych >= 's') goto yy61; - } else { - if (yych <= 'w') { - if (yych >= 'w') goto yy61; - } else { - if (yych == 'y') goto yy61; - } - } - } - } -yy1076: - YYDEBUG(1076, *YYCURSOR); - { - int tz_not_found; - DEBUG_OUTPUT("iso8601nocolon"); - TIMELIB_INIT; - TIMELIB_HAVE_TIME(); - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = timelib_get_nr((char **) &ptr, 2); - s->time->s = timelib_get_nr((char **) &ptr, 2); - - if (*ptr != '\0') { - s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper); - if (tz_not_found) { - add_error(s, "The timezone could not be found in the database"); - } - } - TIMELIB_DEINIT; - return TIMELIB_ISO_NOCOLON; - } -yy1077: - YYDEBUG(1077, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; - } else { - if (yych <= '/') goto yy1076; - if (yych <= '9') goto yy821; - if (yych <= 'C') goto yy1076; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy1076; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy1076; - goto yy61; - } else { - if (yych <= 'R') goto yy1076; - if (yych <= 'T') goto yy61; - goto yy1076; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy1076; - if (yych <= 'Y') goto yy61; - goto yy1076; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy1076; - } else { - if (yych == 'g') goto yy1076; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy1076; - } - } - } - } -yy1078: - YYDEBUG(1078, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; - } else { - if (yych <= '6') { - if (yych <= '/') goto yy1076; - goto yy821; - } else { - if (yych <= '9') goto yy55; - if (yych <= 'C') goto yy1076; - goto yy61; - } - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy1076; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy1076; - goto yy61; - } else { - if (yych <= 'R') goto yy1076; - if (yych <= 'T') goto yy61; - goto yy1076; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy1076; - if (yych <= 'Y') goto yy61; - goto yy1076; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy1076; - } else { - if (yych == 'g') goto yy1076; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy1076; - } - } - } - } -yy1079: - YYDEBUG(1079, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; - } else { - if (yych <= '/') goto yy1076; - if (yych <= '9') goto yy821; - if (yych <= 'C') goto yy1076; - goto yy61; - } - } else { - if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy1076; - goto yy61; - } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy1076; - goto yy61; - } else { - if (yych <= 'R') goto yy1076; - if (yych <= 'T') goto yy61; - goto yy1076; - } - } - } - } else { - if (yych <= 'h') { - if (yych <= 'c') { - if (yych == 'X') goto yy1076; - if (yych <= 'Y') goto yy61; - goto yy1076; - } else { - if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy1076; - } else { - if (yych == 'g') goto yy1076; - goto yy61; - } - } - } else { - if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy1076; - } - } - } - } -yy1080: - YYDEBUG(1080, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= '9') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; - } else { - if (yych <= '0') { - if (yych <= '/') goto yy1076; - goto yy845; - } else { - if (yych <= '2') goto yy846; - if (yych <= '3') goto yy847; - goto yy821; - } - } - } else { - if (yych <= 'G') { - if (yych <= 'D') { - if (yych <= 'C') goto yy1076; - goto yy61; - } else { - if (yych == 'F') goto yy61; - goto yy1076; - } - } else { - if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy1076; - } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy1076; - goto yy61; - } - } - } - } else { - if (yych <= 'g') { - if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy1076; - goto yy61; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy1076; - goto yy61; - } else { - if (yych == 'f') goto yy61; - goto yy1076; - } - } - } else { - if (yych <= 't') { - if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy1076; - } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; - } - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy1076; - } - } - } - } -yy1081: - YYDEBUG(1081, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= '9') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; - } else { - if (yych <= '0') { - if (yych <= '/') goto yy1076; - goto yy877; - } else { - if (yych <= '2') goto yy846; - if (yych <= '3') goto yy847; - goto yy821; - } - } - } else { - if (yych <= 'G') { - if (yych <= 'D') { - if (yych <= 'C') goto yy1076; - goto yy61; - } else { - if (yych == 'F') goto yy61; - goto yy1076; - } - } else { - if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy1076; - } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy1076; - goto yy61; - } - } - } - } else { - if (yych <= 'g') { - if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy1076; - goto yy61; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy1076; - goto yy61; - } else { - if (yych == 'f') goto yy61; - goto yy1076; - } - } - } else { - if (yych <= 't') { - if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy1076; - } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; - } - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy1076; - } - } - } - } -yy1082: - YYDEBUG(1082, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= '9') { - if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; - } else { - if (yych <= '0') { - if (yych <= '/') goto yy1076; - goto yy845; - } else { - if (yych <= '2') goto yy846; - if (yych <= '3') goto yy847; - goto yy821; - } - } - } else { - if (yych <= 'G') { - if (yych <= 'D') { - if (yych <= 'C') goto yy1076; - goto yy61; - } else { - if (yych == 'F') goto yy61; - goto yy1076; - } - } else { - if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy1076; - } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy1076; - goto yy61; - } - } - } - } else { - if (yych <= 'g') { - if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy1076; - goto yy61; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy1076; - goto yy61; - } else { - if (yych == 'f') goto yy61; - goto yy1076; - } - } - } else { - if (yych <= 't') { - if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy1076; - } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; - } - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; - } else { - if (yych == 'y') goto yy61; - goto yy1076; - } - } - } - } -yy1083: - YYDEBUG(1083, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy1085; - goto yy491; - } else { - if (yych <= '9') goto yy1084; - if (yych <= ':') goto yy1085; - goto yy491; - } -yy1084: - YYDEBUG(1084, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy1085; - if (yych != ':') goto yy491; -yy1085: - YYDEBUG(1085, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1086; - if (yych <= '6') goto yy1087; - if (yych <= '9') goto yy496; - goto yy57; -yy1086: - YYDEBUG(1086, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy496; - goto yy491; -yy1087: - YYDEBUG(1087, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych == '0') goto yy496; - goto yy491; -yy1088: - YYDEBUG(1088, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy1092; - } else { - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy1091; - if (yych <= ':') goto yy1085; - goto yy491; - } -yy1089: - YYDEBUG(1089, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - if (yych <= '.') goto yy1092; - goto yy491; - } else { - if (yych <= '2') goto yy1091; - if (yych <= '9') goto yy1084; - if (yych <= ':') goto yy1085; - goto yy491; - } -yy1090: - YYDEBUG(1090, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy1092; - } else { - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy1084; - if (yych <= ':') goto yy1085; - goto yy491; - } -yy1091: - YYDEBUG(1091, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - } else { - if (yych == ':') goto yy1085; - goto yy491; + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'T': goto yy1188; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 't': goto yy1217; + default: goto yy194; } -yy1092: - YYDEBUG(1092, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1093; - if (yych <= '6') goto yy1094; - if (yych <= '9') goto yy610; - goto yy57; -yy1093: - YYDEBUG(1093, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy1095; - goto yy491; -yy1094: - YYDEBUG(1094, *YYCURSOR); - yyaccept = 11; +yy1217: + yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy497; - goto yy491; - } else { - if (yych <= '0') goto yy1095; - if (yych <= '9') goto yy611; - goto yy491; + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'E': goto yy1189; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'e': goto yy1218; + default: goto yy194; } -yy1095: - YYDEBUG(1095, *YYCURSOR); - yyaccept = 11; +yy1218: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy605; - goto yy491; -yy1096: - YYDEBUG(1096, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '9') { - if (yych <= '-') { - if (yych == '\t') goto yy460; - if (yych <= ',') goto yy462; - goto yy1051; - } else { - if (yych <= '.') goto yy474; - if (yych <= '/') goto yy472; - if (yych <= '5') goto yy1066; - goto yy741; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy483; - if (yych == 'n') goto yy470; - goto yy462; - } else { - if (yych <= 'r') goto yy471; - if (yych <= 's') goto yy464; - if (yych <= 't') goto yy468; - goto yy462; - } - } -yy1097: - YYDEBUG(1097, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '9') { - if (yych <= '-') { - if (yych == '\t') goto yy1052; - if (yych <= ',') goto yy1054; - goto yy1051; - } else { - if (yych <= '.') goto yy1064; - if (yych <= '/') goto yy472; - if (yych <= '5') goto yy1066; - goto yy741; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy1065; - if (yych == 'n') goto yy470; - goto yy1054; - } else { - if (yych <= 'r') goto yy471; - if (yych <= 's') goto yy464; - if (yych <= 't') goto yy468; - goto yy1054; - } - } -yy1098: - YYDEBUG(1098, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy142; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'e') goto yy1099; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1099: - YYDEBUG(1099, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'U') goto yy143; - } - } else { - if (yych <= 'u') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'v') goto yy1100; - if (yych <= 'z') goto yy143; - goto yy4; - } - } -yy1100: - YYDEBUG(1100, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'I') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'H') goto yy144; - } - } else { - if (yych <= 'h') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'i') goto yy1101; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1101: - YYDEBUG(1101, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'N') goto yy145; - } - } else { - if (yych <= 'n') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'o') goto yy1102; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'M': goto yy1190; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'm': goto yy1219; + default: goto yy4; } -yy1102: - YYDEBUG(1102, *YYCURSOR); +yy1219: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'U') goto yy1103; - if (yych != 'u') goto yy4; - } -yy1103: - YYDEBUG(1103, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy1104; - if (yych != 's') goto yy57; -yy1104: - YYDEBUG(1104, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\t') goto yy1105; - if (yych != ' ') goto yy57; -yy1105: - YYDEBUG(1105, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; -yy1106: - YYDEBUG(1106, *YYCURSOR); - if (yych <= 'W') { - if (yych <= 'F') { - if (yych <= ' ') { - if (yych == '\t') goto yy1105; - if (yych <= 0x1F) goto yy57; - goto yy1105; - } else { - if (yych == 'D') goto yy1110; - if (yych <= 'E') goto yy57; - goto yy1111; - } - } else { - if (yych <= 'M') { - if (yych == 'H') goto yy1109; - if (yych <= 'L') goto yy57; - goto yy1108; - } else { - if (yych <= 'S') { - if (yych <= 'R') goto yy57; - } else { - if (yych <= 'T') goto yy1114; - if (yych <= 'V') goto yy57; - goto yy1113; - } - } - } - } else { - if (yych <= 'l') { - if (yych <= 'd') { - if (yych == 'Y') goto yy1112; - if (yych <= 'c') goto yy57; - goto yy1110; - } else { - if (yych <= 'f') { - if (yych <= 'e') goto yy57; - goto yy1111; - } else { - if (yych == 'h') goto yy1109; - goto yy57; - } - } - } else { - if (yych <= 't') { - if (yych <= 'm') goto yy1108; - if (yych <= 'r') goto yy57; - if (yych >= 't') goto yy1114; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy57; - goto yy1113; - } else { - if (yych == 'y') goto yy1112; - goto yy57; - } - } - } - } -yy1107: - YYDEBUG(1107, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'D') { - if (yych == 'A') goto yy1179; - goto yy57; - } else { - if (yych <= 'E') goto yy1180; - if (yych <= 'T') goto yy57; - goto yy1178; - } - } else { - if (yych <= 'd') { - if (yych == 'a') goto yy1179; - goto yy57; - } else { - if (yych <= 'e') goto yy1180; - if (yych == 'u') goto yy1178; - goto yy57; - } - } -yy1108: - YYDEBUG(1108, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy1170; - if (yych <= 'N') goto yy57; - goto yy1169; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy57; - goto yy1170; - } else { - if (yych == 'o') goto yy1169; - goto yy57; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'B': goto yy1191; + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'b': goto yy1220; + default: goto yy4; } -yy1109: - YYDEBUG(1109, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy1167; - if (yych == 'o') goto yy1167; - goto yy57; -yy1110: - YYDEBUG(1110, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1166; - if (yych == 'a') goto yy1166; - goto yy57; -yy1111: - YYDEBUG(1111, *YYCURSOR); +yy1220: yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'O') goto yy1151; - if (yych <= 'Q') goto yy57; - goto yy1150; - } else { - if (yych <= 'o') { - if (yych <= 'n') goto yy57; - goto yy1151; - } else { - if (yych == 'r') goto yy1150; - goto yy57; - } + switch (yych) { + case 'E': goto yy1192; + case 'e': goto yy1221; + default: goto yy155; } -yy1112: - YYDEBUG(1112, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1147; - if (yych == 'e') goto yy1147; - goto yy57; -yy1113: - YYDEBUG(1113, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1133; - if (yych == 'e') goto yy1133; - goto yy57; -yy1114: - YYDEBUG(1114, *YYCURSOR); +yy1221: yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'H') goto yy1115; - if (yych <= 'T') goto yy57; - goto yy1116; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy57; - } else { - if (yych == 'u') goto yy1116; - goto yy57; - } + switch (yych) { + case 'R': goto yy205; + case 'r': goto yy317; + default: goto yy155; } -yy1115: - YYDEBUG(1115, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy1128; - if (yych == 'u') goto yy1128; - goto yy57; -yy1116: - YYDEBUG(1116, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1117; - if (yych != 'e') goto yy57; -yy1117: - YYDEBUG(1117, *YYCURSOR); - yyaccept = 26; +yy1222: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych >= ' ') goto yy1119; - } else { - if (yych <= 'S') { - if (yych >= 'S') goto yy1121; - } else { - if (yych == 's') goto yy1121; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'N': goto yy1194; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'n': goto yy1223; + default: goto yy4; } -yy1118: - YYDEBUG(1118, *YYCURSOR); - { - timelib_sll i; - int behavior = 0; - DEBUG_OUTPUT("relativetext"); - TIMELIB_INIT; - TIMELIB_HAVE_RELATIVE(); - - while(*ptr) { - i = timelib_get_relative_text((char **) &ptr, &behavior); - timelib_eat_spaces((char **) &ptr); - timelib_set_relative((char **) &ptr, i, behavior, s); - } - TIMELIB_DEINIT; - return TIMELIB_RELATIVE; +yy1223: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'T': goto yy1195; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 't': goto yy1224; + default: goto yy4; } -yy1119: - YYDEBUG(1119, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(1120, *YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy57; - goto yy1119; - } else { - if (yych <= 'O') { - if (yych <= 'N') goto yy57; - goto yy1125; - } else { - if (yych == 'o') goto yy1125; - goto yy57; - } +yy1224: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'H': goto yy1146; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'h': goto yy1164; + default: goto yy4; } -yy1121: - YYDEBUG(1121, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy1122; - if (yych != 'd') goto yy57; -yy1122: - YYDEBUG(1122, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1123; - if (yych != 'a') goto yy57; -yy1123: - YYDEBUG(1123, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych != 'y') goto yy57; -yy1124: - YYDEBUG(1124, *YYCURSOR); - yyaccept = 26; +yy1225: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '\t') goto yy1119; - if (yych == ' ') goto yy1119; - goto yy1118; -yy1125: - YYDEBUG(1125, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy1126; - if (yych != 'f') goto yy57; -yy1126: - YYDEBUG(1126, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(1127, *YYCURSOR); - { - timelib_sll i; - int behavior = 0; - DEBUG_OUTPUT("weekdayof"); - TIMELIB_INIT; - TIMELIB_HAVE_RELATIVE(); - TIMELIB_HAVE_SPECIAL_RELATIVE(); - - i = timelib_get_relative_text((char **) &ptr, &behavior); - timelib_eat_spaces((char **) &ptr); - if (i > 0) { /* first, second... etc */ - s->time->relative.special.type = TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH; - timelib_set_relative((char **) &ptr, i, 1, s); - } else { /* last */ - s->time->relative.special.type = TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH; - timelib_set_relative((char **) &ptr, i, behavior, s); - } - TIMELIB_DEINIT; - return TIMELIB_WEEK_DAY_OF_MONTH; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'N': goto yy1197; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'n': goto yy1226; + default: goto yy4; } -yy1128: - YYDEBUG(1128, *YYCURSOR); - yyaccept = 26; +yy1226: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; - } else { - if (yych <= 'R') { - if (yych <= 'Q') goto yy1118; - } else { - if (yych != 'r') goto yy1118; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'D': goto yy1156; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'd': goto yy1168; + default: goto yy4; } - YYDEBUG(1129, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy1130; - if (yych != 's') goto yy57; -yy1130: - YYDEBUG(1130, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy1131; - if (yych != 'd') goto yy57; -yy1131: - YYDEBUG(1131, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1132; - if (yych != 'a') goto yy57; -yy1132: - YYDEBUG(1132, *YYCURSOR); +yy1227: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1133: - YYDEBUG(1133, *YYCURSOR); + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'C': + case 'c': goto yy1228; + default: goto yy4; + } +yy1228: yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= 'C') goto yy57; - if (yych <= 'D') goto yy1135; - } else { - if (yych <= 'c') goto yy57; - if (yych <= 'd') goto yy1135; - if (yych >= 'f') goto yy57; - } - YYDEBUG(1134, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'K') goto yy1141; - if (yych == 'k') goto yy1141; - goto yy57; -yy1135: - YYDEBUG(1135, *YYCURSOR); - yyaccept = 26; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'K': + case 'k': goto yy1229; + default: goto yy4; + } +yy1229: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; - } else { - if (yych <= 'N') { - if (yych <= 'M') goto yy1118; - } else { - if (yych != 'n') goto yy1118; - } + switch (yych) { + case ' ': goto yy1230; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; } - YYDEBUG(1136, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1137; - if (yych != 'e') goto yy57; -yy1137: - YYDEBUG(1137, *YYCURSOR); +yy1230: yych = *++YYCURSOR; - if (yych == 'S') goto yy1138; - if (yych != 's') goto yy57; -yy1138: - YYDEBUG(1138, *YYCURSOR); + switch (yych) { + case 'O': + case 'o': goto yy1231; + default: goto yy57; + } +yy1231: yych = *++YYCURSOR; - if (yych == 'D') goto yy1139; - if (yych != 'd') goto yy57; -yy1139: - YYDEBUG(1139, *YYCURSOR); + switch (yych) { + case 'F': + case 'f': goto yy1232; + default: goto yy57; + } +yy1232: yych = *++YYCURSOR; - if (yych == 'A') goto yy1140; - if (yych != 'a') goto yy57; -yy1140: - YYDEBUG(1140, *YYCURSOR); + switch (yych) { + case ' ': goto yy1233; + default: goto yy57; + } +yy1233: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1141: - YYDEBUG(1141, *YYCURSOR); + switch (yych) { + case '0': + case '1': goto yy1234; + case '2': goto yy1236; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1237; + default: goto yy57; + } +yy1234: yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych == 'D') goto yy1144; - if (yych >= 'S') goto yy1143; - } else { - if (yych <= 'd') { - if (yych >= 'd') goto yy1144; - } else { - if (yych == 's') goto yy1143; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1237; + default: goto yy1238; } -yy1142: - YYDEBUG(1142, *YYCURSOR); +yy1235: { - timelib_sll i; - int behavior = 0; - DEBUG_OUTPUT("relativetextweek"); + DEBUG_OUTPUT("backof | frontof"); TIMELIB_INIT; - TIMELIB_HAVE_RELATIVE(); + TIMELIB_UNHAVE_TIME(); + TIMELIB_HAVE_TIME(); - while(*ptr) { - i = timelib_get_relative_text((char **) &ptr, &behavior); + if (*ptr == 'b') { + s->time->h = timelib_get_nr((char **) &ptr, 2); + s->time->i = 15; + } else { + s->time->h = timelib_get_nr((char **) &ptr, 2) - 1; + s->time->i = 45; + } + if (*ptr != '\0' ) { timelib_eat_spaces((char **) &ptr); - timelib_set_relative((char **) &ptr, i, behavior, s); - s->time->relative.weekday_behavior = 2; - - /* to handle the format weekday + last/this/next week */ - if (s->time->relative.have_weekday_relative == 0) { - TIMELIB_HAVE_WEEKDAY_RELATIVE(); - s->time->relative.weekday = 1; - } + s->time->h += timelib_meridian((char **) &ptr, s->time->h); } + TIMELIB_DEINIT; - return TIMELIB_RELATIVE; - } -yy1143: - YYDEBUG(1143, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1118; -yy1144: - YYDEBUG(1144, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1145; - if (yych != 'a') goto yy57; -yy1145: - YYDEBUG(1145, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1146; - if (yych != 'y') goto yy57; -yy1146: - YYDEBUG(1146, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy1143; - if (yych == 's') goto yy1143; - goto yy1118; -yy1147: - YYDEBUG(1147, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1148; - if (yych != 'a') goto yy57; -yy1148: - YYDEBUG(1148, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy1149; - if (yych != 'r') goto yy57; -yy1149: - YYDEBUG(1149, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy1143; - if (yych == 's') goto yy1143; - goto yy1118; -yy1150: - YYDEBUG(1150, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy1163; - if (yych == 'i') goto yy1163; - goto yy57; -yy1151: - YYDEBUG(1151, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy1152; - if (yych != 'r') goto yy57; -yy1152: - YYDEBUG(1152, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy1153; - if (yych != 't') goto yy57; -yy1153: - YYDEBUG(1153, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'H') goto yy1155; - if (yych <= 'M') goto yy57; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy57; - goto yy1155; - } else { - if (yych != 'n') goto yy57; - } + return TIMELIB_LF_DAY_OF_MONTH; } - YYDEBUG(1154, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy1160; - if (yych == 'i') goto yy1160; - goto yy57; -yy1155: - YYDEBUG(1155, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy1156; - if (yych != 'n') goto yy57; -yy1156: - YYDEBUG(1156, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy1157; - if (yych != 'i') goto yy57; -yy1157: - YYDEBUG(1157, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy1158; - if (yych != 'g') goto yy57; -yy1158: - YYDEBUG(1158, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy1159; - if (yych != 'h') goto yy57; -yy1159: - YYDEBUG(1159, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy1149; - if (yych == 't') goto yy1149; - goto yy57; -yy1160: - YYDEBUG(1160, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy1161; - if (yych != 'g') goto yy57; -yy1161: - YYDEBUG(1161, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy1162; - if (yych != 'h') goto yy57; -yy1162: - YYDEBUG(1162, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy1149; - if (yych == 't') goto yy1149; - goto yy57; -yy1163: - YYDEBUG(1163, *YYCURSOR); - yyaccept = 26; +yy1236: + yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; - } else { - if (yych <= 'D') { - if (yych <= 'C') goto yy1118; - } else { - if (yych != 'd') goto yy1118; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy1237; + default: goto yy1238; } - YYDEBUG(1164, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1165; - if (yych != 'a') goto yy57; -yy1165: - YYDEBUG(1165, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1166: - YYDEBUG(1166, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1149; - if (yych == 'y') goto yy1149; - goto yy57; -yy1167: - YYDEBUG(1167, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy1168; - if (yych != 'u') goto yy57; -yy1168: - YYDEBUG(1168, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy1149; - if (yych == 'r') goto yy1149; - goto yy57; -yy1169: - YYDEBUG(1169, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy1174; - if (yych == 'n') goto yy1174; - goto yy57; -yy1170: - YYDEBUG(1170, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy1171; - if (yych != 'n') goto yy57; -yy1171: - YYDEBUG(1171, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'U') { - if (yych == 'S') goto yy1143; - if (yych <= 'T') goto yy1118; - } else { - if (yych <= 's') { - if (yych <= 'r') goto yy1118; - goto yy1143; - } else { - if (yych != 'u') goto yy1118; - } +yy1237: + yyaccept = 27; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; +yy1238: + switch (yych) { + case '\t': + case ' ': goto yy1237; + case 'A': + case 'P': + case 'a': + case 'p': goto yy1239; + default: goto yy1235; } - YYDEBUG(1172, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy1173; - if (yych != 't') goto yy57; -yy1173: - YYDEBUG(1173, *YYCURSOR); +yy1239: yych = *++YYCURSOR; - if (yych == 'E') goto yy1149; - if (yych == 'e') goto yy1149; - goto yy57; -yy1174: - YYDEBUG(1174, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy1119; - goto yy1118; - } else { - if (yych <= ' ') goto yy1119; - if (yych <= 'C') goto yy1118; - } - } else { - if (yych <= 'c') { - if (yych == 'T') goto yy1176; - goto yy1118; - } else { - if (yych <= 'd') goto yy1175; - if (yych == 't') goto yy1176; - goto yy1118; - } + switch (yych) { + case '.': goto yy1240; + case 'M': + case 'm': goto yy1241; + default: goto yy57; } -yy1175: - YYDEBUG(1175, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1177; - if (yych == 'a') goto yy1177; - goto yy57; -yy1176: - YYDEBUG(1176, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy1149; - if (yych == 'h') goto yy1149; - goto yy57; -yy1177: - YYDEBUG(1177, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1178: - YYDEBUG(1178, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy1189; - if (yych == 'n') goto yy1189; - goto yy57; -yy1179: - YYDEBUG(1179, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy1184; - if (yych == 't') goto yy1184; - goto yy57; -yy1180: - YYDEBUG(1180, *YYCURSOR); +yy1240: yych = *++YYCURSOR; - if (yych == 'C') goto yy1181; - if (yych != 'c') goto yy57; -yy1181: - YYDEBUG(1181, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych == 'O') goto yy1182; - if (yych <= 'R') goto yy1118; - goto yy1143; - } else { - if (yych <= 'o') { - if (yych <= 'n') goto yy1118; - } else { - if (yych == 's') goto yy1143; - goto yy1118; - } + switch (yych) { + case 'M': + case 'm': goto yy1241; + default: goto yy57; } -yy1182: - YYDEBUG(1182, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy1183; - if (yych != 'n') goto yy57; -yy1183: - YYDEBUG(1183, *YYCURSOR); +yy1241: yych = *++YYCURSOR; - if (yych == 'D') goto yy1149; - if (yych == 'd') goto yy1149; - goto yy57; -yy1184: - YYDEBUG(1184, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; - } else { - if (yych <= 'U') { - if (yych <= 'T') goto yy1118; - } else { - if (yych != 'u') goto yy1118; - } + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy1243; + case '.': goto yy1242; + default: goto yy57; } - YYDEBUG(1185, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy1186; - if (yych != 'r') goto yy57; -yy1186: - YYDEBUG(1186, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy1187; - if (yych != 'd') goto yy57; -yy1187: - YYDEBUG(1187, *YYCURSOR); +yy1242: yych = *++YYCURSOR; - if (yych == 'A') goto yy1188; - if (yych != 'a') goto yy57; -yy1188: - YYDEBUG(1188, *YYCURSOR); + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy1243; + default: goto yy57; + } +yy1243: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1189: - YYDEBUG(1189, *YYCURSOR); - yyaccept = 26; + goto yy1235; +yy1244: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; - } else { - if (yych <= 'D') { - if (yych <= 'C') goto yy1118; - } else { - if (yych != 'd') goto yy1118; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'C': goto yy1228; + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'c': goto yy1245; + default: goto yy4; } - YYDEBUG(1190, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1191; - if (yych != 'a') goto yy57; -yy1191: - YYDEBUG(1191, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1192: - YYDEBUG(1192, *YYCURSOR); +yy1245: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy1099; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'e') goto yy1193; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'K': goto yy1229; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'k': goto yy1246; + default: goto yy4; } -yy1193: - YYDEBUG(1193, *YYCURSOR); +yy1246: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'U') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'V') goto yy1100; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'u') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'v') goto yy1194; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ' ': goto yy1230; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy4; } -yy1194: - YYDEBUG(1194, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'H') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'I') goto yy1101; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'h') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'i') goto yy1195; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1247: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'S': + case 's': goto yy1248; + default: goto yy4; } -yy1195: - YYDEBUG(1195, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'O') goto yy1102; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'n') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'o') goto yy1196; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy1248: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'T': + case 't': goto yy1249; + default: goto yy4; } -yy1196: - YYDEBUG(1196, *YYCURSOR); +yy1249: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'U') goto yy1103; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'u') goto yy1197; - if (yych <= 'z') goto yy154; - goto yy4; - } - } -yy1197: - YYDEBUG(1197, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy1104; - if (yych != 's') goto yy155; - YYDEBUG(1198, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy154; - } - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy1105; - } else { - if (yych == ' ') goto yy1105; - goto yy57; - } - } else { - if (yych <= '/') { - if (yych == '.') goto yy57; - goto yy148; - } else { - if (yych == '_') goto yy148; - goto yy57; - } - } -yy1199: - YYDEBUG(1199, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'G') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'F') goto yy142; - goto yy1213; - } - } else { - if (yych <= 'f') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'g') goto yy1213; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1200: - YYDEBUG(1200, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy142; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'e') goto yy1201; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case '\t': goto yy1045; + case ' ': goto yy1250; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; } -yy1201: - YYDEBUG(1201, *YYCURSOR); +yy1250: yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'U') goto yy143; - } - } else { - if (yych <= 'u') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'v') goto yy1202; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case 'D': + case 'd': goto yy1251; + default: goto yy1046; } -yy1202: - YYDEBUG(1202, *YYCURSOR); +yy1251: yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy144; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'e') goto yy1203; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case 'A': + case 'a': goto yy1252; + default: goto yy57; } -yy1203: - YYDEBUG(1203, *YYCURSOR); +yy1252: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy145; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'n') goto yy1204; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case 'Y': + case 'y': goto yy1253; + default: goto yy57; } -yy1204: - YYDEBUG(1204, *YYCURSOR); - yyaccept = 0; +yy1253: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'T') goto yy1205; - if (yych != 't') goto yy4; - } -yy1205: - YYDEBUG(1205, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy1206; - if (yych != 'h') goto yy57; -yy1206: - YYDEBUG(1206, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\t') goto yy1207; - if (yych != ' ') goto yy57; -yy1207: - YYDEBUG(1207, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; -yy1208: - YYDEBUG(1208, *YYCURSOR); - if (yych <= 'W') { - if (yych <= 'F') { - if (yych <= ' ') { - if (yych == '\t') goto yy1207; - if (yych <= 0x1F) goto yy57; - goto yy1207; - } else { - if (yych == 'D') goto yy1110; - if (yych <= 'E') goto yy57; - goto yy1111; - } - } else { - if (yych <= 'M') { - if (yych == 'H') goto yy1109; - if (yych <= 'L') goto yy57; - goto yy1108; - } else { - if (yych <= 'S') { - if (yych <= 'R') goto yy57; - goto yy1107; - } else { - if (yych <= 'T') goto yy1114; - if (yych <= 'V') goto yy57; - } - } - } - } else { - if (yych <= 'l') { - if (yych <= 'd') { - if (yych == 'Y') goto yy1112; - if (yych <= 'c') goto yy57; - goto yy1110; - } else { - if (yych <= 'f') { - if (yych <= 'e') goto yy57; - goto yy1111; - } else { - if (yych == 'h') goto yy1109; - goto yy57; - } - } - } else { - if (yych <= 't') { - if (yych <= 'm') goto yy1108; - if (yych <= 'r') goto yy57; - if (yych <= 's') goto yy1107; - goto yy1114; - } else { - if (yych <= 'w') { - if (yych <= 'v') goto yy57; - } else { - if (yych == 'y') goto yy1112; - goto yy57; - } - } - } - } - YYDEBUG(1209, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1210; - if (yych != 'e') goto yy57; -yy1210: - YYDEBUG(1210, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= 'C') goto yy57; - if (yych <= 'D') goto yy1135; - } else { - if (yych <= 'c') goto yy57; - if (yych <= 'd') goto yy1135; - if (yych >= 'f') goto yy57; + switch (yych) { + case ' ': goto yy1254; + case 'S': + case 's': goto yy1083; + default: goto yy1058; } - YYDEBUG(1211, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'K') goto yy1212; - if (yych != 'k') goto yy57; -yy1212: - YYDEBUG(1212, *YYCURSOR); +yy1254: yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'D') goto yy1144; - if (yych <= 'R') goto yy57; - goto yy1143; - } else { - if (yych <= 'd') { - if (yych <= 'c') goto yy57; - goto yy1144; - } else { - if (yych == 's') goto yy1143; - goto yy57; - } + switch (yych) { + case 'O': + case 'o': goto yy1255; + default: goto yy57; } -yy1213: - YYDEBUG(1213, *YYCURSOR); +yy1255: yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy143; - } - } else { - if (yych <= 'g') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'h') goto yy1214; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case 'F': + case 'f': goto yy1256; + default: goto yy57; } -yy1214: - YYDEBUG(1214, *YYCURSOR); +yy1256: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy144; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 't') goto yy1215; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1215: - YYDEBUG(1215, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy1207; - goto yy4; - } else { - if (yych <= ' ') goto yy1207; - if (yych == ')') goto yy140; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych == 'H') goto yy1216; - if (yych <= 'Z') goto yy145; - goto yy4; - } else { - if (yych == 'h') goto yy1216; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1216: - YYDEBUG(1216, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy1207; - goto yy4; - } else { - if (yych <= ' ') goto yy1207; - if (yych == ')') goto yy140; - goto yy4; - } -yy1217: - YYDEBUG(1217, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'F') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'G') goto yy1213; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'f') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'g') goto yy1225; - if (yych <= 'z') goto yy147; - goto yy4; - } - } - } -yy1218: - YYDEBUG(1218, *YYCURSOR); + goto yy2; +yy1257: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy1201; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'e') goto yy1219; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'S': goto yy1248; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 's': goto yy1258; + default: goto yy4; } -yy1219: - YYDEBUG(1219, *YYCURSOR); +yy1258: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'U') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'V') goto yy1202; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'u') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'v') goto yy1220; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'T': goto yy1249; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 't': goto yy1259; + default: goto yy4; } -yy1220: - YYDEBUG(1220, *YYCURSOR); +yy1259: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy1203; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'e') goto yy1221; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case '\t': goto yy1045; + case ' ': goto yy1250; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy4; } -yy1221: - YYDEBUG(1221, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1204; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'n') goto yy1222; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy1260: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'B': + case 'b': goto yy1296; + default: goto yy4; } -yy1222: - YYDEBUG(1222, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'T') goto yy1205; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 't') goto yy1223; - if (yych <= 'z') goto yy154; - goto yy4; - } +yy1261: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'F': + case 'f': goto yy1286; + case 'R': + case 'r': goto yy1285; + default: goto yy4; } -yy1223: - YYDEBUG(1223, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy1206; - if (yych != 'h') goto yy155; -yy1224: - YYDEBUG(1224, *YYCURSOR); +yy1262: yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy154; - } - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy1207; - } else { - if (yych == ' ') goto yy1207; - goto yy57; - } - } else { - if (yych <= '/') { - if (yych == '.') goto yy57; - goto yy148; - } else { - if (yych == '_') goto yy148; - goto yy57; - } - } -yy1225: - YYDEBUG(1225, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'H') goto yy1214; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'h') goto yy1226; - if (yych <= 'z') goto yy151; - goto yy4; - } - } - } -yy1226: - YYDEBUG(1226, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1215; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 't') goto yy1227; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'U': + case 'u': goto yy1282; + default: goto yy4; } -yy1227: - YYDEBUG(1227, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1207; - } else { - if (yych == ' ') goto yy1207; - goto yy4; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - goto yy148; - } - } - } else { - if (yych <= '^') { - if (yych <= 'G') { - if (yych <= '@') goto yy4; - goto yy145; - } else { - if (yych <= 'H') goto yy1216; - if (yych <= 'Z') goto yy145; - goto yy4; - } - } else { - if (yych <= 'g') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'h') goto yy1228; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy1263: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'I': + case 'i': goto yy1265; + case 'O': + case 'o': goto yy1264; + default: goto yy4; } -yy1228: - YYDEBUG(1228, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; +yy1264: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'N': + case 'n': goto yy1268; + default: goto yy4; } - if (yych <= ')') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy1207; - goto yy4; - } else { - if (yych <= ' ') goto yy1207; - if (yych <= '(') goto yy4; - goto yy140; - } - } else { - if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy4; - } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy4; - } +yy1265: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'D': + case 'd': goto yy1266; + default: goto yy167; } -yy1229: - YYDEBUG(1229, *YYCURSOR); +yy1266: yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych <= 'B') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy142; - } else { - if (yych <= 'O') { - if (yych <= 'C') goto yy1245; - goto yy142; - } else { - if (yych <= 'P') goto yy1247; - if (yych <= 'U') goto yy142; - goto yy1246; - } - } - } else { - if (yych <= 'o') { - if (yych <= '`') { - if (yych <= 'Z') goto yy142; - goto yy4; - } else { - if (yych == 'c') goto yy1245; - goto yy142; - } - } else { - if (yych <= 'u') { - if (yych <= 'p') goto yy1247; - goto yy142; - } else { - if (yych <= 'v') goto yy1246; - if (yych <= 'z') goto yy142; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1267; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; } -yy1230: - YYDEBUG(1230, *YYCURSOR); +yy1267: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy142; - goto yy1240; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 't') goto yy1240; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy145; + case 'Y': + case 'y': goto yy1176; + default: goto yy4; } -yy1231: - YYDEBUG(1231, *YYCURSOR); +yy1268: yych = *++YYCURSOR; - if (yych <= 'X') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'W') goto yy142; - goto yy1237; - } - } else { - if (yych <= 'w') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'x') goto yy1237; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'T': + case 't': goto yy1269; + default: goto yy4; } -yy1232: - YYDEBUG(1232, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'n') goto yy1233; - if (yych <= 'z') goto yy142; - goto yy4; - } +yy1269: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ' ': goto yy1270; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy4; } -yy1233: - YYDEBUG(1233, *YYCURSOR); +yy1270: yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; - } else { - if (yych <= '@') goto yy167; - if (yych <= 'C') goto yy143; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; - } else { - if (yych <= 'd') goto yy1234; - if (yych <= 'z') goto yy143; - goto yy167; - } + switch (yych) { + case 'O': + case 'o': goto yy1271; + default: goto yy57; } -yy1234: - YYDEBUG(1234, *YYCURSOR); +yy1271: yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy144; - goto yy4; - } else { - if (yych <= 'a') goto yy1235; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case 'F': + case 'f': goto yy1272; + default: goto yy57; } -yy1235: - YYDEBUG(1235, *YYCURSOR); +yy1272: yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'X') goto yy145; - } - } else { - if (yych <= 'x') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'y') goto yy1236; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ' ': goto yy1273; + default: goto yy57; } -yy1236: - YYDEBUG(1236, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ')') goto yy140; - goto yy167; -yy1237: - YYDEBUG(1237, *YYCURSOR); +yy1273: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 't') goto yy1238; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case '0': + case '1': goto yy1274; + case '2': goto yy1275; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1276; + default: goto yy57; } -yy1238: - YYDEBUG(1238, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - } - } else { - if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'h') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; - } +yy1274: + yyaccept = 27; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1276; + default: goto yy1277; } -yy1239: - YYDEBUG(1239, *YYCURSOR); - yyaccept = 0; +yy1275: + yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1207; - } else { - if (yych == ' ') goto yy1207; - goto yy4; - } - } else { - if (yych <= 'Z') { - if (yych <= ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy145; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': goto yy1276; + default: goto yy1277; } -yy1240: - YYDEBUG(1240, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; - } else { - if (yych <= '@') goto yy167; - if (yych <= 'T') goto yy143; - } - } else { - if (yych <= 't') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; - } else { - if (yych <= 'u') goto yy1241; - if (yych <= 'z') goto yy143; - goto yy167; - } +yy1276: + yyaccept = 27; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; +yy1277: + switch (yych) { + case '\t': + case ' ': goto yy1276; + case 'A': + case 'P': + case 'a': + case 'p': goto yy1278; + default: goto yy1235; } -yy1241: - YYDEBUG(1241, *YYCURSOR); +yy1278: yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy144; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'r') goto yy1242; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case '.': goto yy1279; + case 'M': + case 'm': goto yy1280; + default: goto yy57; } -yy1242: - YYDEBUG(1242, *YYCURSOR); +yy1279: yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy145; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'd') goto yy1243; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1243: - YYDEBUG(1243, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'A') goto yy1244; - if (yych != 'a') goto yy4; + switch (yych) { + case 'M': + case 'm': goto yy1280; + default: goto yy57; } -yy1244: - YYDEBUG(1244, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy173; - goto yy57; -yy1245: - YYDEBUG(1245, *YYCURSOR); +yy1280: yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'N') goto yy143; - goto yy1256; - } - } else { - if (yych <= 'n') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'o') goto yy1256; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy1243; + case '.': goto yy1281; + default: goto yy57; } -yy1246: - YYDEBUG(1246, *YYCURSOR); +yy1281: yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy143; - goto yy1253; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'e') goto yy1253; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case 0x00: + case '\t': + case ' ': goto yy1243; + default: goto yy57; } -yy1247: - YYDEBUG(1247, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'T') goto yy143; - } - } else { - if (yych <= 's') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 't') goto yy1248; - if (yych <= 'z') goto yy143; - goto yy194; - } - } +yy1282: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'R': + case 'r': goto yy1283; + default: goto yy4; } -yy1248: - YYDEBUG(1248, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'E') goto yy144; - } - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy194; - goto yy144; - } else { - if (yych <= 'e') goto yy1249; - if (yych <= 'z') goto yy144; - goto yy194; - } - } +yy1283: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'T': + case 't': goto yy1284; + default: goto yy4; } -yy1249: - YYDEBUG(1249, *YYCURSOR); +yy1284: yych = *++YYCURSOR; - if (yych <= 'M') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'L') goto yy145; - } - } else { - if (yych <= 'l') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'm') goto yy1250; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1250: - YYDEBUG(1250, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'A') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'B') goto yy1251; - if (yych != 'b') goto yy4; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'H': + case 'h': goto yy1156; + default: goto yy4; } -yy1251: - YYDEBUG(1251, *YYCURSOR); +yy1285: yych = *++YYCURSOR; - if (yych == 'E') goto yy1252; - if (yych != 'e') goto yy57; -yy1252: - YYDEBUG(1252, *YYCURSOR); + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'S': + case 's': goto yy1288; + default: goto yy4; + } +yy1286: yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych == 'r') goto yy206; - goto yy57; -yy1253: - YYDEBUG(1253, *YYCURSOR); + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'T': + case 't': goto yy1287; + default: goto yy4; + } +yy1287: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy144; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'n') goto yy1254; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'H': + case 'h': goto yy1179; + default: goto yy4; } -yy1254: - YYDEBUG(1254, *YYCURSOR); +yy1288: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy145; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 't') goto yy1255; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'T': + case 't': goto yy1289; + default: goto yy4; } -yy1255: - YYDEBUG(1255, *YYCURSOR); +yy1289: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'H') goto yy1206; - if (yych == 'h') goto yy1206; - goto yy4; + switch (yych) { + case '\t': goto yy1147; + case ' ': goto yy1290; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy4; } -yy1256: - YYDEBUG(1256, *YYCURSOR); +yy1290: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy144; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'n') goto yy1257; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case 'D': + case 'd': goto yy1291; + default: goto yy1148; } -yy1257: - YYDEBUG(1257, *YYCURSOR); +yy1291: yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy145; - goto yy1216; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'd') goto yy1216; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1258: - YYDEBUG(1258, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'U') { - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - goto yy148; - } - } else { - if (yych <= 'C') { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy142; - goto yy1245; - } else { - if (yych == 'P') goto yy1247; - goto yy142; - } - } - } else { - if (yych <= 'b') { - if (yych <= '^') { - if (yych <= 'V') goto yy1246; - if (yych <= 'Z') goto yy142; - goto yy4; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - goto yy147; - } - } else { - if (yych <= 'p') { - if (yych <= 'c') goto yy1274; - if (yych <= 'o') goto yy147; - goto yy1276; - } else { - if (yych == 'v') goto yy1275; - if (yych <= 'z') goto yy147; - goto yy4; - } - } - } -yy1259: - YYDEBUG(1259, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1240; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 't') goto yy1269; - if (yych <= 'z') goto yy147; - goto yy4; - } - } - } -yy1260: - YYDEBUG(1260, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'W') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'X') goto yy1237; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'w') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'x') goto yy1266; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case 'A': + case 'a': goto yy1292; + default: goto yy57; } -yy1261: - YYDEBUG(1261, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1233; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'n') goto yy1262; - if (yych <= 'z') goto yy147; - goto yy4; - } - } +yy1292: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy1293; + default: goto yy57; } -yy1262: - YYDEBUG(1262, *YYCURSOR); - yyaccept = 4; +yy1293: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1234; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy167; - goto yy151; - } else { - if (yych <= 'd') goto yy1263; - if (yych <= 'z') goto yy151; - goto yy167; - } - } + switch (yych) { + case ' ': goto yy1294; + case 'S': + case 's': goto yy1083; + default: goto yy1058; } -yy1263: - YYDEBUG(1263, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy1235; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1264; - if (yych <= 'z') goto yy152; - goto yy4; - } +yy1294: + yych = *++YYCURSOR; + switch (yych) { + case 'O': + case 'o': goto yy1295; + default: goto yy57; } -yy1264: - YYDEBUG(1264, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'Y') goto yy1236; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'x') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'y') goto yy1265; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy1295: + yych = *++YYCURSOR; + switch (yych) { + case 'F': + case 'f': goto yy1256; + default: goto yy57; } -yy1265: - YYDEBUG(1265, *YYCURSOR); - yyaccept = 4; +yy1296: + yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; - } - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; - } else { - if (yych <= '/') { - if (yych <= '.') goto yy167; - goto yy148; - } else { - if (yych == '_') goto yy148; - goto yy167; - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'R': + case 'r': goto yy1297; + default: goto yy194; } -yy1266: - YYDEBUG(1266, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1238; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 't') goto yy1267; - if (yych <= 'z') goto yy151; - goto yy4; - } - } +yy1297: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'U': + case 'u': goto yy1298; + default: goto yy4; } -yy1267: - YYDEBUG(1267, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'H') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'h') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1298: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1299; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy4; } -yy1268: - YYDEBUG(1268, *YYCURSOR); +yy1299: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= ' ') { - if (yych == '\t') goto yy1207; - if (yych <= 0x1F) goto yy4; - goto yy1207; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } - } else { - if (yych <= 'Z') { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy153; - goto yy4; - } - } - } -yy1269: - YYDEBUG(1269, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'U') goto yy1241; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; - } else { - if (yych <= 't') { - if (yych <= '`') goto yy167; - goto yy151; - } else { - if (yych <= 'u') goto yy1270; - if (yych <= 'z') goto yy151; - goto yy167; - } - } + switch (yych) { + case ')': goto yy140; + case 'R': + case 'r': goto yy1300; + default: goto yy4; } -yy1270: - YYDEBUG(1270, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'R') goto yy1242; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'r') goto yy1271; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1300: + yych = *++YYCURSOR; + switch (yych) { + case 'Y': + case 'y': goto yy205; + default: goto yy57; } -yy1271: - YYDEBUG(1271, *YYCURSOR); +yy1301: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1243; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'd') goto yy1272; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'B': goto yy1296; + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'b': goto yy1319; + default: goto yy4; } -yy1272: - YYDEBUG(1272, *YYCURSOR); +yy1302: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy1244; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1273; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'F': goto yy1286; + case 'R': goto yy1285; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'f': goto yy1315; + case 'r': goto yy1314; + default: goto yy4; } -yy1273: - YYDEBUG(1273, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy186; - goto yy155; -yy1274: - YYDEBUG(1274, *YYCURSOR); +yy1303: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'O') goto yy1256; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'n') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'o') goto yy1285; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'U': goto yy1282; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'u': goto yy1311; + default: goto yy4; } -yy1275: - YYDEBUG(1275, *YYCURSOR); +yy1304: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy1253; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'e') goto yy1282; - if (yych <= 'z') goto yy151; - goto yy4; - } - } - } -yy1276: - YYDEBUG(1276, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'S') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'T') goto yy1248; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 's') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 't') goto yy1277; - if (yych <= 'z') goto yy151; - goto yy194; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'I': goto yy1265; + case 'O': goto yy1264; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'i': goto yy1306; + case 'o': goto yy1305; + default: goto yy4; } -yy1277: - YYDEBUG(1277, *YYCURSOR); - yyaccept = 5; +yy1305: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'D') { - if (yych <= '@') goto yy194; - goto yy144; - } else { - if (yych <= 'E') goto yy1249; - if (yych <= 'Z') goto yy144; - goto yy194; - } - } else { - if (yych <= 'd') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy152; - } else { - if (yych <= 'e') goto yy1278; - if (yych <= 'z') goto yy152; - goto yy194; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'N': goto yy1268; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'n': goto yy1309; + default: goto yy4; } -yy1278: - YYDEBUG(1278, *YYCURSOR); - yyaccept = 0; +yy1306: + yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'M') goto yy1250; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'l') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'm') goto yy1279; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'D': goto yy1266; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'd': goto yy1307; + default: goto yy167; } -yy1279: - YYDEBUG(1279, *YYCURSOR); +yy1307: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'A') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'B') goto yy1251; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'b') goto yy1280; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy1267; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': goto yy1308; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy4; } -yy1280: - YYDEBUG(1280, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1252; - if (yych != 'e') goto yy155; - YYDEBUG(1281, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych == 'r') goto yy377; - goto yy155; -yy1282: - YYDEBUG(1282, *YYCURSOR); +yy1308: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1254; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'n') goto yy1283; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': goto yy145; + case 'Y': goto yy1176; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy153; + case 'y': goto yy1205; + default: goto yy4; } -yy1283: - YYDEBUG(1283, *YYCURSOR); +yy1309: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1255; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 't') goto yy1284; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'T': goto yy1269; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 't': goto yy1310; + default: goto yy4; } -yy1284: - YYDEBUG(1284, *YYCURSOR); +yy1310: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'H') goto yy1206; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'h') goto yy1224; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ' ': goto yy1270; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy4; } -yy1285: - YYDEBUG(1285, *YYCURSOR); +yy1311: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1257; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'n') goto yy1286; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'R': goto yy1283; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'r': goto yy1312; + default: goto yy4; } -yy1286: - YYDEBUG(1286, *YYCURSOR); +yy1312: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1216; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'd') goto yy1228; - if (yych <= 'z') goto yy153; - goto yy4; - } - } - } -yy1287: - YYDEBUG(1287, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'C') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy142; - } - } else { - if (yych <= 'b') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'c') goto yy1288; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1288: - YYDEBUG(1288, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'K') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'J') goto yy143; - } - } else { - if (yych <= 'j') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'k') goto yy1289; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'T': goto yy1284; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 't': goto yy1313; + default: goto yy4; } -yy1289: - YYDEBUG(1289, *YYCURSOR); +yy1313: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ')') { - if (yych == ' ') goto yy1290; - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy4; - goto yy144; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1290: - YYDEBUG(1290, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy1291; - if (yych != 'o') goto yy57; -yy1291: - YYDEBUG(1291, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy1292; - if (yych != 'f') goto yy57; -yy1292: - YYDEBUG(1292, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ' ') goto yy57; - YYDEBUG(1293, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy1294; - if (yych <= '2') goto yy1296; - if (yych <= '9') goto yy1297; - goto yy57; -yy1294: - YYDEBUG(1294, *YYCURSOR); - yyaccept = 28; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1298; - if (yych <= '9') goto yy1297; - goto yy1298; -yy1295: - YYDEBUG(1295, *YYCURSOR); - { - DEBUG_OUTPUT("backof | frontof"); - TIMELIB_INIT; - TIMELIB_UNHAVE_TIME(); - TIMELIB_HAVE_TIME(); - - if (*ptr == 'b') { - s->time->h = timelib_get_nr((char **) &ptr, 2); - s->time->i = 15; - } else { - s->time->h = timelib_get_nr((char **) &ptr, 2) - 1; - s->time->i = 45; - } - if (*ptr != '\0' ) { - timelib_eat_spaces((char **) &ptr); - s->time->h += timelib_meridian((char **) &ptr, s->time->h); - } - - TIMELIB_DEINIT; - return TIMELIB_LF_DAY_OF_MONTH; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'H': goto yy1156; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'h': goto yy1168; + default: goto yy4; } -yy1296: - YYDEBUG(1296, *YYCURSOR); - yyaccept = 28; +yy1314: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1298; - if (yych >= '5') goto yy1298; -yy1297: - YYDEBUG(1297, *YYCURSOR); - yyaccept = 28; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; -yy1298: - YYDEBUG(1298, *YYCURSOR); - if (yych <= 'A') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy1297; - goto yy1295; - } else { - if (yych <= ' ') goto yy1297; - if (yych <= '@') goto yy1295; - } - } else { - if (yych <= '`') { - if (yych != 'P') goto yy1295; - } else { - if (yych <= 'a') goto yy1299; - if (yych != 'p') goto yy1295; - } - } -yy1299: - YYDEBUG(1299, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych != '.') goto yy57; - } else { - if (yych <= 'M') goto yy1301; - if (yych == 'm') goto yy1301; - goto yy57; - } - YYDEBUG(1300, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy1301; - if (yych != 'm') goto yy57; -yy1301: - YYDEBUG(1301, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy1303; - if (yych == '\t') goto yy1303; - goto yy57; - } else { - if (yych <= ' ') goto yy1303; - if (yych != '.') goto yy57; - } - YYDEBUG(1302, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy1303; - if (yych <= 0x08) goto yy57; - } else { - if (yych != ' ') goto yy57; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'S': goto yy1288; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 's': goto yy1317; + default: goto yy4; } -yy1303: - YYDEBUG(1303, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1295; -yy1304: - YYDEBUG(1304, *YYCURSOR); +yy1315: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'B') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'C') goto yy1288; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'b') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'c') goto yy1305; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'T': goto yy1287; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 't': goto yy1316; + default: goto yy4; } -yy1305: - YYDEBUG(1305, *YYCURSOR); +yy1316: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'J') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'K') goto yy1289; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'j') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'k') goto yy1306; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'H': goto yy1179; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'h': goto yy1208; + default: goto yy4; } -yy1306: - YYDEBUG(1306, *YYCURSOR); +yy1317: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= '(') { - if (yych == ' ') goto yy1290; - goto yy4; - } else { - if (yych <= ')') goto yy140; - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= '^') { - if (yych <= '/') goto yy148; - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy144; - goto yy4; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy152; - goto yy4; - } - } -yy1307: - YYDEBUG(1307, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy142; - } - } else { - if (yych <= 'r') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 's') goto yy1308; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1308: - YYDEBUG(1308, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 't') goto yy1309; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'T': goto yy1289; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 't': goto yy1318; + default: goto yy4; } -yy1309: - YYDEBUG(1309, *YYCURSOR); +yy1318: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1105; - } else { - if (yych != ' ') goto yy4; - } - } else { - if (yych <= 'Z') { - if (yych <= ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy144; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case '\t': goto yy1147; + case ' ': goto yy1290; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy4; } -yy1310: - YYDEBUG(1310, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy1311; - if (yych != 'd') goto yy1106; -yy1311: - YYDEBUG(1311, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1312; - if (yych != 'a') goto yy57; -yy1312: - YYDEBUG(1312, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1313; - if (yych != 'y') goto yy57; -yy1313: - YYDEBUG(1313, *YYCURSOR); - yyaccept = 26; +yy1319: + yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych != ' ') goto yy1118; - } else { - if (yych <= 'S') goto yy1143; - if (yych == 's') goto yy1143; - goto yy1118; + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'R': goto yy1297; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'r': goto yy1320; + default: goto yy194; } - YYDEBUG(1314, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy1315; - if (yych != 'o') goto yy57; -yy1315: - YYDEBUG(1315, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy1316; - if (yych != 'f') goto yy57; -yy1316: - YYDEBUG(1316, *YYCURSOR); - yych = *++YYCURSOR; - goto yy2; -yy1317: - YYDEBUG(1317, *YYCURSOR); +yy1320: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'S') goto yy1308; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 's') goto yy1318; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'U': goto yy1298; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'u': goto yy1321; + default: goto yy4; } -yy1318: - YYDEBUG(1318, *YYCURSOR); +yy1321: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1309; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 't') goto yy1319; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy1299; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': goto yy1322; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy4; } -yy1319: - YYDEBUG(1319, *YYCURSOR); +yy1322: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= ' ') { - if (yych == '\t') goto yy1105; - if (yych <= 0x1F) goto yy4; - goto yy1310; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } - } else { - if (yych <= 'Z') { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy152; - goto yy4; - } - } - } -yy1320: - YYDEBUG(1320, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'B') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy142; - goto yy1356; - } - } else { - if (yych <= 'a') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'b') goto yy1356; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1321: - YYDEBUG(1321, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == 'F') goto yy1346; - if (yych <= 'Q') goto yy142; - goto yy1345; - } - } else { - if (yych <= 'f') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'e') goto yy142; - goto yy1346; - } else { - if (yych == 'r') goto yy1345; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1322: - YYDEBUG(1322, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'T') goto yy142; - goto yy1342; - } - } else { - if (yych <= 't') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'u') goto yy1342; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'R': goto yy1300; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'r': goto yy1323; + default: goto yy4; } yy1323: - YYDEBUG(1323, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == 'I') goto yy1325; - if (yych <= 'N') goto yy142; - } - } else { - if (yych <= 'i') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'h') goto yy142; - goto yy1325; - } else { - if (yych == 'o') goto yy1324; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case 'Y': goto yy205; + case 'y': goto yy317; + default: goto yy155; } yy1324: - YYDEBUG(1324, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy143; - goto yy1328; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'n') goto yy1328; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1325; + default: goto yy57; } yy1325: - YYDEBUG(1325, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; - } else { - if (yych <= '@') goto yy167; - if (yych <= 'C') goto yy143; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; - } else { - if (yych <= 'd') goto yy1326; - if (yych <= 'z') goto yy143; - goto yy167; - } - } -yy1326: - YYDEBUG(1326, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy144; - goto yy4; - } else { - if (yych <= 'a') goto yy1327; - if (yych <= 'z') goto yy144; - goto yy4; - } + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1325; + default: goto yy1327; } yy1327: - YYDEBUG(1327, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'X') goto yy145; - goto yy1236; - } - } else { - if (yych <= 'x') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'y') goto yy1236; - if (yych <= 'z') goto yy145; - goto yy4; - } + { + timelib_ull i; + + TIMELIB_INIT; + TIMELIB_HAVE_RELATIVE(); + TIMELIB_UNHAVE_DATE(); + TIMELIB_UNHAVE_TIME(); + TIMELIB_HAVE_TZ(); + + i = timelib_get_unsigned_nr((char **) &ptr, 24); + s->time->y = 1970; + s->time->m = 1; + s->time->d = 1; + s->time->h = s->time->i = s->time->s = 0; + s->time->f = 0.0; + s->time->relative.s += i; + s->time->is_localtime = 1; + s->time->zone_type = TIMELIB_ZONETYPE_OFFSET; + s->time->z = 0; + s->time->dst = 0; + + TIMELIB_DEINIT; + return TIMELIB_RELATIVE; } yy1328: - YYDEBUG(1328, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy144; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 't') goto yy1329; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1329: - YYDEBUG(1329, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ')') { - if (yych == ' ') goto yy1330; - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy4; - goto yy145; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1330: - YYDEBUG(1330, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy1331; - if (yych != 'o') goto yy57; -yy1331: - YYDEBUG(1331, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy1332; - if (yych != 'f') goto yy57; -yy1332: - YYDEBUG(1332, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ' ') goto yy57; - YYDEBUG(1333, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy1334; - if (yych <= '2') goto yy1335; - if (yych <= '9') goto yy1336; - goto yy57; -yy1334: - YYDEBUG(1334, *YYCURSOR); - yyaccept = 28; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1337; - if (yych <= '9') goto yy1336; - goto yy1337; -yy1335: - YYDEBUG(1335, *YYCURSOR); - yyaccept = 28; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1337; - if (yych >= '5') goto yy1337; -yy1336: - YYDEBUG(1336, *YYCURSOR); - yyaccept = 28; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; -yy1337: - YYDEBUG(1337, *YYCURSOR); - if (yych <= 'A') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy1336; - goto yy1295; - } else { - if (yych <= ' ') goto yy1336; - if (yych <= '@') goto yy1295; - } - } else { - if (yych <= '`') { - if (yych != 'P') goto yy1295; - } else { - if (yych <= 'a') goto yy1338; - if (yych != 'p') goto yy1295; - } - } -yy1338: - YYDEBUG(1338, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych != '.') goto yy57; - } else { - if (yych <= 'M') goto yy1340; - if (yych == 'm') goto yy1340; - goto yy57; - } - YYDEBUG(1339, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy1340; - if (yych != 'm') goto yy57; -yy1340: - YYDEBUG(1340, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy1303; - if (yych == '\t') goto yy1303; - goto yy57; - } else { - if (yych <= ' ') goto yy1303; - if (yych != '.') goto yy57; - } - YYDEBUG(1341, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy1303; - if (yych <= 0x08) goto yy57; - goto yy1303; - } else { - if (yych == ' ') goto yy1303; - goto yy57; - } -yy1342: - YYDEBUG(1342, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy143; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'r') goto yy1343; - if (yych <= 'z') goto yy143; - goto yy4; - } - } -yy1343: - YYDEBUG(1343, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy144; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 't') goto yy1344; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1344: - YYDEBUG(1344, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy145; - goto yy1216; - } - } else { - if (yych <= 'g') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'h') goto yy1216; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'N': + case 'n': goto yy1369; + default: goto yy4; } -yy1345: - YYDEBUG(1345, *YYCURSOR); +yy1329: yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy143; - goto yy1348; - } - } else { - if (yych <= 'r') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 's') goto yy1348; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'I': + case 'i': goto yy1361; + case 'U': + case 'u': goto yy1362; + default: goto yy4; } -yy1346: - YYDEBUG(1346, *YYCURSOR); +yy1330: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 't') goto yy1347; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'D': + case 'd': goto yy1350; + case 'M': + case 'm': goto yy1351; + default: goto yy4; } -yy1347: - YYDEBUG(1347, *YYCURSOR); +yy1331: yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - goto yy1239; - } - } else { - if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'h') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'E': + case 'e': goto yy1346; + default: goto yy4; } -yy1348: - YYDEBUG(1348, *YYCURSOR); +yy1332: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy144; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 't') goto yy1349; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1349: - YYDEBUG(1349, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1207; - } else { - if (yych != ' ') goto yy4; - } - } else { - if (yych <= 'Z') { - if (yych <= ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy145; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'E': + case 'e': goto yy1342; + default: goto yy4; } -yy1350: - YYDEBUG(1350, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy1351; - if (yych != 'd') goto yy1208; -yy1351: - YYDEBUG(1351, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy1352; - if (yych != 'a') goto yy57; -yy1352: - YYDEBUG(1352, *YYCURSOR); +yy1333: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1353; - if (yych != 'y') goto yy57; -yy1353: - YYDEBUG(1353, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych != ' ') goto yy1118; - } else { - if (yych <= 'S') goto yy1143; - if (yych == 's') goto yy1143; - goto yy1118; + switch (yych) { + case '.': + case ':': goto yy1005; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1336; + default: goto yy57; } - YYDEBUG(1354, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy1355; - if (yych != 'o') goto yy57; -yy1355: - YYDEBUG(1355, *YYCURSOR); +yy1334: yych = *++YYCURSOR; - if (yych == 'F') goto yy1316; - if (yych == 'f') goto yy1316; - goto yy57; -yy1356: - YYDEBUG(1356, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'R') goto yy143; - } - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'r') goto yy1357; - if (yych <= 'z') goto yy143; - goto yy194; - } - } + switch (yych) { + case '.': + case ':': goto yy1005; + case '0': + case '1': + case '2': + case '3': + case '4': goto yy1336; + default: goto yy57; } -yy1357: - YYDEBUG(1357, *YYCURSOR); +yy1335: yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'T') goto yy144; - } - } else { - if (yych <= 't') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'u') goto yy1358; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case '.': + case ':': goto yy1005; + default: goto yy57; } -yy1358: - YYDEBUG(1358, *YYCURSOR); +yy1336: yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy145; - goto yy4; - } else { - if (yych <= 'a') goto yy1359; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1359: - YYDEBUG(1359, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'R') goto yy1360; - if (yych != 'r') goto yy4; + switch (yych) { + case '.': + case ':': goto yy1005; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1337; + default: goto yy57; } -yy1360: - YYDEBUG(1360, *YYCURSOR); +yy1337: yych = *++YYCURSOR; - if (yych == 'Y') goto yy206; - if (yych == 'y') goto yy206; - goto yy57; -yy1361: - YYDEBUG(1361, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'A') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'B') goto yy1356; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'b') goto yy1379; - if (yych <= 'z') goto yy147; - goto yy4; - } - } - } -yy1362: - YYDEBUG(1362, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; - } else { - if (yych == 'F') goto yy1346; - goto yy142; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= 'R') goto yy1345; - goto yy142; - } else { - if (yych == '_') goto yy148; - goto yy4; - } - } else { - if (yych <= 'q') { - if (yych == 'f') goto yy1375; - goto yy147; - } else { - if (yych <= 'r') goto yy1374; - if (yych <= 'z') goto yy147; - goto yy4; - } - } - } -yy1363: - YYDEBUG(1363, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'U') goto yy1342; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 't') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'u') goto yy1371; - if (yych <= 'z') goto yy147; - goto yy4; - } - } - } -yy1364: - YYDEBUG(1364, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; - } else { - if (yych == 'I') goto yy1325; - goto yy142; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= 'O') goto yy1324; - goto yy142; - } else { - if (yych == '_') goto yy148; - goto yy4; - } - } else { - if (yych <= 'n') { - if (yych == 'i') goto yy1366; - goto yy147; - } else { - if (yych <= 'o') goto yy1365; - if (yych <= 'z') goto yy147; - goto yy4; - } - } - } -yy1365: - YYDEBUG(1365, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1328; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'n') goto yy1369; - if (yych <= 'z') goto yy151; - goto yy4; - } - } - } -yy1366: - YYDEBUG(1366, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1326; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy167; - goto yy151; - } else { - if (yych <= 'd') goto yy1367; - if (yych <= 'z') goto yy151; - goto yy167; - } - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1338; + default: goto yy57; } -yy1367: - YYDEBUG(1367, *YYCURSOR); - yyaccept = 0; +yy1338: + yyaccept = 23; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy1327; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1368; - if (yych <= 'z') goto yy152; - goto yy4; - } + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': goto yy1339; + case '6': goto yy1340; + default: goto yy1008; } -yy1368: - YYDEBUG(1368, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'Y') goto yy1236; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'x') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'y') goto yy1265; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy1339: + yych = *++YYCURSOR; + switch (yych) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1341; + default: goto yy57; } -yy1369: - YYDEBUG(1369, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1329; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 't') goto yy1370; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1340: + yych = *++YYCURSOR; + switch (yych) { + case '0': goto yy1341; + default: goto yy57; } -yy1370: - YYDEBUG(1370, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= '(') { - if (yych == ' ') goto yy1330; - goto yy4; - } else { - if (yych <= ')') goto yy140; - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= '^') { - if (yych <= '/') goto yy148; - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy145; - goto yy4; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy153; - goto yy4; - } +yy1341: + yych = *++YYCURSOR; + goto yy1016; +yy1342: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'L': + case 'l': goto yy1343; + default: goto yy4; } -yy1371: - YYDEBUG(1371, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'R') goto yy1343; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'r') goto yy1372; - if (yych <= 'z') goto yy151; - goto yy4; - } - } +yy1343: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'F': + case 'f': goto yy1344; + default: goto yy4; } -yy1372: - YYDEBUG(1372, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1344; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 't') goto yy1373; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1344: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'T': + case 't': goto yy1345; + default: goto yy4; } -yy1373: - YYDEBUG(1373, *YYCURSOR); +yy1345: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'H') goto yy1216; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'h') goto yy1228; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case 'H': + case 'h': goto yy1146; + default: goto yy4; } -yy1374: - YYDEBUG(1374, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'S') goto yy1348; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 's') goto yy1377; - if (yych <= 'z') goto yy151; - goto yy4; - } - } +yy1346: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'S': + case 's': goto yy1347; + default: goto yy167; } -yy1375: - YYDEBUG(1375, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1347; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 't') goto yy1376; - if (yych <= 'z') goto yy151; - goto yy4; - } - } +yy1347: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'D': + case 'd': goto yy1348; + default: goto yy4; } -yy1376: - YYDEBUG(1376, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'H') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'h') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1348: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1349; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy4; } -yy1377: - YYDEBUG(1377, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1349; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 't') goto yy1378; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1349: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'Y': + case 'y': goto yy173; + default: goto yy4; } -yy1378: - YYDEBUG(1378, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= ' ') { - if (yych == '\t') goto yy1207; - if (yych <= 0x1F) goto yy4; - goto yy1350; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } - } else { - if (yych <= 'Z') { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy153; - goto yy4; - } - } +yy1350: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1358; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + default: goto yy4; } -yy1379: - YYDEBUG(1379, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'Q') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'R') goto yy1357; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 'q') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'r') goto yy1380; - if (yych <= 'z') goto yy151; - goto yy194; - } - } +yy1351: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'O': + case 'o': goto yy1352; + default: goto yy4; } -yy1380: - YYDEBUG(1380, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'U') goto yy1358; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 't') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'u') goto yy1381; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1352: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'R': + case 'r': goto yy1353; + default: goto yy4; } -yy1381: - YYDEBUG(1381, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy1359; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1382; - if (yych <= 'z') goto yy153; - goto yy4; - } +yy1353: + yych = *++YYCURSOR; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'R': + case 'r': goto yy1354; + default: goto yy4; } -yy1382: - YYDEBUG(1382, *YYCURSOR); +yy1354: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'R') goto yy1360; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'r') goto yy1383; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'O': + case 'o': goto yy1355; + default: goto yy4; } -yy1383: - YYDEBUG(1383, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy206; - if (yych == 'y') goto yy377; - goto yy155; -yy1384: - YYDEBUG(1384, *YYCURSOR); +yy1355: yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy1385: - YYDEBUG(1385, *YYCURSOR); + switch (yych) { + case 'W': + case 'w': goto yy1356; + default: goto yy57; + } +yy1356: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(1386, *YYCURSOR); - if (yych <= '/') goto yy1387; - if (yych <= '9') goto yy1385; -yy1387: - YYDEBUG(1387, *YYCURSOR); +yy1357: { - timelib_ull i; - + DEBUG_OUTPUT("tomorrow"); TIMELIB_INIT; TIMELIB_HAVE_RELATIVE(); - TIMELIB_UNHAVE_DATE(); TIMELIB_UNHAVE_TIME(); - TIMELIB_HAVE_TZ(); - - i = timelib_get_unsigned_nr((char **) &ptr, 24); - s->time->y = 1970; - s->time->m = 1; - s->time->d = 1; - s->time->h = s->time->i = s->time->s = 0; - s->time->f = 0.0; - s->time->relative.s += i; - s->time->is_localtime = 1; - s->time->zone_type = TIMELIB_ZONETYPE_OFFSET; - s->time->z = 0; - s->time->dst = 0; + s->time->relative.d = 1; TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1388: - YYDEBUG(1388, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; - goto yy1429; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'n') goto yy1429; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1389: - YYDEBUG(1389, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == 'I') goto yy1421; - if (yych <= 'T') goto yy142; - goto yy1422; - } - } else { - if (yych <= 'i') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'h') goto yy142; - goto yy1421; - } else { - if (yych == 'u') goto yy1422; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1390: - YYDEBUG(1390, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'M') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == 'D') goto yy1410; - if (yych <= 'L') goto yy142; - goto yy1411; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'c') goto yy142; - goto yy1410; - } else { - if (yych == 'm') goto yy1411; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1391: - YYDEBUG(1391, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy142; - goto yy1406; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'e') goto yy1406; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1392: - YYDEBUG(1392, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy142; - goto yy1402; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'e') goto yy1402; - if (yych <= 'z') goto yy142; - goto yy4; - } - } -yy1393: - YYDEBUG(1393, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy1065; - goto yy57; - } else { - if (yych <= '9') goto yy1396; - if (yych <= ':') goto yy1065; - goto yy57; - } -yy1394: - YYDEBUG(1394, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy1065; - goto yy57; - } else { - if (yych <= '4') goto yy1396; - if (yych == ':') goto yy1065; - goto yy57; - } -yy1395: - YYDEBUG(1395, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '.') goto yy1065; - if (yych == ':') goto yy1065; - goto yy57; -yy1396: - YYDEBUG(1396, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy1065; - goto yy57; - } else { - if (yych <= '5') goto yy1397; - if (yych == ':') goto yy1065; - goto yy57; - } -yy1397: - YYDEBUG(1397, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(1398, *YYCURSOR); - yyaccept = 24; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1068; - if (yych <= '5') goto yy1399; - if (yych <= '6') goto yy1400; - goto yy1068; -yy1399: - YYDEBUG(1399, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy1401; - goto yy57; -yy1400: - YYDEBUG(1400, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '0') goto yy57; -yy1401: - YYDEBUG(1401, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1076; -yy1402: - YYDEBUG(1402, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'K') goto yy143; - } - } else { - if (yych <= 'k') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'l') goto yy1403; - if (yych <= 'z') goto yy143; - goto yy4; - } - } -yy1403: - YYDEBUG(1403, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'E') goto yy144; - } - } else { - if (yych <= 'e') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'f') goto yy1404; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1404: - YYDEBUG(1404, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy145; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 't') goto yy1405; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1405: - YYDEBUG(1405, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'H') goto yy1206; - if (yych == 'h') goto yy1206; - goto yy4; - } -yy1406: - YYDEBUG(1406, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; - } else { - if (yych <= '@') goto yy167; - if (yych <= 'R') goto yy143; - } - } else { - if (yych <= 'r') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; - } else { - if (yych <= 's') goto yy1407; - if (yych <= 'z') goto yy143; - goto yy167; - } - } -yy1407: - YYDEBUG(1407, *YYCURSOR); +yy1358: yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy144; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'd') goto yy1408; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy144; + case 'Y': + case 'y': goto yy1359; + default: goto yy4; } -yy1408: - YYDEBUG(1408, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy145; - goto yy4; - } else { - if (yych <= 'a') goto yy1409; - if (yych <= 'z') goto yy145; - goto yy4; - } +yy1359: + ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + default: goto yy1360; } -yy1409: - YYDEBUG(1409, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'X') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Y') goto yy173; - if (yych == 'y') goto yy173; - goto yy4; +yy1360: + { + DEBUG_OUTPUT("midnight | today"); + TIMELIB_INIT; + TIMELIB_UNHAVE_TIME(); + + TIMELIB_DEINIT; + return TIMELIB_RELATIVE; } -yy1410: - YYDEBUG(1410, *YYCURSOR); +yy1361: yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1418; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy143; - goto yy4; - } else { - if (yych <= 'a') goto yy1418; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'R': + case 'r': goto yy1367; + case 'S': + case 's': goto yy1368; + default: goto yy4; } -yy1411: - YYDEBUG(1411, *YYCURSOR); +yy1362: yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'N') goto yy143; - } - } else { - if (yych <= 'n') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'o') goto yy1412; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'R': + case 'r': goto yy1363; + default: goto yy167; } -yy1412: - YYDEBUG(1412, *YYCURSOR); +yy1363: yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy144; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'r') goto yy1413; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'S': + case 's': goto yy1364; + default: goto yy4; } -yy1413: - YYDEBUG(1413, *YYCURSOR); +yy1364: yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy145; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'r') goto yy1414; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'D': + case 'd': goto yy1365; + default: goto yy4; } -yy1414: - YYDEBUG(1414, *YYCURSOR); +yy1365: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'O') goto yy1415; - if (yych != 'o') goto yy4; - } -yy1415: - YYDEBUG(1415, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy1416; - if (yych != 'w') goto yy57; -yy1416: - YYDEBUG(1416, *YYCURSOR); - ++YYCURSOR; -yy1417: - YYDEBUG(1417, *YYCURSOR); - { - DEBUG_OUTPUT("tomorrow"); - TIMELIB_INIT; - TIMELIB_HAVE_RELATIVE(); - TIMELIB_UNHAVE_TIME(); - - s->time->relative.d = 1; - TIMELIB_DEINIT; - return TIMELIB_RELATIVE; + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1366; + default: goto yy4; } -yy1418: - YYDEBUG(1418, *YYCURSOR); +yy1366: yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'X') goto yy144; - } - } else { - if (yych <= 'x') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'y') goto yy1419; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1419: - YYDEBUG(1419, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '@') { - if (yych == ')') goto yy140; - } else { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy1420; - if (yych <= 'z') goto yy145; - } -yy1420: - YYDEBUG(1420, *YYCURSOR); - { - DEBUG_OUTPUT("midnight | today"); - TIMELIB_INIT; - TIMELIB_UNHAVE_TIME(); - - TIMELIB_DEINIT; - return TIMELIB_RELATIVE; + switch (yych) { + case 'Y': + case 'y': goto yy173; + default: goto yy57; } -yy1421: - YYDEBUG(1421, *YYCURSOR); +yy1367: yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Q') goto yy143; - if (yych <= 'R') goto yy1427; - goto yy1428; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'r') goto yy1427; - if (yych <= 's') goto yy1428; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'D': + case 'd': goto yy1179; + default: goto yy4; } -yy1422: - YYDEBUG(1422, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; - } else { - if (yych <= '@') goto yy167; - if (yych <= 'Q') goto yy143; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; - } else { - if (yych <= 'r') goto yy1423; - if (yych <= 'z') goto yy143; - goto yy167; - } +yy1368: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy1045; + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; } -yy1423: - YYDEBUG(1423, *YYCURSOR); +yy1369: yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy144; - } - } else { - if (yych <= 'r') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 's') goto yy1424; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'T': + case 't': goto yy1370; + default: goto yy4; } -yy1424: - YYDEBUG(1424, *YYCURSOR); +yy1370: yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy145; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'd') goto yy1425; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'H': + case 'h': goto yy1179; + default: goto yy4; } -yy1425: - YYDEBUG(1425, *YYCURSOR); +yy1371: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'A') goto yy1426; - if (yych != 'a') goto yy4; + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'N': goto yy1369; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'n': goto yy1401; + default: goto yy4; } -yy1426: - YYDEBUG(1426, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy173; - goto yy57; -yy1427: - YYDEBUG(1427, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy144; - goto yy1239; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'd') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; - } +yy1372: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'I': goto yy1361; + case 'U': goto yy1362; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'i': goto yy1393; + case 'u': goto yy1394; + default: goto yy4; + } +yy1373: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'D': goto yy1350; + case 'M': goto yy1351; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'd': goto yy1384; + case 'm': goto yy1385; + default: goto yy4; } -yy1428: - YYDEBUG(1428, *YYCURSOR); +yy1374: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1105; - } else { - if (yych == ' ') goto yy1105; - goto yy4; - } - } else { - if (yych <= 'Z') { - if (yych <= ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy144; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy144; - goto yy4; - } - } -yy1429: - YYDEBUG(1429, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 't') goto yy1430; - if (yych <= 'z') goto yy143; - goto yy4; - } - } -yy1430: - YYDEBUG(1430, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - goto yy1239; - } - } else { - if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'h') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'E': goto yy1346; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'e': goto yy1380; + default: goto yy4; } -yy1431: - YYDEBUG(1431, *YYCURSOR); +yy1375: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1429; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'n') goto yy1461; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'E': goto yy1342; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'e': goto yy1376; + default: goto yy4; } -yy1432: - YYDEBUG(1432, *YYCURSOR); +yy1376: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'T') { - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; - } else { - if (yych == 'I') goto yy1421; - goto yy142; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= 'U') goto yy1422; - goto yy142; - } else { - if (yych == '_') goto yy148; - goto yy4; - } - } else { - if (yych <= 't') { - if (yych == 'i') goto yy1453; - goto yy147; - } else { - if (yych <= 'u') goto yy1454; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'L': goto yy1343; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'l': goto yy1377; + default: goto yy4; } -yy1433: - YYDEBUG(1433, *YYCURSOR); +yy1377: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; - } else { - if (yych == 'D') goto yy1410; - goto yy142; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= 'M') goto yy1411; - goto yy142; - } else { - if (yych == '_') goto yy148; - goto yy4; - } - } else { - if (yych <= 'l') { - if (yych == 'd') goto yy1444; - goto yy147; - } else { - if (yych <= 'm') goto yy1445; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'F': goto yy1344; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'f': goto yy1378; + default: goto yy4; } -yy1434: - YYDEBUG(1434, *YYCURSOR); +yy1378: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy1406; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'e') goto yy1440; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'T': goto yy1345; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 't': goto yy1379; + default: goto yy4; } -yy1435: - YYDEBUG(1435, *YYCURSOR); +yy1379: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy1402; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'e') goto yy1436; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'H': goto yy1146; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'h': goto yy1164; + default: goto yy4; } -yy1436: - YYDEBUG(1436, *YYCURSOR); - yyaccept = 0; +yy1380: + yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'K') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'L') goto yy1403; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'k') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'l') goto yy1437; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'S': goto yy1347; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 's': goto yy1381; + default: goto yy167; } -yy1437: - YYDEBUG(1437, *YYCURSOR); +yy1381: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'E') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'F') goto yy1404; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'e') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'f') goto yy1438; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'D': goto yy1348; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'd': goto yy1382; + default: goto yy4; } -yy1438: - YYDEBUG(1438, *YYCURSOR); +yy1382: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1405; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 't') goto yy1439; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy1349; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': goto yy1383; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy4; } -yy1439: - YYDEBUG(1439, *YYCURSOR); +yy1383: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'H') goto yy1206; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'h') goto yy1224; - if (yych <= 'z') goto yy154; - goto yy4; - } - } -yy1440: - YYDEBUG(1440, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'S') goto yy1407; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; - } else { - if (yych <= 'r') { - if (yych <= '`') goto yy167; - goto yy151; - } else { - if (yych <= 's') goto yy1441; - if (yych <= 'z') goto yy151; - goto yy167; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'Y': goto yy173; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy154; + case 'y': goto yy186; + default: goto yy4; } -yy1441: - YYDEBUG(1441, *YYCURSOR); +yy1384: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1408; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'd') goto yy1442; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy1358; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'a': goto yy1391; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + default: goto yy4; } -yy1442: - YYDEBUG(1442, *YYCURSOR); +yy1385: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy1409; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1443; - if (yych <= 'z') goto yy153; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'O': goto yy1352; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'o': goto yy1386; + default: goto yy4; } -yy1443: - YYDEBUG(1443, *YYCURSOR); +yy1386: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'Y') goto yy173; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'y') goto yy186; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'R': goto yy1353; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'r': goto yy1387; + default: goto yy4; } -yy1444: - YYDEBUG(1444, *YYCURSOR); +yy1387: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy1418; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1451; - if (yych <= 'z') goto yy151; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'R': goto yy1354; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'r': goto yy1388; + default: goto yy4; } -yy1445: - YYDEBUG(1445, *YYCURSOR); +yy1388: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'O') goto yy1412; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'n') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'o') goto yy1446; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'O': goto yy1355; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'o': goto yy1389; + default: goto yy4; } -yy1446: - YYDEBUG(1446, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'R') goto yy1413; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'r') goto yy1447; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1389: + yych = *++YYCURSOR; + switch (yych) { + case 'W': goto yy1356; + case 'w': goto yy1390; + default: goto yy155; } -yy1447: - YYDEBUG(1447, *YYCURSOR); - yyaccept = 0; +yy1390: + yyaccept = 28; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'R') goto yy1414; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'r') goto yy1448; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy1357; } -yy1448: - YYDEBUG(1448, *YYCURSOR); +yy1391: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'O') goto yy1415; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'o') goto yy1449; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': goto yy144; + case 'Y': goto yy1359; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy152; + case 'y': goto yy1392; + default: goto yy4; } -yy1449: - YYDEBUG(1449, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy1416; - if (yych != 'w') goto yy155; - YYDEBUG(1450, *YYCURSOR); +yy1392: yyaccept = 29; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; - } - if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy1417; - } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy1417; - } -yy1451: - YYDEBUG(1451, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'Y') goto yy1419; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'x') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'y') goto yy1452; - if (yych <= 'z') goto yy152; - goto yy4; - } - } - } -yy1452: - YYDEBUG(1452, *YYCURSOR); - yyaccept = 30; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy1420; - } else { - if (yych == '.') goto yy1420; - goto yy148; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy1420; - if (yych <= 'Z') goto yy145; - goto yy1420; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy1420; - if (yych <= 'z') goto yy153; - goto yy1420; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + default: goto yy1360; } -yy1453: - YYDEBUG(1453, *YYCURSOR); +yy1393: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych <= '/') { - if (yych <= '.') goto yy4; - goto yy148; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy143; - goto yy1427; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= 'S') goto yy1428; - goto yy143; - } else { - if (yych == '_') goto yy148; - goto yy4; - } - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy151; - goto yy1459; - } else { - if (yych <= 's') goto yy1460; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'R': goto yy1367; + case 'S': goto yy1368; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'r': goto yy1399; + case 's': goto yy1400; + default: goto yy4; } -yy1454: - YYDEBUG(1454, *YYCURSOR); +yy1394: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'R') goto yy1423; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy167; - goto yy151; - } else { - if (yych <= 'r') goto yy1455; - if (yych <= 'z') goto yy151; - goto yy167; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'R': goto yy1363; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'r': goto yy1395; + default: goto yy167; } -yy1455: - YYDEBUG(1455, *YYCURSOR); +yy1395: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'S') goto yy1424; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 's') goto yy1456; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'S': goto yy1364; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 's': goto yy1396; + default: goto yy4; } -yy1456: - YYDEBUG(1456, *YYCURSOR); +yy1396: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1425; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'd') goto yy1457; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'D': goto yy1365; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'd': goto yy1397; + default: goto yy4; } -yy1457: - YYDEBUG(1457, *YYCURSOR); +yy1397: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy1426; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1458; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy1366; + case 'a': goto yy1398; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy4; } -yy1458: - YYDEBUG(1458, *YYCURSOR); +yy1398: yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy186; - goto yy155; -yy1459: - YYDEBUG(1459, *YYCURSOR); + switch (yych) { + case 'Y': goto yy173; + case 'y': goto yy186; + default: goto yy155; + } +yy1399: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'd') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'D': goto yy1179; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'd': goto yy1208; + default: goto yy4; } -yy1460: - YYDEBUG(1460, *YYCURSOR); +yy1400: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= ' ') { - if (yych == '\t') goto yy1105; - if (yych <= 0x1F) goto yy4; - goto yy1105; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } - } else { - if (yych <= 'Z') { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case '\t': + case ' ': goto yy1045; + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy4; } -yy1461: - YYDEBUG(1461, *YYCURSOR); +yy1401: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1430; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 't') goto yy1462; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'T': goto yy1370; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 't': goto yy1402; + default: goto yy4; } -yy1462: - YYDEBUG(1462, *YYCURSOR); +yy1402: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'H') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'h') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'H': goto yy1179; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'h': goto yy1208; + default: goto yy4; } -yy1463: - YYDEBUG(1463, *YYCURSOR); +yy1403: yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == 'R') goto yy1475; - if (yych <= 'X') goto yy142; - goto yy1476; - } - } else { - if (yych <= 'r') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'q') goto yy142; - goto yy1475; - } else { - if (yych == 'y') goto yy1476; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy142; + case 'R': + case 'r': goto yy1415; + case 'Y': + case 'y': goto yy1416; + default: goto yy4; } -yy1464: - YYDEBUG(1464, *YYCURSOR); +yy1404: yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy142; - goto yy1469; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'd') goto yy1469; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'D': + case 'd': goto yy1409; + default: goto yy4; } -yy1465: - YYDEBUG(1465, *YYCURSOR); +yy1405: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'n') goto yy1466; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'N': + case 'n': goto yy1406; + default: goto yy4; } -yy1466: - YYDEBUG(1466, *YYCURSOR); +yy1406: yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; - } else { - if (yych <= '@') goto yy167; - if (yych <= 'C') goto yy143; - } - } else { - if (yych <= 'c') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; - } else { - if (yych <= 'd') goto yy1467; - if (yych <= 'z') goto yy143; - goto yy167; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'D': + case 'd': goto yy1407; + default: goto yy167; } -yy1467: - YYDEBUG(1467, *YYCURSOR); +yy1407: yych = *++YYCURSOR; - if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - } else { - if (yych <= '`') { - if (yych <= 'Z') goto yy144; - goto yy4; - } else { - if (yych <= 'a') goto yy1468; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'a': goto yy1408; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy4; } -yy1468: - YYDEBUG(1468, *YYCURSOR); +yy1408: yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'X') goto yy145; - goto yy1236; - } - } else { - if (yych <= 'x') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'y') goto yy1236; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy145; + case 'Y': + case 'y': goto yy1176; + default: goto yy4; } -yy1469: - YYDEBUG(1469, *YYCURSOR); +yy1409: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy143; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'n') goto yy1470; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'N': + case 'n': goto yy1410; + default: goto yy4; } -yy1470: - YYDEBUG(1470, *YYCURSOR); +yy1410: yych = *++YYCURSOR; - if (yych <= 'I') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'H') goto yy144; - } - } else { - if (yych <= 'h') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'i') goto yy1471; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'I': + case 'i': goto yy1411; + default: goto yy4; } -yy1471: - YYDEBUG(1471, *YYCURSOR); +yy1411: yych = *++YYCURSOR; - if (yych <= 'G') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'F') goto yy145; - } - } else { - if (yych <= 'f') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'g') goto yy1472; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'G': + case 'g': goto yy1412; + default: goto yy4; } -yy1472: - YYDEBUG(1472, *YYCURSOR); +yy1412: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'H') goto yy1473; - if (yych != 'h') goto yy4; + switch (yych) { + case ')': goto yy140; + case 'H': + case 'h': goto yy1413; + default: goto yy4; } -yy1473: - YYDEBUG(1473, *YYCURSOR); +yy1413: yych = *++YYCURSOR; - if (yych == 'T') goto yy1474; - if (yych != 't') goto yy57; -yy1474: - YYDEBUG(1474, *YYCURSOR); + switch (yych) { + case 'T': + case 't': goto yy1414; + default: goto yy57; + } +yy1414: yych = *++YYCURSOR; - goto yy1420; -yy1475: - YYDEBUG(1475, *YYCURSOR); + goto yy1360; +yy1415: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych == 'C') goto yy1477; - goto yy143; - } - } else { - if (yych <= 'b') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'c') goto yy1477; - if (yych <= 'z') goto yy143; - goto yy194; - } - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'C': + case 'c': goto yy1417; + default: goto yy194; } -yy1476: - YYDEBUG(1476, *YYCURSOR); +yy1416: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; - } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy197; - } - } else { - if (yych <= '@') { - if (yych == '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy143; - goto yy194; - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + default: goto yy194; } -yy1477: - YYDEBUG(1477, *YYCURSOR); +yy1417: yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - goto yy396; - } - } else { - if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'h') goto yy396; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'H': + case 'h': goto yy336; + default: goto yy4; } -yy1478: - YYDEBUG(1478, *YYCURSOR); +yy1418: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; - } else { - if (yych == 'R') goto yy1475; - goto yy142; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= 'Y') goto yy1476; - goto yy142; - } else { - if (yych == '_') goto yy148; - goto yy4; - } - } else { - if (yych <= 'x') { - if (yych == 'r') goto yy1490; - goto yy147; - } else { - if (yych <= 'y') goto yy1491; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': goto yy142; + case 'R': goto yy1415; + case 'Y': goto yy1416; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy147; + case 'r': goto yy1430; + case 'y': goto yy1431; + default: goto yy4; } -yy1479: - YYDEBUG(1479, *YYCURSOR); +yy1419: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1469; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'd') goto yy1484; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'D': goto yy1409; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'd': goto yy1424; + default: goto yy4; } -yy1480: - YYDEBUG(1480, *YYCURSOR); +yy1420: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1466; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'n') goto yy1481; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'N': goto yy1406; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'n': goto yy1421; + default: goto yy4; } -yy1481: - YYDEBUG(1481, *YYCURSOR); +yy1421: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'D') goto yy1467; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; - } else { - if (yych <= 'c') { - if (yych <= '`') goto yy167; - goto yy151; - } else { - if (yych <= 'd') goto yy1482; - if (yych <= 'z') goto yy151; - goto yy167; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'D': goto yy1407; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'd': goto yy1422; + default: goto yy167; } -yy1482: - YYDEBUG(1482, *YYCURSOR); +yy1422: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '@') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '_') { - if (yych <= 'A') goto yy1468; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1483; - if (yych <= 'z') goto yy152; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': goto yy1408; + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': goto yy1423; + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy4; } -yy1483: - YYDEBUG(1483, *YYCURSOR); +yy1423: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'Y') goto yy1236; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'x') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'y') goto yy1265; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Z': goto yy145; + case 'Y': goto yy1176; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'z': goto yy153; + case 'y': goto yy1205; + default: goto yy4; } -yy1484: - YYDEBUG(1484, *YYCURSOR); +yy1424: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1470; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'n') goto yy1485; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'N': goto yy1410; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'n': goto yy1425; + default: goto yy4; } -yy1485: - YYDEBUG(1485, *YYCURSOR); +yy1425: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'H') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'I') goto yy1471; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'h') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'i') goto yy1486; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'I': goto yy1411; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'i': goto yy1426; + default: goto yy4; } -yy1486: - YYDEBUG(1486, *YYCURSOR); +yy1426: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'F') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'G') goto yy1472; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'f') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'g') goto yy1487; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'G': goto yy1412; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'g': goto yy1427; + default: goto yy4; } -yy1487: - YYDEBUG(1487, *YYCURSOR); +yy1427: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'H') goto yy1473; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'h') goto yy1488; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'H': goto yy1413; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'h': goto yy1428; + default: goto yy4; } -yy1488: - YYDEBUG(1488, *YYCURSOR); +yy1428: yych = *++YYCURSOR; - if (yych == 'T') goto yy1474; - if (yych != 't') goto yy155; - YYDEBUG(1489, *YYCURSOR); - yyaccept = 30; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; + switch (yych) { + case 'T': goto yy1414; + case 't': goto yy1429; + default: goto yy155; } - if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy1420; - } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy1420; +yy1429: + yyaccept = 29; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy1360; } -yy1490: - YYDEBUG(1490, *YYCURSOR); +yy1430: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'B') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'C') goto yy1477; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 'b') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'c') goto yy1492; - if (yych <= 'z') goto yy151; - goto yy194; - } - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'C': goto yy1417; + case 'a': + case 'b': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'c': goto yy1432; + default: goto yy194; } -yy1491: - YYDEBUG(1491, *YYCURSOR); +yy1431: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; - } else { - if (yych <= ')') { - if (yych <= '(') goto yy194; - goto yy140; - } else { - if (yych <= ',') goto yy194; - if (yych <= '-') goto yy372; - goto yy196; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '/') goto yy148; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy194; - goto yy148; - } else { - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy151; - goto yy194; - } - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + default: goto yy194; } -yy1492: - YYDEBUG(1492, *YYCURSOR); +yy1432: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'H') goto yy396; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'h') goto yy407; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'H': goto yy336; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'h': goto yy347; + default: goto yy4; } -yy1493: - YYDEBUG(1493, *YYCURSOR); +yy1433: yych = *++YYCURSOR; - if (yych <= 'W') { - if (yych <= 'N') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy142; - } else { - if (yych <= 'O') goto yy1501; - if (yych <= 'U') goto yy142; - if (yych <= 'V') goto yy1502; - goto yy1499; - } - } else { - if (yych <= 'o') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'n') goto yy142; - goto yy1501; - } else { - if (yych <= 'v') { - if (yych <= 'u') goto yy142; - goto yy1502; - } else { - if (yych <= 'w') goto yy1499; - if (yych <= 'z') goto yy142; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'x': + case 'y': + case 'z': goto yy142; + case 'O': + case 'o': goto yy1441; + case 'V': + case 'v': goto yy1442; + case 'W': + case 'w': goto yy1439; + default: goto yy4; } -yy1494: - YYDEBUG(1494, *YYCURSOR); +yy1434: yych = *++YYCURSOR; - if (yych <= 'X') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'W') goto yy142; - goto yy1498; - } - } else { - if (yych <= 'w') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'x') goto yy1498; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'y': + case 'z': goto yy142; + case 'X': + case 'x': goto yy1438; + default: goto yy4; } -yy1495: - YYDEBUG(1495, *YYCURSOR); +yy1435: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 'n') goto yy1496; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'N': + case 'n': goto yy1436; + default: goto yy4; } -yy1496: - YYDEBUG(1496, *YYCURSOR); +yy1436: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 't') goto yy1497; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'T': + case 't': goto yy1437; + default: goto yy4; } -yy1497: - YYDEBUG(1497, *YYCURSOR); +yy1437: yych = *++YYCURSOR; - if (yych <= 'H') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - goto yy1239; - } - } else { - if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'h') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'H': + case 'h': goto yy1179; + default: goto yy4; } -yy1498: - YYDEBUG(1498, *YYCURSOR); +yy1438: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; - goto yy1428; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 't') goto yy1428; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'T': + case 't': goto yy1368; + default: goto yy4; } -yy1499: - YYDEBUG(1499, *YYCURSOR); +yy1439: ++YYCURSOR; - if ((yych = *YYCURSOR) <= '@') { - if (yych == ')') goto yy140; - } else { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy1500; - if (yych <= 'z') goto yy143; + switch ((yych = *YYCURSOR)) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + default: goto yy1440; } -yy1500: - YYDEBUG(1500, *YYCURSOR); +yy1440: { DEBUG_OUTPUT("now"); TIMELIB_INIT; @@ -23772,144 +35819,328 @@ yy1500: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1501: - YYDEBUG(1501, *YYCURSOR); +yy1441: yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy143; - goto yy1507; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 'n') goto yy1507; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'N': + case 'n': goto yy1447; + default: goto yy4; } -yy1502: - YYDEBUG(1502, *YYCURSOR); +yy1442: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; - } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; - } else { - if (yych != 'E') goto yy143; - } - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy194; - goto yy143; - } else { - if (yych <= 'e') goto yy1503; - if (yych <= 'z') goto yy143; - goto yy194; - } - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy197; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'E': + case 'e': goto yy1443; + default: goto yy194; } -yy1503: - YYDEBUG(1503, *YYCURSOR); +yy1443: yych = *++YYCURSOR; - if (yych <= 'M') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'L') goto yy144; - } - } else { - if (yych <= 'l') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'm') goto yy1504; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'M': + case 'm': goto yy1444; + default: goto yy4; } -yy1504: - YYDEBUG(1504, *YYCURSOR); +yy1444: yych = *++YYCURSOR; - if (yych <= 'B') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy145; - } - } else { - if (yych <= 'a') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'b') goto yy1505; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'B': + case 'b': goto yy1445; + default: goto yy4; } -yy1505: - YYDEBUG(1505, *YYCURSOR); +yy1445: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'E') goto yy1506; - if (yych != 'e') goto yy4; + switch (yych) { + case ')': goto yy140; + case 'E': + case 'e': goto yy1446; + default: goto yy4; } -yy1506: - YYDEBUG(1506, *YYCURSOR); +yy1446: yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych == 'r') goto yy206; - goto yy57; -yy1507: - YYDEBUG(1507, *YYCURSOR); + switch (yych) { + case 'R': + case 'r': goto yy205; + default: goto yy57; + } +yy1447: ++YYCURSOR; - if ((yych = *YYCURSOR) <= '@') { - if (yych == ')') goto yy140; - } else { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy1508; - if (yych <= 'z') goto yy144; + switch ((yych = *YYCURSOR)) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + default: goto yy1448; } -yy1508: - YYDEBUG(1508, *YYCURSOR); +yy1448: { DEBUG_OUTPUT("noon"); TIMELIB_INIT; @@ -23920,538 +36151,1065 @@ yy1508: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1509: - YYDEBUG(1509, *YYCURSOR); +yy1449: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'V') { - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych == '-') goto yy148; - goto yy4; - } - } else { - if (yych <= 'N') { - if (yych <= '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } else { - if (yych <= 'O') goto yy1501; - if (yych <= 'U') goto yy142; - goto yy1502; - } - } - } else { - if (yych <= 'n') { - if (yych <= '^') { - if (yych <= 'W') goto yy1499; - if (yych <= 'Z') goto yy142; - goto yy4; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - goto yy147; - } - } else { - if (yych <= 'v') { - if (yych <= 'o') goto yy1516; - if (yych <= 'u') goto yy147; - goto yy1517; - } else { - if (yych <= 'w') goto yy1515; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'O': goto yy1441; + case 'V': goto yy1442; + case 'W': goto yy1439; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'x': + case 'y': + case 'z': goto yy147; + case 'o': goto yy1456; + case 'v': goto yy1457; + case 'w': goto yy1455; + default: goto yy4; } -yy1510: - YYDEBUG(1510, *YYCURSOR); +yy1450: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'W') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'X') goto yy1498; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'w') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'x') goto yy1514; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'Y': + case 'Z': goto yy142; + case 'X': goto yy1438; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'y': + case 'z': goto yy147; + case 'x': goto yy1454; + default: goto yy4; } -yy1511: - YYDEBUG(1511, *YYCURSOR); +yy1451: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1496; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 'n') goto yy1512; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'N': goto yy1436; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 'n': goto yy1452; + default: goto yy4; } -yy1512: - YYDEBUG(1512, *YYCURSOR); +yy1452: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1497; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 't') goto yy1513; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'T': goto yy1437; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 't': goto yy1453; + default: goto yy4; } -yy1513: - YYDEBUG(1513, *YYCURSOR); +yy1453: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'G') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'H') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'h') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'H': goto yy1179; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'h': goto yy1208; + default: goto yy4; } -yy1514: - YYDEBUG(1514, *YYCURSOR); +yy1454: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1428; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 't') goto yy1460; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'T': goto yy1368; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 't': goto yy1400; + default: goto yy4; } -yy1515: - YYDEBUG(1515, *YYCURSOR); - yyaccept = 31; +yy1455: + yyaccept = 30; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy1500; - } else { - if (yych == '.') goto yy1500; - goto yy148; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy1500; - if (yych <= 'Z') goto yy143; - goto yy1500; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy1500; - if (yych <= 'z') goto yy151; - goto yy1500; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + default: goto yy1440; } -yy1516: - YYDEBUG(1516, *YYCURSOR); +yy1456: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'M') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'N') goto yy1507; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 'n') goto yy1522; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'N': goto yy1447; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'n': goto yy1462; + default: goto yy4; } -yy1517: - YYDEBUG(1517, *YYCURSOR); +yy1457: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '(') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; - } else { - if (yych == ' ') goto yy196; - goto yy194; - } - } else { - if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; - } else { - if (yych == '/') goto yy148; - goto yy196; - } - } - } else { - if (yych <= '^') { - if (yych <= 'D') { - if (yych <= '@') goto yy194; - goto yy143; - } else { - if (yych <= 'E') goto yy1503; - if (yych <= 'Z') goto yy143; - goto yy194; - } - } else { - if (yych <= 'd') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; - } else { - if (yych <= 'e') goto yy1518; - if (yych <= 'z') goto yy151; - goto yy194; - } - } + switch (yych) { + case '\t': + case ' ': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy196; + case ')': goto yy140; + case '-': goto yy312; + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'E': goto yy1443; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 'e': goto yy1458; + default: goto yy194; } -yy1518: - YYDEBUG(1518, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'M') goto yy1504; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'l') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'm') goto yy1519; - if (yych <= 'z') goto yy152; - goto yy4; - } - } +yy1458: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'M': goto yy1444; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'm': goto yy1459; + default: goto yy4; } -yy1519: - YYDEBUG(1519, *YYCURSOR); +yy1459: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'A') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'B') goto yy1505; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'b') goto yy1520; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'B': goto yy1445; + case 'a': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'b': goto yy1460; + default: goto yy4; } -yy1520: - YYDEBUG(1520, *YYCURSOR); +yy1460: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'E') goto yy1506; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'e') goto yy1521; - if (yych <= 'z') goto yy154; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'E': goto yy1446; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'e': goto yy1461; + default: goto yy4; } -yy1521: - YYDEBUG(1521, *YYCURSOR); +yy1461: yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych == 'r') goto yy377; - goto yy155; -yy1522: - YYDEBUG(1522, *YYCURSOR); - yyaccept = 32; + switch (yych) { + case 'R': goto yy205; + case 'r': goto yy317; + default: goto yy155; + } +yy1462: + yyaccept = 31; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy1508; - } else { - if (yych == '.') goto yy1508; - goto yy148; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy1508; - if (yych <= 'Z') goto yy144; - goto yy1508; - } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy1508; - if (yych <= 'z') goto yy152; - goto yy1508; - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + default: goto yy1448; } -yy1523: - YYDEBUG(1523, *YYCURSOR); +yy1463: yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy142; - } - } else { - if (yych <= 'r') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; - } else { - if (yych <= 's') goto yy1524; - if (yych <= 'z') goto yy142; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy142; + case 'S': + case 's': goto yy1464; + default: goto yy4; } -yy1524: - YYDEBUG(1524, *YYCURSOR); +yy1464: yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; - } - } else { - if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; - } else { - if (yych <= 't') goto yy1525; - if (yych <= 'z') goto yy143; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy143; + case 'T': + case 't': goto yy1465; + default: goto yy4; } -yy1525: - YYDEBUG(1525, *YYCURSOR); +yy1465: yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy144; - } - } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; - } else { - if (yych <= 'e') goto yy1526; - if (yych <= 'z') goto yy144; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy144; + case 'E': + case 'e': goto yy1466; + default: goto yy4; } -yy1526: - YYDEBUG(1526, *YYCURSOR); +yy1466: yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy145; - } - } else { - if (yych <= 'q') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'r') goto yy1527; - if (yych <= 'z') goto yy145; - goto yy4; - } + switch (yych) { + case ')': goto yy140; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy145; + case 'R': + case 'r': goto yy1467; + default: goto yy4; } -yy1527: - YYDEBUG(1527, *YYCURSOR); +yy1467: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'D') goto yy1528; - if (yych != 'd') goto yy4; + switch (yych) { + case ')': goto yy140; + case 'D': + case 'd': goto yy1468; + default: goto yy4; } -yy1528: - YYDEBUG(1528, *YYCURSOR); +yy1468: + yych = *++YYCURSOR; + switch (yych) { + case 'A': + case 'a': goto yy1469; + default: goto yy57; + } +yy1469: yych = *++YYCURSOR; - if (yych == 'A') goto yy1529; - if (yych != 'a') goto yy57; -yy1529: - YYDEBUG(1529, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1530; - if (yych != 'y') goto yy57; -yy1530: - YYDEBUG(1530, *YYCURSOR); + switch (yych) { + case 'Y': + case 'y': goto yy1470; + default: goto yy57; + } +yy1470: ++YYCURSOR; -yy1531: - YYDEBUG(1531, *YYCURSOR); +yy1471: { DEBUG_OUTPUT("yesterday"); TIMELIB_INIT; @@ -24462,182 +37220,345 @@ yy1531: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1532: - YYDEBUG(1532, *YYCURSOR); +yy1472: + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy142; + case 'S': goto yy1464; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy147; + case 's': goto yy1473; + default: goto yy4; + } +yy1473: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'R') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; - } - } else { - if (yych <= '_') { - if (yych <= 'S') goto yy1524; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy147; - } else { - if (yych <= 's') goto yy1533; - if (yych <= 'z') goto yy147; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy143; + case 'T': goto yy1465; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy151; + case 't': goto yy1474; + default: goto yy4; } -yy1533: - YYDEBUG(1533, *YYCURSOR); +yy1474: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; - } - } else { - if (yych <= '_') { - if (yych <= 'T') goto yy1525; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; - } else { - if (yych <= 't') goto yy1534; - if (yych <= 'z') goto yy151; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy144; + case 'E': goto yy1466; + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy152; + case 'e': goto yy1475; + default: goto yy4; } -yy1534: - YYDEBUG(1534, *YYCURSOR); +yy1475: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; - } - } else { - if (yych <= '_') { - if (yych <= 'E') goto yy1526; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy152; - } else { - if (yych <= 'e') goto yy1535; - if (yych <= 'z') goto yy152; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': goto yy145; + case 'R': goto yy1467; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy153; + case 'r': goto yy1476; + default: goto yy4; } -yy1535: - YYDEBUG(1535, *YYCURSOR); +yy1476: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'Q') { - if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; - } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; - } - } else { - if (yych <= '_') { - if (yych <= 'R') goto yy1527; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; - } else { - if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy153; - } else { - if (yych <= 'r') goto yy1536; - if (yych <= 'z') goto yy153; - goto yy4; - } - } + switch (yych) { + case ')': goto yy140; + case '-': + case '/': + case '_': goto yy148; + case 'D': goto yy1468; + case 'a': + case 'b': + case 'c': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + case 'd': goto yy1477; + default: goto yy4; } -yy1536: - YYDEBUG(1536, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'C') { - if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; - } - } else { - if (yych <= '`') { - if (yych <= 'D') goto yy1528; - if (yych == '_') goto yy148; - goto yy4; - } else { - if (yych == 'd') goto yy1537; - if (yych <= 'z') goto yy154; - goto yy4; - } +yy1477: + yych = *++YYCURSOR; + switch (yych) { + case 'A': goto yy1469; + case 'a': goto yy1478; + default: goto yy155; } -yy1537: - YYDEBUG(1537, *YYCURSOR); +yy1478: yych = *++YYCURSOR; - if (yych == 'A') goto yy1529; - if (yych != 'a') goto yy155; - YYDEBUG(1538, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1530; - if (yych != 'y') goto yy155; - YYDEBUG(1539, *YYCURSOR); - yyaccept = 33; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy154; - } - if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy1531; - } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy1531; + switch (yych) { + case 'Y': goto yy1470; + case 'y': goto yy1479; + default: goto yy155; + } +yy1479: + yyaccept = 32; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '-': + case '/': + case '_': goto yy148; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy154; + default: goto yy1471; } } } -#define YYMAXFILL 31 +#define YYMAXFILL 33 timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper) { debian/patches/CVE-2015-4603.patch0000664000000000000000000000400712543257310013237 0ustar From a894a8155fab068d68a04bf181dbaddfa01ccbb0 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 5 Apr 2015 17:30:59 -0700 Subject: [PATCH] More fixes for bug #69152 --- Zend/zend_exceptions.c | 3 +++ ext/standard/tests/serialize/bug69152.phpt | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 ext/standard/tests/serialize/bug69152.phpt Index: php5-5.5.9+dfsg/Zend/zend_exceptions.c =================================================================== --- php5-5.5.9+dfsg.orig/Zend/zend_exceptions.c 2015-06-26 10:16:35.597004389 -0400 +++ php5-5.5.9+dfsg/Zend/zend_exceptions.c 2015-06-26 10:16:35.597004389 -0400 @@ -536,6 +536,9 @@ str = &res; trace = zend_read_property(default_exception_ce, getThis(), "trace", sizeof("trace")-1, 1 TSRMLS_CC); + if(Z_TYPE_P(trace) != IS_ARRAY) { + RETURN_FALSE; + } zend_hash_apply_with_arguments(Z_ARRVAL_P(trace) TSRMLS_CC, (apply_func_args_t)_build_trace_string, 3, str, len, &num); s_tmp = emalloc(1 + MAX_LENGTH_OF_LONG + 7 + 1); Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69152.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69152.phpt 2015-06-26 10:16:35.597004389 -0400 @@ -0,0 +1,16 @@ +--TEST-- +Bug #69152: Type Confusion Infoleak Vulnerability in unserialize() +--FILE-- +test(); + +?> +--EXPECTF-- +exception 'Exception' in %s:%d +Stack trace: +#0 {main} + +Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "unknown" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line %d debian/patches/CVE-2017-9224.patch0000664000000000000000000000161413141101767013245 0ustar From 2693e52113ea0369144073e84d568931ffc173a7 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 30 May 2017 15:37:11 +0200 Subject: [PATCH] Patch from the upstream git https://github.com/kkos/oniguruma/issues/57 (CVE-2017-9224) Thanks to Mamoru TASAKA --- ext/mbstring/oniguruma/regexec.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ext/mbstring/oniguruma/regexec.c b/ext/mbstring/oniguruma/regexec.c index 7430d7851491..5e26896e365d 100644 --- a/ext/mbstring/oniguruma/regexec.c +++ b/ext/mbstring/oniguruma/regexec.c @@ -1425,14 +1425,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, break; case OP_EXACT1: MOP_IN(OP_EXACT1); -#if 0 DATA_ENSURE(1); if (*p != *s) goto fail; p++; s++; -#endif - if (*p != *s++) goto fail; - DATA_ENSURE(0); - p++; MOP_OUT; break; debian/patches/CVE-2017-11147.patch0000664000000000000000000000230013141101643013304 0ustar From e5246580a85f031e1a3b8064edbaa55c1643a451 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 31 Dec 2016 18:47:50 -0800 Subject: [PATCH] Fix bug #73773 - Seg fault when loading hostile phar --- ext/phar/phar.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: php5-5.5.9+dfsg/ext/phar/phar.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar.c 2017-08-04 10:24:32.978853627 -0400 +++ php5-5.5.9+dfsg/ext/phar/phar.c 2017-08-04 10:24:32.974853627 -0400 @@ -1053,7 +1053,7 @@ static int phar_parse_pharfile(php_strea entry.is_persistent = mydata->is_persistent; for (manifest_index = 0; manifest_index < manifest_count; ++manifest_index) { - if (buffer + 24 > endbuffer) { + if (buffer + 28 > endbuffer) { MAPPHAR_FAIL("internal corruption of phar \"%s\" (truncated manifest entry)") } @@ -1067,7 +1067,7 @@ static int phar_parse_pharfile(php_strea entry.manifest_pos = manifest_index; } - if (entry.filename_len > endbuffer - buffer - 20) { + if (entry.filename_len > endbuffer - buffer - 24) { MAPPHAR_FAIL("internal corruption of phar \"%s\" (truncated manifest entry)"); } debian/patches/CVE-2015-2305.patch0000664000000000000000000000221112514150777013236 0ustar From fb04dcf6dbb48aecd8d2dc986806cb58c8ae5282 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 17 Mar 2015 17:04:57 -0700 Subject: [PATCH] Fix bug #69248 - heap overflow vulnerability in regcomp.c Merged from https://github.com/garyhouston/regex/commit/70bc2965604b6b8aaf260049e64c708dddf85334 --- NEWS | 3 +++ ext/ereg/regex/regcomp.c | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ext/ereg/regex/regcomp.c b/ext/ereg/regex/regcomp.c index 156eee9..f4bfc1c 100644 --- a/ext/ereg/regex/regcomp.c +++ b/ext/ereg/regex/regcomp.c @@ -117,7 +117,15 @@ int cflags; (NC-1)*sizeof(cat_t)); if (g == NULL) return(REG_ESPACE); - p->ssize = len/(size_t)2*(size_t)3 + (size_t)1; /* ugh */ + { + /* Patched for CERT Vulnerability Note VU#695940, Feb 2015. */ + size_t new_ssize = len/(size_t)2*(size_t)3 + (size_t)1; /* ugh */ + if (new_ssize < len || new_ssize > LONG_MAX / sizeof(sop)) { + free((char *) g); + return REG_INVARG; + } + p->ssize = new_ssize; + } p->strip = (sop *)malloc(p->ssize * sizeof(sop)); p->slen = 0; if (p->strip == NULL) { -- 2.1.4 debian/patches/zlib-largefile-function-renaming.patch0000664000000000000000000000253012723305067020156 0ustar Description: zlib largefile function renaming zlib include files can define the following preprocessor defines which rename the corresponding PHP functions to gzopen64, gzseek64 and gztell64 and thereby breaking some software, most notably PEAR's Archive_Tar, which halts execution without error message on gzip compressed archivesa. This only seems to happen on 32bit systems with large file support. Author: Nishanth Aravamudan Origin: Debian, http://anonscm.debian.org/cgit/pkg-php/php.git/tree/debian/patches/0038-zlib-largefile-function-renaming.patch?h=master-5.5 Bug: https://bugs.php.net/bug.php?id=53829 Bug-Ubuntu: https://launchpad.net/bugs/1315888 --- php5-5.5.9+dfsg.orig/ext/zlib/zlib.c +++ php5-5.5.9+dfsg/ext/zlib/zlib.c @@ -34,6 +34,18 @@ #include "ext/standard/php_string.h" #include "php_zlib.h" +/* + * zlib include files can define the following processor defines which rename + * the corresponding PHP functions to gzopen64, gzseek64 and gztell64 and thereby + * breaking some software, most notably PEAR's Archive_Tar, which halts execution + * without error message on gzip compressed archives. + * + * This only seems to happen on 32bit systems with large file support. + */ +#undef gzopen +#undef gzseek +#undef gztell + ZEND_DECLARE_MODULE_GLOBALS(zlib); /* {{{ Memory management wrappers */ debian/patches/CVE-2016-10397-2.patch0000664000000000000000000001027313141101156013457 0ustar Backport of: From 2d19c92fc2f14aa97db9094eaa0b67d1c3b12409 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 18 Nov 2016 16:41:13 +0100 Subject: [PATCH] Make php_url_parse_ex() respect length argument This should fix all out-of-bounds reads that could previously occur if the string passed to php_url_parse_ex() is not NUL terminated. --- ext/standard/url.c | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) Index: php5-5.5.9+dfsg/ext/standard/url.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/url.c 2017-08-04 10:16:01.710872356 -0400 +++ php5-5.5.9+dfsg/ext/standard/url.c 2017-08-04 10:18:54.754866017 -0400 @@ -104,7 +104,7 @@ PHPAPI php_url *php_url_parse_ex(char co ue = s + length; /* parse scheme */ - if ((e = memchr(s, ':', length)) && (e - s)) { + if ((e = memchr(s, ':', length)) && e != s) { /* validate scheme */ p = s; while (p < e) { @@ -119,7 +119,7 @@ PHPAPI php_url *php_url_parse_ex(char co p++; } - if (*(e + 1) == '\0') { /* only scheme is available */ + if (e + 1 == ue) { /* only scheme is available */ ret->scheme = estrndup(s, (e - s)); php_replace_controlchars_ex(ret->scheme, (e - s)); goto end; @@ -134,11 +134,11 @@ PHPAPI php_url *php_url_parse_ex(char co * correctly parse things like a.com:80 */ p = e + 1; - while (isdigit(*p)) { + while (p < ue && isdigit(*p)) { p++; } - if ((*p == '\0' || *p == '/') && (p - e) < 7) { + if ((p == ue || *p == '/') && (p - e) < 7) { goto parse_port; } @@ -152,14 +152,14 @@ PHPAPI php_url *php_url_parse_ex(char co ret->scheme = estrndup(s, (e-s)); php_replace_controlchars_ex(ret->scheme, (e - s)); - if (*(e+2) == '/') { + if (e + 2 < ue && *(e + 2) == '/') { s = e + 3; if (!strncasecmp("file", ret->scheme, sizeof("file"))) { - if (*(e + 3) == '/') { + if (e + 3 < ue && *(e + 3) == '/') { /* support windows drive letters as in: file:///c:/somedir/file.txt */ - if (*(e + 5) == ':') { + if (e + 5 < ue && *(e + 5) == ':') { s = e + 4; } goto nohost; @@ -181,11 +181,11 @@ PHPAPI php_url *php_url_parse_ex(char co p = e + 1; pp = p; - while (pp-p < 6 && isdigit(*pp)) { + while (pp < ue && pp - p < 6 && isdigit(*pp)) { pp++; } - if (pp - p > 0 && pp - p < 6 && (*pp == '/' || *pp == '\0')) { + if (pp - p > 0 && pp - p < 6 && (pp == ue || *pp == '/')) { long port; memcpy(port_buf, p, (pp - p)); port_buf[pp - p] = '\0'; @@ -197,16 +197,16 @@ PHPAPI php_url *php_url_parse_ex(char co efree(ret); return NULL; } - } else if (p == pp && *pp == '\0') { + } else if (p == pp && pp == ue) { STR_FREE(ret->scheme); efree(ret); return NULL; - } else if (*s == '/' && *(s+1) == '/') { /* relative-scheme URL */ + } else if (s + 1 < ue && *s == '/' && *(s + 1) == '/') { /* relative-scheme URL */ s += 2; } else { goto just_path; } - } else if (*s == '/' && *(s+1) == '/') { /* relative-scheme URL */ + } else if (s + 1 < ue && *s == '/' && *(s + 1) == '/') { /* relative-scheme URL */ s += 2; } else { just_path: @@ -214,7 +214,17 @@ PHPAPI php_url *php_url_parse_ex(char co goto nohost; } - e = s + strcspn(s, "/?#"); + /* Binary-safe strcspn(s, "/?#") */ + e = ue; + if ((p = memchr(s, '/', e - s))) { + e = p; + } + if ((p = memchr(s, '?', e - s))) { + e = p; + } + if ((p = memchr(s, '#', e - s))) { + e = p; + } /* check for login and password */ if ((p = zend_memrchr(s, '@', (e-s)))) { @@ -238,18 +248,16 @@ PHPAPI php_url *php_url_parse_ex(char co } /* check for port */ - if (*s == '[' && *(e-1) == ']') { + if (s < ue && *s == '[' && *(e-1) == ']') { /* Short circuit portscan, we're dealing with an IPv6 embedded address */ - p = s; + p = NULL; } else { - /* memrchr is a GNU specific extension - Emulate for wide compatibility */ - for(p = e; *p != ':' && p >= s; p--); + p = zend_memrchr(s, ':', (e-s)); } - if (p >= s && *p == ':') { + if (p) { if (!ret->port) { p++; if (e-p > 5) { /* port cannot be longer then 5 characters */ debian/patches/CVE-2015-4116.patch0000664000000000000000000000326712746374374013264 0ustar From 1cbd25ca15383394ffa9ee8601c5de4c0f2f90e1 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 1 Jun 2015 22:06:16 -0700 Subject: [PATCH] Fix bug #69737 - Segfault when SplMinHeap::compare produces fatal error --- NEWS | 4 ++++ ext/spl/spl_heap.c | 3 ++- ext/spl/tests/bug69737.phpt | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 ext/spl/tests/bug69737.phpt diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c index 0283307..fad2379 100644 --- a/ext/spl/spl_heap.c +++ b/ext/spl/spl_heap.c @@ -249,9 +249,10 @@ static void spl_ptr_heap_insert(spl_ptr_heap *heap, spl_ptr_heap_element elem, v heap->ctor(elem TSRMLS_CC); /* sifting up */ - for(i = heap->count++; i > 0 && heap->cmp(heap->elements[(i-1)/2], elem, cmp_userdata TSRMLS_CC) < 0; i = (i-1)/2) { + for(i = heap->count; i > 0 && heap->cmp(heap->elements[(i-1)/2], elem, cmp_userdata TSRMLS_CC) < 0; i = (i-1)/2) { heap->elements[i] = heap->elements[(i-1)/2]; } + heap->count++; if (EG(exception)) { /* exception thrown during comparison */ diff --git a/ext/spl/tests/bug69737.phpt b/ext/spl/tests/bug69737.phpt new file mode 100644 index 0000000..d39ce3d --- /dev/null +++ b/ext/spl/tests/bug69737.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #69737 (Segfault when SplMinHeap::compare produces fatal error) +--FILE-- +insert(1); +$h->insert(6); +?> +===DONE=== +--EXPECTF-- +Fatal error: Call to undefined method SplMinHeap::notexist() in %s/bug69737.php on line %d -- 2.1.4 debian/patches/php-5.3.9-gnusrc.patch0000664000000000000000000000436612300436054014406 0ustar --- php5.orig/configure.in +++ php5/configure.in @@ -136,6 +136,8 @@ AC_DEFUN([PHP_EXT_DIR],[ext/$1])dnl AC_DEFUN([PHP_EXT_SRCDIR],[$abs_srcdir/ext/$1])dnl AC_DEFUN([PHP_ALWAYS_SHARED],[])dnl +AC_DEFINE([_GNU_SOURCE], 1, [Define to enable GNU C Library extensions]) + dnl Setting up the PHP version based on the information above. dnl ------------------------------------------------------------------------- --- php5.orig/ext/interbase/interbase.c +++ php5/ext/interbase/interbase.c @@ -24,7 +24,6 @@ #include "config.h" #endif -#define _GNU_SOURCE #include "php.h" --- php5.orig/ext/pdo_firebird/firebird_driver.c +++ php5/ext/pdo_firebird/firebird_driver.c @@ -22,7 +22,6 @@ #include "config.h" #endif -#define _GNU_SOURCE #include "php.h" #ifdef ZEND_ENGINE_2 --- php5.orig/ext/standard/file.c +++ php5/ext/standard/file.c @@ -112,9 +112,6 @@ php_file_globals file_globals; #endif #if defined(HAVE_FNMATCH) && !defined(PHP_WIN32) -# ifndef _GNU_SOURCE -# define _GNU_SOURCE -# endif # include #endif --- php5.orig/ext/zlib/zlib_fopen_wrapper.c +++ php5/ext/zlib/zlib_fopen_wrapper.c @@ -19,8 +19,6 @@ /* $Id$ */ -#define _GNU_SOURCE - #include "php.h" #include "php_zlib.h" #include "fopen_wrappers.h" --- php5.orig/main/php.h +++ php5/main/php.h @@ -30,6 +30,7 @@ #define PHP_HAVE_STREAMS #define YYDEBUG 0 +#include "php_config.h" #include "php_version.h" #include "zend.h" #include "zend_qsort.h" --- php5.orig/main/streams/cast.c +++ php5/main/streams/cast.c @@ -18,7 +18,6 @@ /* $Id$ */ -#define _GNU_SOURCE #include "php.h" #include "php_globals.h" #include "php_network.h" --- php5.orig/main/streams/memory.c +++ php5/main/streams/memory.c @@ -18,7 +18,6 @@ /* $Id$ */ -#define _GNU_SOURCE #include "php.h" PHPAPI int php_url_decode(char *str, int len); --- php5.orig/main/streams/streams.c +++ php5/main/streams/streams.c @@ -21,7 +21,6 @@ /* $Id$ */ -#define _GNU_SOURCE #include "php.h" #include "php_globals.h" #include "php_network.h" --- php5.orig/Zend/zend_language_parser.c +++ php5/Zend/zend_language_parser.c @@ -75,6 +75,8 @@ /* Copy the first part of user declarations. */ +#include + /* +----------------------------------------------------------------------+ debian/patches/CVE-2016-10161.patch0000664000000000000000000000673113047112577013327 0ustar Backport of: From 16b3003ffc6393e250f069aa28a78dc5a2c064b2 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Fri, 30 Dec 2016 16:59:46 -0800 Subject: [PATCH] Fix bug #73825 - Heap out of bounds read on unserialize in finish_nested_data() --- ext/standard/tests/serialize/bug73825.phpt | 12 +++++ ext/standard/var_unserializer.c | 80 ++++++++++++++++++------------ ext/standard/var_unserializer.re | 20 ++++++-- 3 files changed, 76 insertions(+), 36 deletions(-) create mode 100644 ext/standard/tests/serialize/bug73825.phpt Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug73825.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug73825.phpt 2017-02-09 11:08:40.271399002 -0500 @@ -0,0 +1,12 @@ +--TEST-- +Bug #73825 Heap out of bounds read on unserialize in finish_nested_data() +--FILE-- + +--EXPECTF-- +Warning: Bad unserialize data in %sbug73825.php on line %d + +Notice: unserialize(): Error at offset 13 of 15 bytes in %sbug73825.php on line %d +bool(false) Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2017-02-09 11:08:40.275399063 -0500 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2017-02-09 11:13:44.780109953 -0500 @@ -442,6 +442,11 @@ { long elements; + if( *p >= max - 2) { + zend_error(E_WARNING, "Bad unserialize data"); + return -1; + } + elements = parse_iv2((*p) + 2, p); (*p) += 2; @@ -808,6 +813,11 @@ elements = object_common1(UNSERIALIZE_PASSTHRU, ce); + if (elements < 0) { + efree(class_name); + return 0; + } + if (incomplete_class) { php_store_class_name(*rval, class_name, len2); } @@ -874,12 +884,16 @@ yy30: ++YYCURSOR; { + long elements; if (!var_hash) return 0; INIT_PZVAL(*rval); - return object_common2(UNSERIALIZE_PASSTHRU, - object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); + elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR); + if (elements < 0) { + return 0; + } + return object_common2(UNSERIALIZE_PASSTHRU, elements); } yy32: yych = *++YYCURSOR; Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2017-02-09 11:08:40.275399063 -0500 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2017-02-09 11:14:30.800822332 -0500 @@ -448,6 +448,11 @@ { long elements; + if( *p >= max - 2) { + zend_error(E_WARNING, "Bad unserialize data"); + return -1; + } + elements = parse_iv2((*p) + 2, p); (*p) += 2; @@ -706,12 +711,16 @@ } "o:" iv ":" ["] { + long elements; if (!var_hash) return 0; INIT_PZVAL(*rval); - return object_common2(UNSERIALIZE_PASSTHRU, - object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); + elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR); + if (elements < 0) { + return 0; + } + return object_common2(UNSERIALIZE_PASSTHRU, elements); } object ":" uiv ":" ["] { @@ -853,6 +862,11 @@ elements = object_common1(UNSERIALIZE_PASSTHRU, ce); + if (elements < 0) { + efree(class_name); + return 0; + } + if (incomplete_class) { php_store_class_name(*rval, class_name, len2); } debian/patches/CVE-2015-5589-2.patch0000664000000000000000000000376312602473101013416 0ustar Backport of: From 885edfef0a0eb1016a906d197399f92375a795e4 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 6 Jul 2015 22:58:28 -0700 Subject: [PATCH] Better fix for bug #69958 --- ext/phar/phar_object.c | 22 +++++++++++++--------- ext/phar/tests/bug69958.phpt | 2 ++ 2 files changed, 15 insertions(+), 9 deletions(-) Index: php5-5.5.9+dfsg/ext/phar/phar_object.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar_object.c 2015-09-29 07:30:07.596939330 -0400 +++ php5-5.5.9+dfsg/ext/phar/phar_object.c 2015-09-29 07:30:07.596939330 -0400 @@ -2016,9 +2016,10 @@ } /* }}} */ -static zval *phar_rename_archive(phar_archive_data *phar, char *ext, zend_bool compress TSRMLS_DC) /* {{{ */ +static zval *phar_rename_archive(phar_archive_data **sphar, char *ext, zend_bool compress TSRMLS_DC) /* {{{ */ { const char *oldname = NULL; + phar_archive_data *phar = *sphar; char *oldpath = NULL; char *basename = NULL, *basepath = NULL; char *newname = NULL, *newpath = NULL; @@ -2126,6 +2127,7 @@ phar->fp = NULL; phar_destroy_phar_data(phar TSRMLS_CC); phar = *pphar; + *sphar = NULL; phar->refcount++; newpath = oldpath; goto its_ok; @@ -2332,17 +2334,19 @@ phar_add_virtual_dirs(phar, newentry.filename, newentry.filename_len TSRMLS_CC); } - if ((ret = phar_rename_archive(phar, ext, 0 TSRMLS_CC))) { + if ((ret = phar_rename_archive(&phar, ext, 0 TSRMLS_CC))) { return ret; } else { - zend_hash_destroy(&(phar->manifest)); - zend_hash_destroy(&(phar->mounted_dirs)); - zend_hash_destroy(&(phar->virtual_dirs)); - if (phar->fp) { - php_stream_close(phar->fp); + if(phar != NULL) { + zend_hash_destroy(&(phar->manifest)); + zend_hash_destroy(&(phar->mounted_dirs)); + zend_hash_destroy(&(phar->virtual_dirs)); + if (phar->fp) { + php_stream_close(phar->fp); + } + efree(phar->fname); + efree(phar); } - efree(phar->fname); - efree(phar); return NULL; } } debian/patches/CVE-2014-9912-2.patch0000664000000000000000000000430313046663425013413 0ustar From 8e9777a1f19f079c68df92c8c4ee163e6087a1d1 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 24 Jun 2014 11:21:43 -0700 Subject: [PATCH] Fix test - because of big #67397 we don't allow overlong locales anymore --- ext/intl/tests/bug62082.phpt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ext/intl/tests/bug62082.phpt b/ext/intl/tests/bug62082.phpt index e6ca73e..dab1252 100644 --- a/ext/intl/tests/bug62082.phpt +++ b/ext/intl/tests/bug62082.phpt @@ -10,6 +10,7 @@ var_dump(locale_get_display_name(str_repeat("a", 300), null)); var_dump(locale_get_display_name(str_repeat("a", 512), null)); var_dump(locale_get_display_name(str_repeat("a", 600), null)); --EXPECT-- -string(300) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -string(512) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -string(600) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +bool(false) +bool(false) +bool(false) + -- 2.1.4 debian/patches/CVE-2015-4644.patch0000664000000000000000000000404212543257326013252 0ustar Description: fix denial of service via php_pgsql_meta_data Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=2cc4e69cc6d8dbc4b3568ad3dd583324a7c11d64 Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=3ee3066bd00b15b050c2f70ccf8d6a6373f51c09 Bug: https://bugs.php.net/bug.php?id=69667 Index: php5-5.5.9+dfsg/ext/pgsql/pg_insert_002.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/pgsql/pg_insert_002.phpt 2015-06-26 10:16:52.633236050 -0400 @@ -0,0 +1,27 @@ +--TEST-- +PostgreSQL pg_select() - basic test using schema +--SKIPIF-- + +--FILE-- + 1, 'id2' => 1))); +} +?> +Done +--EXPECTF-- + +Warning: pg_insert(): The table name must be specified in %s on line %d +bool(false) + +Warning: pg_insert(): The table name must be specified in %s on line %d +bool(false) + +Warning: pg_insert(): The table name must be specified in %s on line %d +bool(false) +Done \ No newline at end of file Index: php5-5.5.9+dfsg/ext/pgsql/pgsql.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/pgsql/pgsql.c 2015-06-26 10:16:52.637236105 -0400 +++ php5-5.5.9+dfsg/ext/pgsql/pgsql.c 2015-06-26 10:16:52.633236050 -0400 @@ -5115,7 +5115,11 @@ src = estrdup(table_name); tmp_name = php_strtok_r(src, ".", &tmp_name2); - + if (!tmp_name) { + efree(src); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The table name must be specified"); + return FAILURE; + } if (!tmp_name2 || !*tmp_name2) { /* Default schema */ tmp_name2 = tmp_name; @@ -6130,7 +6134,8 @@ static inline void build_tablename(smart_str *querystr, PGconn *pg_link, const char *table) { - char *table_copy, *escaped, *token, *tmp; + char *table_copy, *escaped, *tmp; + const char *token; size_t len; /* schame.table should be "schame"."table" */ debian/patches/CVE-2017-11143-1.patch0000664000000000000000000000531213141101245013442 0ustar From 2aae60461c2ff7b7fbcdd194c789ac841d0747d7 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 2 Jul 2017 14:25:54 -0700 Subject: [PATCH] Fix bug #74145 - wddx parsing empty boolean tag leads to SIGSEGV --- ext/wddx/tests/bug74145.phpt | 16 ++++++++++++++++ ext/wddx/tests/bug74145.xml | 9 +++++++++ ext/wddx/wddx.c | 15 ++++++--------- 3 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 ext/wddx/tests/bug74145.phpt create mode 100644 ext/wddx/tests/bug74145.xml Index: php5-5.5.9+dfsg/ext/wddx/tests/bug74145.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug74145.phpt 2017-08-04 10:20:19.130862926 -0400 @@ -0,0 +1,16 @@ +--TEST-- +Bug #74145 (wddx parsing empty boolean tag leads to SIGSEGV) +--SKIPIF-- + +--FILE-- + +DONE +--EXPECTF-- +NULL +DONE \ No newline at end of file Index: php5-5.5.9+dfsg/ext/wddx/tests/bug74145.xml =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug74145.xml 2017-08-04 10:20:19.130862926 -0400 @@ -0,0 +1,9 @@ + + + + + + + + + Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2017-08-04 10:20:19.134862926 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2017-08-04 10:20:19.130862926 -0400 @@ -791,22 +791,19 @@ static void php_wddx_push_element(void * } else if (!strcmp(name, EL_BOOLEAN)) { int i; + ALLOC_ZVAL(ent.data); + INIT_PZVAL(ent.data); + Z_TYPE_P(ent.data) = IS_BOOL; + ent.type = ST_BOOLEAN; + SET_STACK_VARNAME; if (atts) for (i = 0; atts[i]; i++) { if (!strcmp(atts[i], EL_VALUE) && atts[i+1] && atts[i+1][0]) { - ent.type = ST_BOOLEAN; - SET_STACK_VARNAME; - - ALLOC_ZVAL(ent.data); - INIT_PZVAL(ent.data); - Z_TYPE_P(ent.data) = IS_BOOL; wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); php_wddx_process_data(user_data, atts[i+1], strlen(atts[i+1])); break; } } else { - ent.type = ST_BOOLEAN; - SET_STACK_VARNAME; - ZVAL_FALSE(&ent.data); + ZVAL_FALSE(ent.data); wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); } } else if (!strcmp(name, EL_NULL)) { debian/patches/remove_readelf.patch0000664000000000000000000012556312467421254014642 0ustar Description: remove readelf.c from fileinfo as it isn't used, and is a source of confusion when doing security updates. Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=919abf0cb132cc06c3a0be311af3069bd4be09ce Index: php5-5.5.12+dfsg/ext/fileinfo/config.m4 =================================================================== --- php5-5.5.12+dfsg.orig/ext/fileinfo/config.m4 2015-02-13 11:10:58.889022681 -0500 +++ php5-5.5.12+dfsg/ext/fileinfo/config.m4 2015-02-13 11:10:58.881022614 -0500 @@ -11,7 +11,7 @@ libmagic/cdf.c libmagic/cdf_time.c libmagic/compress.c \ libmagic/encoding.c libmagic/fsmagic.c libmagic/funcs.c \ libmagic/is_tar.c libmagic/magic.c libmagic/print.c \ - libmagic/readcdf.c libmagic/readelf.c libmagic/softmagic.c" + libmagic/readcdf.c libmagic/softmagic.c" PHP_NEW_EXTENSION(fileinfo, fileinfo.c $libmagic_sources, $ext_shared,,-I@ext_srcdir@/libmagic) PHP_ADD_BUILD_DIR($ext_builddir/libmagic) Index: php5-5.5.12+dfsg/ext/fileinfo/config.w32 =================================================================== --- php5-5.5.12+dfsg.orig/ext/fileinfo/config.w32 2015-02-13 11:10:58.889022681 -0500 +++ php5-5.5.12+dfsg/ext/fileinfo/config.w32 2015-02-13 11:10:58.881022614 -0500 @@ -8,7 +8,7 @@ cdf.c cdf_time.c compress.c \ encoding.c fsmagic.c funcs.c \ is_tar.c magic.c print.c \ - readcdf.c readelf.c softmagic.c"; + readcdf.c softmagic.c"; if (VCVERS < 1500) { ADD_FLAG('CFLAGS', '/Zm1000'); Index: php5-5.5.12+dfsg/ext/fileinfo/libmagic/file.h =================================================================== --- php5-5.5.12+dfsg.orig/ext/fileinfo/libmagic/file.h 2015-02-13 11:10:58.889022681 -0500 +++ php5-5.5.12+dfsg/ext/fileinfo/libmagic/file.h 2015-02-13 11:10:58.881022614 -0500 @@ -420,8 +420,6 @@ protected int file_replace(struct magic_set *, const char *, const char *); protected int file_printf(struct magic_set *, const char *, ...); protected int file_reset(struct magic_set *); -protected int file_tryelf(struct magic_set *, int, const unsigned char *, - size_t); protected int file_trycdf(struct magic_set *, int, const unsigned char *, size_t); #ifdef PHP_FILEINFO_UNCOMPRESS Index: php5-5.5.12+dfsg/ext/fileinfo/libmagic/readelf.h =================================================================== --- php5-5.5.12+dfsg.orig/ext/fileinfo/libmagic/readelf.h 2015-02-13 11:10:58.889022681 -0500 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,333 +0,0 @@ -/* - * Copyright (c) Christos Zoulas 2003. - * All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice immediately at the beginning of the file, without modification, - * this list of conditions, and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* - * @(#)Id: readelf.h,v 1.9 2002/05/16 18:45:56 christos Exp - * - * Provide elf data structures for non-elf machines, allowing file - * non-elf hosts to determine if an elf binary is stripped. - * Note: cobbled from the linux header file, with modifications - */ -#ifndef __fake_elf_h__ -#define __fake_elf_h__ - -#if HAVE_STDINT_H -#include -#endif - -typedef uint32_t Elf32_Addr; -typedef uint32_t Elf32_Off; -typedef uint16_t Elf32_Half; -typedef uint32_t Elf32_Word; -typedef uint8_t Elf32_Char; - -#if SIZEOF_LONG_LONG != 8 -#define USE_ARRAY_FOR_64BIT_TYPES -typedef uint32_t Elf64_Addr[2]; -typedef uint32_t Elf64_Off[2]; -typedef uint32_t Elf64_Xword[2]; -#else -#undef USE_ARRAY_FOR_64BIT_TYPES -typedef uint64_t Elf64_Addr; -typedef uint64_t Elf64_Off; -typedef uint64_t Elf64_Xword; -#endif -typedef uint16_t Elf64_Half; -typedef uint32_t Elf64_Word; -typedef uint8_t Elf64_Char; - -#define EI_NIDENT 16 - -typedef struct { - Elf32_Char e_ident[EI_NIDENT]; - Elf32_Half e_type; - Elf32_Half e_machine; - Elf32_Word e_version; - Elf32_Addr e_entry; /* Entry point */ - Elf32_Off e_phoff; - Elf32_Off e_shoff; - Elf32_Word e_flags; - Elf32_Half e_ehsize; - Elf32_Half e_phentsize; - Elf32_Half e_phnum; - Elf32_Half e_shentsize; - Elf32_Half e_shnum; - Elf32_Half e_shstrndx; -} Elf32_Ehdr; - -typedef struct { - Elf64_Char e_ident[EI_NIDENT]; - Elf64_Half e_type; - Elf64_Half e_machine; - Elf64_Word e_version; - Elf64_Addr e_entry; /* Entry point */ - Elf64_Off e_phoff; - Elf64_Off e_shoff; - Elf64_Word e_flags; - Elf64_Half e_ehsize; - Elf64_Half e_phentsize; - Elf64_Half e_phnum; - Elf64_Half e_shentsize; - Elf64_Half e_shnum; - Elf64_Half e_shstrndx; -} Elf64_Ehdr; - -/* e_type */ -#define ET_REL 1 -#define ET_EXEC 2 -#define ET_DYN 3 -#define ET_CORE 4 - -/* e_machine (used only for SunOS 5.x hardware capabilities) */ -#define EM_SPARC 2 -#define EM_386 3 -#define EM_SPARC32PLUS 18 -#define EM_SPARCV9 43 -#define EM_IA_64 50 -#define EM_AMD64 62 - -/* sh_type */ -#define SHT_SYMTAB 2 -#define SHT_NOTE 7 -#define SHT_DYNSYM 11 -#define SHT_SUNW_cap 0x6ffffff5 /* SunOS 5.x hw/sw capabilites */ - -/* elf type */ -#define ELFDATANONE 0 /* e_ident[EI_DATA] */ -#define ELFDATA2LSB 1 -#define ELFDATA2MSB 2 - -/* elf class */ -#define ELFCLASSNONE 0 -#define ELFCLASS32 1 -#define ELFCLASS64 2 - -/* magic number */ -#define EI_MAG0 0 /* e_ident[] indexes */ -#define EI_MAG1 1 -#define EI_MAG2 2 -#define EI_MAG3 3 -#define EI_CLASS 4 -#define EI_DATA 5 -#define EI_VERSION 6 -#define EI_PAD 7 - -#define ELFMAG0 0x7f /* EI_MAG */ -#define ELFMAG1 'E' -#define ELFMAG2 'L' -#define ELFMAG3 'F' -#define ELFMAG "\177ELF" - -#define OLFMAG1 'O' -#define OLFMAG "\177OLF" - -typedef struct { - Elf32_Word p_type; - Elf32_Off p_offset; - Elf32_Addr p_vaddr; - Elf32_Addr p_paddr; - Elf32_Word p_filesz; - Elf32_Word p_memsz; - Elf32_Word p_flags; - Elf32_Word p_align; -} Elf32_Phdr; - -typedef struct { - Elf64_Word p_type; - Elf64_Word p_flags; - Elf64_Off p_offset; - Elf64_Addr p_vaddr; - Elf64_Addr p_paddr; - Elf64_Xword p_filesz; - Elf64_Xword p_memsz; - Elf64_Xword p_align; -} Elf64_Phdr; - -#define PT_NULL 0 /* p_type */ -#define PT_LOAD 1 -#define PT_DYNAMIC 2 -#define PT_INTERP 3 -#define PT_NOTE 4 -#define PT_SHLIB 5 -#define PT_PHDR 6 -#define PT_NUM 7 - -typedef struct { - Elf32_Word sh_name; - Elf32_Word sh_type; - Elf32_Word sh_flags; - Elf32_Addr sh_addr; - Elf32_Off sh_offset; - Elf32_Word sh_size; - Elf32_Word sh_link; - Elf32_Word sh_info; - Elf32_Word sh_addralign; - Elf32_Word sh_entsize; -} Elf32_Shdr; - -typedef struct { - Elf64_Word sh_name; - Elf64_Word sh_type; - Elf64_Off sh_flags; - Elf64_Addr sh_addr; - Elf64_Off sh_offset; - Elf64_Off sh_size; - Elf64_Word sh_link; - Elf64_Word sh_info; - Elf64_Off sh_addralign; - Elf64_Off sh_entsize; -} Elf64_Shdr; - -#define NT_NETBSD_CORE_PROCINFO 1 - -/* Note header in a PT_NOTE section */ -typedef struct elf_note { - Elf32_Word n_namesz; /* Name size */ - Elf32_Word n_descsz; /* Content size */ - Elf32_Word n_type; /* Content type */ -} Elf32_Nhdr; - -typedef struct { - Elf64_Word n_namesz; - Elf64_Word n_descsz; - Elf64_Word n_type; -} Elf64_Nhdr; - -/* Notes used in ET_CORE */ -#define NT_PRSTATUS 1 -#define NT_PRFPREG 2 -#define NT_PRPSINFO 3 -#define NT_PRXREG 4 -#define NT_TASKSTRUCT 4 -#define NT_PLATFORM 5 -#define NT_AUXV 6 - -/* Note types used in executables */ -/* NetBSD executables (name = "NetBSD") */ -#define NT_NETBSD_VERSION 1 -#define NT_NETBSD_EMULATION 2 -#define NT_FREEBSD_VERSION 1 -#define NT_OPENBSD_VERSION 1 -#define NT_DRAGONFLY_VERSION 1 -/* - * GNU executables (name = "GNU") - * word[0]: GNU OS tags - * word[1]: major version - * word[2]: minor version - * word[3]: tiny version - */ -#define NT_GNU_VERSION 1 - -/* GNU OS tags */ -#define GNU_OS_LINUX 0 -#define GNU_OS_HURD 1 -#define GNU_OS_SOLARIS 2 -#define GNU_OS_KFREEBSD 3 -#define GNU_OS_KNETBSD 4 - -/* - * GNU Hardware capability information - * word[0]: Number of entries - * word[1]: Bitmask of enabled entries - * Followed by a byte id, and a NUL terminated string per entry - */ -#define NT_GNU_HWCAP 2 - -/* - * GNU Build ID generated by ld - * 160 bit SHA1 [default] - * 128 bit md5 or uuid - */ -#define NT_GNU_BUILD_ID 3 - -/* SunOS 5.x hardware/software capabilities */ -typedef struct { - Elf32_Word c_tag; - union { - Elf32_Word c_val; - Elf32_Addr c_ptr; - } c_un; -} Elf32_Cap; - -typedef struct { - Elf64_Xword c_tag; - union { - Elf64_Xword c_val; - Elf64_Addr c_ptr; - } c_un; -} Elf64_Cap; - -/* SunOS 5.x hardware/software capability tags */ -#define CA_SUNW_NULL 0 -#define CA_SUNW_HW_1 1 -#define CA_SUNW_SF_1 2 - -/* SunOS 5.x software capabilities */ -#define SF1_SUNW_FPKNWN 0x01 -#define SF1_SUNW_FPUSED 0x02 -#define SF1_SUNW_MASK 0x03 - -/* SunOS 5.x hardware capabilities: sparc */ -#define AV_SPARC_MUL32 0x0001 -#define AV_SPARC_DIV32 0x0002 -#define AV_SPARC_FSMULD 0x0004 -#define AV_SPARC_V8PLUS 0x0008 -#define AV_SPARC_POPC 0x0010 -#define AV_SPARC_VIS 0x0020 -#define AV_SPARC_VIS2 0x0040 -#define AV_SPARC_ASI_BLK_INIT 0x0080 -#define AV_SPARC_FMAF 0x0100 -#define AV_SPARC_FJFMAU 0x4000 -#define AV_SPARC_IMA 0x8000 - -/* SunOS 5.x hardware capabilities: 386 */ -#define AV_386_FPU 0x00000001 -#define AV_386_TSC 0x00000002 -#define AV_386_CX8 0x00000004 -#define AV_386_SEP 0x00000008 -#define AV_386_AMD_SYSC 0x00000010 -#define AV_386_CMOV 0x00000020 -#define AV_386_MMX 0x00000040 -#define AV_386_AMD_MMX 0x00000080 -#define AV_386_AMD_3DNow 0x00000100 -#define AV_386_AMD_3DNowx 0x00000200 -#define AV_386_FXSR 0x00000400 -#define AV_386_SSE 0x00000800 -#define AV_386_SSE2 0x00001000 -#define AV_386_PAUSE 0x00002000 -#define AV_386_SSE3 0x00004000 -#define AV_386_MON 0x00008000 -#define AV_386_CX16 0x00010000 -#define AV_386_AHF 0x00020000 -#define AV_386_TSCP 0x00040000 -#define AV_386_AMD_SSE4A 0x00080000 -#define AV_386_POPCNT 0x00100000 -#define AV_386_AMD_LZCNT 0x00200000 -#define AV_386_SSSE3 0x00400000 -#define AV_386_SSE4_1 0x00800000 -#define AV_386_SSE4_2 0x01000000 - -#endif Index: php5-5.5.12+dfsg/ext/fileinfo/libmagic/readelf.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/fileinfo/libmagic/readelf.c 2015-02-13 11:10:42.632885916 -0500 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,1200 +0,0 @@ -/* - * Copyright (c) Christos Zoulas 2003. - * All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice immediately at the beginning of the file, without modification, - * this list of conditions, and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#include "file.h" - -#ifndef lint -FILE_RCSID("@(#)$File: readelf.c,v 1.97 2013/03/06 03:35:30 christos Exp $") -#endif - -#ifdef BUILTIN_ELF -#include -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif - -#include "readelf.h" -#include "magic.h" - -#ifdef ELFCORE -private int dophn_core(struct magic_set *, int, int, int, off_t, int, size_t, - off_t, int *); -#endif -private int dophn_exec(struct magic_set *, int, int, int, off_t, int, size_t, - off_t, int *, int); -private int doshn(struct magic_set *, int, int, int, off_t, int, size_t, - off_t, int *, int); -private size_t donote(struct magic_set *, unsigned char *, size_t, size_t, int, - int, size_t, int *); - -#define ELF_ALIGN(a) ((((a) + align - 1) / align) * align) - -#define isquote(c) (strchr("'\"`", (c)) != NULL) - -private uint16_t getu16(int, uint16_t); -private uint32_t getu32(int, uint32_t); -private uint64_t getu64(int, uint64_t); - -private uint16_t -getu16(int swap, uint16_t value) -{ - union { - uint16_t ui; - char c[2]; - } retval, tmpval; - - if (swap) { - tmpval.ui = value; - - retval.c[0] = tmpval.c[1]; - retval.c[1] = tmpval.c[0]; - - return retval.ui; - } else - return value; -} - -private uint32_t -getu32(int swap, uint32_t value) -{ - union { - uint32_t ui; - char c[4]; - } retval, tmpval; - - if (swap) { - tmpval.ui = value; - - retval.c[0] = tmpval.c[3]; - retval.c[1] = tmpval.c[2]; - retval.c[2] = tmpval.c[1]; - retval.c[3] = tmpval.c[0]; - - return retval.ui; - } else - return value; -} - -private uint64_t -getu64(int swap, uint64_t value) -{ - union { - uint64_t ui; - char c[8]; - } retval, tmpval; - - if (swap) { - tmpval.ui = value; - - retval.c[0] = tmpval.c[7]; - retval.c[1] = tmpval.c[6]; - retval.c[2] = tmpval.c[5]; - retval.c[3] = tmpval.c[4]; - retval.c[4] = tmpval.c[3]; - retval.c[5] = tmpval.c[2]; - retval.c[6] = tmpval.c[1]; - retval.c[7] = tmpval.c[0]; - - return retval.ui; - } else - return value; -} - -#define elf_getu16(swap, value) getu16(swap, value) -#define elf_getu32(swap, value) getu32(swap, value) -#ifdef USE_ARRAY_FOR_64BIT_TYPES -# define elf_getu64(swap, array) \ - ((swap ? ((uint64_t)elf_getu32(swap, array[0])) << 32 : elf_getu32(swap, array[0])) + \ - (swap ? elf_getu32(swap, array[1]) : ((uint64_t)elf_getu32(swap, array[1]) << 32))) -#else -# define elf_getu64(swap, value) getu64(swap, value) -#endif - -#define xsh_addr (clazz == ELFCLASS32 \ - ? (void *) &sh32 \ - : (void *) &sh64) -#define xsh_sizeof (clazz == ELFCLASS32 \ - ? sizeof(sh32) \ - : sizeof(sh64)) -#define xsh_size (size_t)(clazz == ELFCLASS32 \ - ? elf_getu32(swap, sh32.sh_size) \ - : elf_getu64(swap, sh64.sh_size)) -#define xsh_offset (off_t)(clazz == ELFCLASS32 \ - ? elf_getu32(swap, sh32.sh_offset) \ - : elf_getu64(swap, sh64.sh_offset)) -#define xsh_type (clazz == ELFCLASS32 \ - ? elf_getu32(swap, sh32.sh_type) \ - : elf_getu32(swap, sh64.sh_type)) -#define xsh_name (clazz == ELFCLASS32 \ - ? elf_getu32(swap, sh32.sh_name) \ - : elf_getu32(swap, sh64.sh_name)) -#define xph_addr (clazz == ELFCLASS32 \ - ? (void *) &ph32 \ - : (void *) &ph64) -#define xph_sizeof (clazz == ELFCLASS32 \ - ? sizeof(ph32) \ - : sizeof(ph64)) -#define xph_type (clazz == ELFCLASS32 \ - ? elf_getu32(swap, ph32.p_type) \ - : elf_getu32(swap, ph64.p_type)) -#define xph_offset (off_t)(clazz == ELFCLASS32 \ - ? elf_getu32(swap, ph32.p_offset) \ - : elf_getu64(swap, ph64.p_offset)) -#define xph_align (size_t)((clazz == ELFCLASS32 \ - ? (off_t) (ph32.p_align ? \ - elf_getu32(swap, ph32.p_align) : 4) \ - : (off_t) (ph64.p_align ? \ - elf_getu64(swap, ph64.p_align) : 4))) -#define xph_filesz (size_t)((clazz == ELFCLASS32 \ - ? elf_getu32(swap, ph32.p_filesz) \ - : elf_getu64(swap, ph64.p_filesz))) -#define xnh_addr (clazz == ELFCLASS32 \ - ? (void *) &nh32 \ - : (void *) &nh64) -#define xph_memsz (size_t)((clazz == ELFCLASS32 \ - ? elf_getu32(swap, ph32.p_memsz) \ - : elf_getu64(swap, ph64.p_memsz))) -#define xnh_sizeof (clazz == ELFCLASS32 \ - ? sizeof nh32 \ - : sizeof nh64) -#define xnh_type (clazz == ELFCLASS32 \ - ? elf_getu32(swap, nh32.n_type) \ - : elf_getu32(swap, nh64.n_type)) -#define xnh_namesz (clazz == ELFCLASS32 \ - ? elf_getu32(swap, nh32.n_namesz) \ - : elf_getu32(swap, nh64.n_namesz)) -#define xnh_descsz (clazz == ELFCLASS32 \ - ? elf_getu32(swap, nh32.n_descsz) \ - : elf_getu32(swap, nh64.n_descsz)) -#define prpsoffsets(i) (clazz == ELFCLASS32 \ - ? prpsoffsets32[i] \ - : prpsoffsets64[i]) -#define xcap_addr (clazz == ELFCLASS32 \ - ? (void *) &cap32 \ - : (void *) &cap64) -#define xcap_sizeof (clazz == ELFCLASS32 \ - ? sizeof cap32 \ - : sizeof cap64) -#define xcap_tag (clazz == ELFCLASS32 \ - ? elf_getu32(swap, cap32.c_tag) \ - : elf_getu64(swap, cap64.c_tag)) -#define xcap_val (clazz == ELFCLASS32 \ - ? elf_getu32(swap, cap32.c_un.c_val) \ - : elf_getu64(swap, cap64.c_un.c_val)) - -#ifdef ELFCORE -/* - * Try larger offsets first to avoid false matches - * from earlier data that happen to look like strings. - */ -static const size_t prpsoffsets32[] = { -#ifdef USE_NT_PSINFO - 104, /* SunOS 5.x (command line) */ - 88, /* SunOS 5.x (short name) */ -#endif /* USE_NT_PSINFO */ - - 100, /* SunOS 5.x (command line) */ - 84, /* SunOS 5.x (short name) */ - - 44, /* Linux (command line) */ - 28, /* Linux 2.0.36 (short name) */ - - 8, /* FreeBSD */ -}; - -static const size_t prpsoffsets64[] = { -#ifdef USE_NT_PSINFO - 152, /* SunOS 5.x (command line) */ - 136, /* SunOS 5.x (short name) */ -#endif /* USE_NT_PSINFO */ - - 136, /* SunOS 5.x, 64-bit (command line) */ - 120, /* SunOS 5.x, 64-bit (short name) */ - - 56, /* Linux (command line) */ - 40, /* Linux (tested on core from 2.4.x, short name) */ - - 16, /* FreeBSD, 64-bit */ -}; - -#define NOFFSETS32 (sizeof prpsoffsets32 / sizeof prpsoffsets32[0]) -#define NOFFSETS64 (sizeof prpsoffsets64 / sizeof prpsoffsets64[0]) - -#define NOFFSETS (clazz == ELFCLASS32 ? NOFFSETS32 : NOFFSETS64) - -/* - * Look through the program headers of an executable image, searching - * for a PT_NOTE section of type NT_PRPSINFO, with a name "CORE" or - * "FreeBSD"; if one is found, try looking in various places in its - * contents for a 16-character string containing only printable - * characters - if found, that string should be the name of the program - * that dropped core. Note: right after that 16-character string is, - * at least in SunOS 5.x (and possibly other SVR4-flavored systems) and - * Linux, a longer string (80 characters, in 5.x, probably other - * SVR4-flavored systems, and Linux) containing the start of the - * command line for that program. - * - * SunOS 5.x core files contain two PT_NOTE sections, with the types - * NT_PRPSINFO (old) and NT_PSINFO (new). These structs contain the - * same info about the command name and command line, so it probably - * isn't worthwhile to look for NT_PSINFO, but the offsets are provided - * above (see USE_NT_PSINFO), in case we ever decide to do so. The - * NT_PRPSINFO and NT_PSINFO sections are always in order and adjacent; - * the SunOS 5.x file command relies on this (and prefers the latter). - * - * The signal number probably appears in a section of type NT_PRSTATUS, - * but that's also rather OS-dependent, in ways that are harder to - * dissect with heuristics, so I'm not bothering with the signal number. - * (I suppose the signal number could be of interest in situations where - * you don't have the binary of the program that dropped core; if you - * *do* have that binary, the debugger will probably tell you what - * signal it was.) - */ - -#define OS_STYLE_SVR4 0 -#define OS_STYLE_FREEBSD 1 -#define OS_STYLE_NETBSD 2 - -private const char os_style_names[][8] = { - "SVR4", - "FreeBSD", - "NetBSD", -}; - -#define FLAGS_DID_CORE 0x01 -#define FLAGS_DID_NOTE 0x02 -#define FLAGS_DID_BUILD_ID 0x04 -#define FLAGS_DID_CORE_STYLE 0x08 -#define FLAGS_IS_CORE 0x10 - -private int -dophn_core(struct magic_set *ms, int clazz, int swap, int fd, off_t off, - int num, size_t size, off_t fsize, int *flags) -{ - Elf32_Phdr ph32; - Elf64_Phdr ph64; - size_t offset; - unsigned char nbuf[BUFSIZ]; - ssize_t bufsize; - - if (size != xph_sizeof) { - if (file_printf(ms, ", corrupted program header size") == -1) - return -1; - return 0; - } - - /* - * Loop through all the program headers. - */ - for ( ; num; num--) { - if (FINFO_LSEEK_FUNC(fd, off, SEEK_SET) == (off_t)-1) { - file_badseek(ms); - return -1; - } - if (FINFO_READ_FUNC(fd, xph_addr, xph_sizeof) == -1) { - file_badread(ms); - return -1; - } - off += size; - - if (xph_offset > fsize) { - /* Perhaps warn here */ - continue; - } - - if (xph_type != PT_NOTE) - continue; - - /* - * This is a PT_NOTE section; loop through all the notes - * in the section. - */ - if (FINFO_LSEEK_FUNC(fd, xph_offset, SEEK_SET) == (off_t)-1) { - file_badseek(ms); - return -1; - } - bufsize = FINFO_READ_FUNC(fd, nbuf, - ((xph_filesz < sizeof(nbuf)) ? xph_filesz : sizeof(nbuf))); - if (bufsize == -1) { - file_badread(ms); - return -1; - } - offset = 0; - for (;;) { - if (offset >= (size_t)bufsize) - break; - offset = donote(ms, nbuf, offset, (size_t)bufsize, - clazz, swap, 4, flags); - if (offset == 0) - break; - - } - } - return 0; -} -#endif - -private size_t -donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size, - int clazz, int swap, size_t align, int *flags) -{ - Elf32_Nhdr nh32; - Elf64_Nhdr nh64; - size_t noff, doff; -#ifdef ELFCORE - int os_style = -1; -#endif - uint32_t namesz, descsz; - unsigned char *nbuf = CAST(unsigned char *, vbuf); - - (void)memcpy(xnh_addr, &nbuf[offset], xnh_sizeof); - offset += xnh_sizeof; - - namesz = xnh_namesz; - descsz = xnh_descsz; - if ((namesz == 0) && (descsz == 0)) { - /* - * We're out of note headers. - */ - return (offset >= size) ? offset : size; - } - - if (namesz & 0x80000000) { - (void)file_printf(ms, ", bad note name size 0x%lx", - (unsigned long)namesz); - return offset; - } - - if (descsz & 0x80000000) { - (void)file_printf(ms, ", bad note description size 0x%lx", - (unsigned long)descsz); - return offset; - } - - - noff = offset; - doff = ELF_ALIGN(offset + namesz); - - if (offset + namesz > size) { - /* - * We're past the end of the buffer. - */ - return doff; - } - - offset = ELF_ALIGN(doff + descsz); - if (doff + descsz > size) { - /* - * We're past the end of the buffer. - */ - return (offset >= size) ? offset : size; - } - - if ((*flags & (FLAGS_DID_NOTE|FLAGS_DID_BUILD_ID)) == - (FLAGS_DID_NOTE|FLAGS_DID_BUILD_ID)) - goto core; - - if (namesz == 5 && strcmp((char *)&nbuf[noff], "SuSE") == 0 && - xnh_type == NT_GNU_VERSION && descsz == 2) { - file_printf(ms, ", for SuSE %d.%d", nbuf[doff], nbuf[doff + 1]); - } - if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 && - xnh_type == NT_GNU_VERSION && descsz == 16) { - uint32_t desc[4]; - (void)memcpy(desc, &nbuf[doff], sizeof(desc)); - - if (file_printf(ms, ", for GNU/") == -1) - return size; - switch (elf_getu32(swap, desc[0])) { - case GNU_OS_LINUX: - if (file_printf(ms, "Linux") == -1) - return size; - break; - case GNU_OS_HURD: - if (file_printf(ms, "Hurd") == -1) - return size; - break; - case GNU_OS_SOLARIS: - if (file_printf(ms, "Solaris") == -1) - return size; - break; - case GNU_OS_KFREEBSD: - if (file_printf(ms, "kFreeBSD") == -1) - return size; - break; - case GNU_OS_KNETBSD: - if (file_printf(ms, "kNetBSD") == -1) - return size; - break; - default: - if (file_printf(ms, "") == -1) - return size; - } - if (file_printf(ms, " %d.%d.%d", elf_getu32(swap, desc[1]), - elf_getu32(swap, desc[2]), elf_getu32(swap, desc[3])) == -1) - return size; - *flags |= FLAGS_DID_NOTE; - return size; - } - - if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 && - xnh_type == NT_GNU_BUILD_ID && (descsz == 16 || descsz == 20)) { - uint8_t desc[20]; - uint32_t i; - if (file_printf(ms, ", BuildID[%s]=", descsz == 16 ? "md5/uuid" : - "sha1") == -1) - return size; - (void)memcpy(desc, &nbuf[doff], descsz); - for (i = 0; i < descsz; i++) - if (file_printf(ms, "%02x", desc[i]) == -1) - return size; - *flags |= FLAGS_DID_BUILD_ID; - } - - if (namesz == 7 && strcmp((char *)&nbuf[noff], "NetBSD") == 0 && - xnh_type == NT_NETBSD_VERSION && descsz == 4) { - uint32_t desc; - (void)memcpy(&desc, &nbuf[doff], sizeof(desc)); - desc = elf_getu32(swap, desc); - - if (file_printf(ms, ", for NetBSD") == -1) - return size; - /* - * The version number used to be stuck as 199905, and was thus - * basically content-free. Newer versions of NetBSD have fixed - * this and now use the encoding of __NetBSD_Version__: - * - * MMmmrrpp00 - * - * M = major version - * m = minor version - * r = release ["",A-Z,Z[A-Z] but numeric] - * p = patchlevel - */ - if (desc > 100000000U) { - uint32_t ver_patch = (desc / 100) % 100; - uint32_t ver_rel = (desc / 10000) % 100; - uint32_t ver_min = (desc / 1000000) % 100; - uint32_t ver_maj = desc / 100000000; - - if (file_printf(ms, " %u.%u", ver_maj, ver_min) == -1) - return size; - if (ver_rel == 0 && ver_patch != 0) { - if (file_printf(ms, ".%u", ver_patch) == -1) - return size; - } else if (ver_rel != 0) { - while (ver_rel > 26) { - if (file_printf(ms, "Z") == -1) - return size; - ver_rel -= 26; - } - if (file_printf(ms, "%c", 'A' + ver_rel - 1) - == -1) - return size; - } - } - *flags |= FLAGS_DID_NOTE; - return size; - } - - if (namesz == 8 && strcmp((char *)&nbuf[noff], "FreeBSD") == 0 && - xnh_type == NT_FREEBSD_VERSION && descsz == 4) { - uint32_t desc; - (void)memcpy(&desc, &nbuf[doff], sizeof(desc)); - desc = elf_getu32(swap, desc); - if (file_printf(ms, ", for FreeBSD") == -1) - return size; - - /* - * Contents is __FreeBSD_version, whose relation to OS - * versions is defined by a huge table in the Porter's - * Handbook. This is the general scheme: - * - * Releases: - * Mmp000 (before 4.10) - * Mmi0p0 (before 5.0) - * Mmm0p0 - * - * Development branches: - * Mmpxxx (before 4.6) - * Mmp1xx (before 4.10) - * Mmi1xx (before 5.0) - * M000xx (pre-M.0) - * Mmm1xx - * - * M = major version - * m = minor version - * i = minor version increment (491000 -> 4.10) - * p = patchlevel - * x = revision - * - * The first release of FreeBSD to use ELF by default - * was version 3.0. - */ - if (desc == 460002) { - if (file_printf(ms, " 4.6.2") == -1) - return size; - } else if (desc < 460100) { - if (file_printf(ms, " %d.%d", desc / 100000, - desc / 10000 % 10) == -1) - return size; - if (desc / 1000 % 10 > 0) - if (file_printf(ms, ".%d", desc / 1000 % 10) - == -1) - return size; - if ((desc % 1000 > 0) || (desc % 100000 == 0)) - if (file_printf(ms, " (%d)", desc) == -1) - return size; - } else if (desc < 500000) { - if (file_printf(ms, " %d.%d", desc / 100000, - desc / 10000 % 10 + desc / 1000 % 10) == -1) - return size; - if (desc / 100 % 10 > 0) { - if (file_printf(ms, " (%d)", desc) == -1) - return size; - } else if (desc / 10 % 10 > 0) { - if (file_printf(ms, ".%d", desc / 10 % 10) - == -1) - return size; - } - } else { - if (file_printf(ms, " %d.%d", desc / 100000, - desc / 1000 % 100) == -1) - return size; - if ((desc / 100 % 10 > 0) || - (desc % 100000 / 100 == 0)) { - if (file_printf(ms, " (%d)", desc) == -1) - return size; - } else if (desc / 10 % 10 > 0) { - if (file_printf(ms, ".%d", desc / 10 % 10) - == -1) - return size; - } - } - *flags |= FLAGS_DID_NOTE; - return size; - } - - if (namesz == 8 && strcmp((char *)&nbuf[noff], "OpenBSD") == 0 && - xnh_type == NT_OPENBSD_VERSION && descsz == 4) { - if (file_printf(ms, ", for OpenBSD") == -1) - return size; - /* Content of note is always 0 */ - *flags |= FLAGS_DID_NOTE; - return size; - } - - if (namesz == 10 && strcmp((char *)&nbuf[noff], "DragonFly") == 0 && - xnh_type == NT_DRAGONFLY_VERSION && descsz == 4) { - uint32_t desc; - if (file_printf(ms, ", for DragonFly") == -1) - return size; - (void)memcpy(&desc, &nbuf[doff], sizeof(desc)); - desc = elf_getu32(swap, desc); - if (file_printf(ms, " %d.%d.%d", desc / 100000, - desc / 10000 % 10, desc % 10000) == -1) - return size; - *flags |= FLAGS_DID_NOTE; - return size; - } - -core: - /* - * Sigh. The 2.0.36 kernel in Debian 2.1, at - * least, doesn't correctly implement name - * sections, in core dumps, as specified by - * the "Program Linking" section of "UNIX(R) System - * V Release 4 Programmer's Guide: ANSI C and - * Programming Support Tools", because my copy - * clearly says "The first 'namesz' bytes in 'name' - * contain a *null-terminated* [emphasis mine] - * character representation of the entry's owner - * or originator", but the 2.0.36 kernel code - * doesn't include the terminating null in the - * name.... - */ - if ((namesz == 4 && strncmp((char *)&nbuf[noff], "CORE", 4) == 0) || - (namesz == 5 && strcmp((char *)&nbuf[noff], "CORE") == 0)) { - os_style = OS_STYLE_SVR4; - } - - if ((namesz == 8 && strcmp((char *)&nbuf[noff], "FreeBSD") == 0)) { - os_style = OS_STYLE_FREEBSD; - } - - if ((namesz >= 11 && strncmp((char *)&nbuf[noff], "NetBSD-CORE", 11) - == 0)) { - os_style = OS_STYLE_NETBSD; - } - -#ifdef ELFCORE - if ((*flags & FLAGS_DID_CORE) != 0) - return size; - - if (os_style != -1 && (*flags & FLAGS_DID_CORE_STYLE) == 0) { - if (file_printf(ms, ", %s-style", os_style_names[os_style]) - == -1) - return size; - *flags |= FLAGS_DID_CORE_STYLE; - } - - switch (os_style) { - case OS_STYLE_NETBSD: - if (xnh_type == NT_NETBSD_CORE_PROCINFO) { - uint32_t signo; - /* - * Extract the program name. It is at - * offset 0x7c, and is up to 32-bytes, - * including the terminating NUL. - */ - if (file_printf(ms, ", from '%.31s'", - &nbuf[doff + 0x7c]) == -1) - return size; - - /* - * Extract the signal number. It is at - * offset 0x08. - */ - (void)memcpy(&signo, &nbuf[doff + 0x08], - sizeof(signo)); - if (file_printf(ms, " (signal %u)", - elf_getu32(swap, signo)) == -1) - return size; - *flags |= FLAGS_DID_CORE; - return size; - } - break; - - default: - if (xnh_type == NT_PRPSINFO && *flags & FLAGS_IS_CORE) { - size_t i, j; - unsigned char c; - /* - * Extract the program name. We assume - * it to be 16 characters (that's what it - * is in SunOS 5.x and Linux). - * - * Unfortunately, it's at a different offset - * in various OSes, so try multiple offsets. - * If the characters aren't all printable, - * reject it. - */ - for (i = 0; i < NOFFSETS; i++) { - unsigned char *cname, *cp; - size_t reloffset = prpsoffsets(i); - size_t noffset = doff + reloffset; - size_t k; - for (j = 0; j < 16; j++, noffset++, - reloffset++) { - /* - * Make sure we're not past - * the end of the buffer; if - * we are, just give up. - */ - if (noffset >= size) - goto tryanother; - - /* - * Make sure we're not past - * the end of the contents; - * if we are, this obviously - * isn't the right offset. - */ - if (reloffset >= descsz) - goto tryanother; - - c = nbuf[noffset]; - if (c == '\0') { - /* - * A '\0' at the - * beginning is - * obviously wrong. - * Any other '\0' - * means we're done. - */ - if (j == 0) - goto tryanother; - else - break; - } else { - /* - * A nonprintable - * character is also - * wrong. - */ - if (!isprint(c) || isquote(c)) - goto tryanother; - } - } - /* - * Well, that worked. - */ - - /* - * Try next offsets, in case this match is - * in the middle of a string. - */ - for (k = i + 1 ; k < NOFFSETS ; k++) { - size_t no; - int adjust = 1; - if (prpsoffsets(k) >= prpsoffsets(i)) - continue; - for (no = doff + prpsoffsets(k); - no < doff + prpsoffsets(i); no++) - adjust = adjust - && isprint(nbuf[no]); - if (adjust) - i = k; - } - - cname = (unsigned char *) - &nbuf[doff + prpsoffsets(i)]; - for (cp = cname; *cp && isprint(*cp); cp++) - continue; - /* - * Linux apparently appends a space at the end - * of the command line: remove it. - */ - while (cp > cname && isspace(cp[-1])) - cp--; - if (file_printf(ms, ", from '%.*s'", - (int)(cp - cname), cname) == -1) - return size; - *flags |= FLAGS_DID_CORE; - return size; - - tryanother: - ; - } - } - break; - } -#endif - return offset; -} - -/* SunOS 5.x hardware capability descriptions */ -typedef struct cap_desc { - uint64_t cd_mask; - const char *cd_name; -} cap_desc_t; - -static const cap_desc_t cap_desc_sparc[] = { - { AV_SPARC_MUL32, "MUL32" }, - { AV_SPARC_DIV32, "DIV32" }, - { AV_SPARC_FSMULD, "FSMULD" }, - { AV_SPARC_V8PLUS, "V8PLUS" }, - { AV_SPARC_POPC, "POPC" }, - { AV_SPARC_VIS, "VIS" }, - { AV_SPARC_VIS2, "VIS2" }, - { AV_SPARC_ASI_BLK_INIT, "ASI_BLK_INIT" }, - { AV_SPARC_FMAF, "FMAF" }, - { AV_SPARC_FJFMAU, "FJFMAU" }, - { AV_SPARC_IMA, "IMA" }, - { 0, NULL } -}; - -static const cap_desc_t cap_desc_386[] = { - { AV_386_FPU, "FPU" }, - { AV_386_TSC, "TSC" }, - { AV_386_CX8, "CX8" }, - { AV_386_SEP, "SEP" }, - { AV_386_AMD_SYSC, "AMD_SYSC" }, - { AV_386_CMOV, "CMOV" }, - { AV_386_MMX, "MMX" }, - { AV_386_AMD_MMX, "AMD_MMX" }, - { AV_386_AMD_3DNow, "AMD_3DNow" }, - { AV_386_AMD_3DNowx, "AMD_3DNowx" }, - { AV_386_FXSR, "FXSR" }, - { AV_386_SSE, "SSE" }, - { AV_386_SSE2, "SSE2" }, - { AV_386_PAUSE, "PAUSE" }, - { AV_386_SSE3, "SSE3" }, - { AV_386_MON, "MON" }, - { AV_386_CX16, "CX16" }, - { AV_386_AHF, "AHF" }, - { AV_386_TSCP, "TSCP" }, - { AV_386_AMD_SSE4A, "AMD_SSE4A" }, - { AV_386_POPCNT, "POPCNT" }, - { AV_386_AMD_LZCNT, "AMD_LZCNT" }, - { AV_386_SSSE3, "SSSE3" }, - { AV_386_SSE4_1, "SSE4.1" }, - { AV_386_SSE4_2, "SSE4.2" }, - { 0, NULL } -}; - -private int -doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num, - size_t size, off_t fsize, int *flags, int mach, int strtab) -{ - Elf32_Shdr sh32; - Elf64_Shdr sh64; - int stripped = 1; - void *nbuf; - off_t noff, coff, name_off; - uint64_t cap_hw1 = 0; /* SunOS 5.x hardware capabilites */ - uint64_t cap_sf1 = 0; /* SunOS 5.x software capabilites */ - char name[50]; - - if (size != xsh_sizeof) { - if (file_printf(ms, ", corrupted section header size") == -1) - return -1; - return 0; - } - - for ( ; num; num--) { - if (FINFO_LSEEK_FUNC(fd, off, SEEK_SET) == (off_t)-1) { - file_badseek(ms); - return -1; - } - if (FINFO_READ_FUNC(fd, xsh_addr, xsh_sizeof) == -1) { - file_badread(ms); - return -1; - } - off += size; - - /* Things we can determine before we seek */ - switch (xsh_type) { - case SHT_SYMTAB: -#if 0 - case SHT_DYNSYM: -#endif - stripped = 0; - break; - default: - if (xsh_offset > fsize) { - /* Perhaps warn here */ - continue; - } - break; - } - - /* Things we can determine when we seek */ - switch (xsh_type) { - case SHT_NOTE: - nbuf = emalloc((size_t)xsh_size); - if ((noff = FINFO_LSEEK_FUNC(fd, (off_t)xsh_offset, SEEK_SET)) == - (off_t)-1) { - file_badread(ms); - efree(nbuf); - return -1; - } - if (FINFO_READ_FUNC(fd, nbuf, (size_t)xsh_size) != - (ssize_t)xsh_size) { - efree(nbuf); - file_badread(ms); - return -1; - } - - noff = 0; - for (;;) { - if (noff >= (off_t)xsh_size) - break; - noff = donote(ms, nbuf, (size_t)noff, - (size_t)xsh_size, clazz, swap, 4, - flags); - if (noff == 0) - break; - } - efree(nbuf); - break; - case SHT_SUNW_cap: - if (FINFO_LSEEK_FUNC(fd, (off_t)xsh_offset, SEEK_SET) == - (off_t)-1) { - file_badseek(ms); - return -1; - } - coff = 0; - for (;;) { - Elf32_Cap cap32; - Elf64_Cap cap64; - char cbuf[/*CONSTCOND*/ - MAX(sizeof cap32, sizeof cap64)]; - if ((coff += xcap_sizeof) > (off_t)xsh_size) - break; - if (FINFO_READ_FUNC(fd, cbuf, (size_t)xcap_sizeof) != - (ssize_t)xcap_sizeof) { - file_badread(ms); - return -1; - } - (void)memcpy(xcap_addr, cbuf, xcap_sizeof); - switch (xcap_tag) { - case CA_SUNW_NULL: - break; - case CA_SUNW_HW_1: - cap_hw1 |= xcap_val; - break; - case CA_SUNW_SF_1: - cap_sf1 |= xcap_val; - break; - default: - if (file_printf(ms, - ", with unknown capability " - "0x%" INT64_T_FORMAT "x = 0x%" - INT64_T_FORMAT "x", - (unsigned long long)xcap_tag, - (unsigned long long)xcap_val) == -1) - return -1; - break; - } - } - break; - - default: - break; - } - } - if (file_printf(ms, ", %sstripped", stripped ? "" : "not ") == -1) - return -1; - if (cap_hw1) { - const cap_desc_t *cdp; - switch (mach) { - case EM_SPARC: - case EM_SPARC32PLUS: - case EM_SPARCV9: - cdp = cap_desc_sparc; - break; - case EM_386: - case EM_IA_64: - case EM_AMD64: - cdp = cap_desc_386; - break; - default: - cdp = NULL; - break; - } - if (file_printf(ms, ", uses") == -1) - return -1; - if (cdp) { - while (cdp->cd_name) { - if (cap_hw1 & cdp->cd_mask) { - if (file_printf(ms, - " %s", cdp->cd_name) == -1) - return -1; - cap_hw1 &= ~cdp->cd_mask; - } - ++cdp; - } - if (cap_hw1) - if (file_printf(ms, - " unknown hardware capability 0x%" - INT64_T_FORMAT "x", - (unsigned long long)cap_hw1) == -1) - return -1; - } else { - if (file_printf(ms, - " hardware capability 0x%" INT64_T_FORMAT "x", - (unsigned long long)cap_hw1) == -1) - return -1; - } - } - if (cap_sf1) { - if (cap_sf1 & SF1_SUNW_FPUSED) { - if (file_printf(ms, - (cap_sf1 & SF1_SUNW_FPKNWN) - ? ", uses frame pointer" - : ", not known to use frame pointer") == -1) - return -1; - } - cap_sf1 &= ~SF1_SUNW_MASK; - if (cap_sf1) - if (file_printf(ms, - ", with unknown software capability 0x%" - INT64_T_FORMAT "x", - (unsigned long long)cap_sf1) == -1) - return -1; - } - return 0; -} - -/* - * Look through the program headers of an executable image, searching - * for a PT_INTERP section; if one is found, it's dynamically linked, - * otherwise it's statically linked. - */ -private int -dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off, - int num, size_t size, off_t fsize, int *flags, int sh_num) -{ - Elf32_Phdr ph32; - Elf64_Phdr ph64; - const char *linking_style = "statically"; - const char *shared_libraries = ""; - unsigned char nbuf[BUFSIZ]; - ssize_t bufsize; - size_t offset, align; - - if (size != xph_sizeof) { - if (file_printf(ms, ", corrupted program header size") == -1) - return -1; - return 0; - } - - for ( ; num; num--) { - if (FINFO_LSEEK_FUNC(fd, off, SEEK_SET) == (off_t)-1) { - file_badseek(ms); - return -1; - } - - if (FINFO_READ_FUNC(fd, xph_addr, xph_sizeof) == -1) { - file_badread(ms); - return -1; - } - - off += size; - - /* Things we can determine before we seek */ - switch (xph_type) { - case PT_DYNAMIC: - linking_style = "dynamically"; - break; - case PT_INTERP: - shared_libraries = " (uses shared libs)"; - break; - default: - if (xph_offset > fsize) { - /* Maybe warn here? */ - continue; - } - break; - } - - /* Things we can determine when we seek */ - switch (xph_type) { - case PT_NOTE: - if ((align = xph_align) & 0x80000000UL) { - if (file_printf(ms, - ", invalid note alignment 0x%lx", - (unsigned long)align) == -1) - return -1; - align = 4; - } - if (sh_num) - break; - /* - * This is a PT_NOTE section; loop through all the notes - * in the section. - */ - if (FINFO_LSEEK_FUNC(fd, xph_offset, SEEK_SET) == (off_t)-1) { - file_badseek(ms); - return -1; - } - bufsize = FINFO_READ_FUNC(fd, nbuf, ((xph_filesz < sizeof(nbuf)) ? - xph_filesz : sizeof(nbuf))); - if (bufsize == -1) { - file_badread(ms); - return -1; - } - offset = 0; - for (;;) { - if (offset >= (size_t)bufsize) - break; - offset = donote(ms, nbuf, offset, - (size_t)bufsize, clazz, swap, align, - flags); - if (offset == 0) - break; - } - break; - default: - break; - } - } - if (file_printf(ms, ", %s linked%s", linking_style, shared_libraries) - == -1) - return -1; - return 0; -} - - -protected int -file_tryelf(struct magic_set *ms, int fd, const unsigned char *buf, - size_t nbytes) -{ - union { - int32_t l; - char c[sizeof (int32_t)]; - } u; - int clazz; - int swap; - struct stat st; - off_t fsize; - int flags = 0; - Elf32_Ehdr elf32hdr; - Elf64_Ehdr elf64hdr; - uint16_t type; - - if (ms->flags & (MAGIC_MIME|MAGIC_APPLE)) - return 0; - /* - * ELF executables have multiple section headers in arbitrary - * file locations and thus file(1) cannot determine it from easily. - * Instead we traverse thru all section headers until a symbol table - * one is found or else the binary is stripped. - * Return immediately if it's not ELF (so we avoid pipe2file unless needed). - */ - if (buf[EI_MAG0] != ELFMAG0 - || (buf[EI_MAG1] != ELFMAG1 && buf[EI_MAG1] != OLFMAG1) - || buf[EI_MAG2] != ELFMAG2 || buf[EI_MAG3] != ELFMAG3) - return 0; - - /* - * If we cannot seek, it must be a pipe, socket or fifo. - */ - if((FINFO_LSEEK_FUNC(fd, (off_t)0, SEEK_SET) == (off_t)-1) && (errno == ESPIPE)) - fd = file_pipe2file(ms, fd, buf, nbytes); - - if (fstat(fd, &st) == -1) { - file_badread(ms); - return -1; - } - fsize = st.st_size; - - clazz = buf[EI_CLASS]; - - switch (clazz) { - case ELFCLASS32: -#undef elf_getu -#define elf_getu(a, b) elf_getu32(a, b) -#undef elfhdr -#define elfhdr elf32hdr -#include "elfclass.h" - case ELFCLASS64: -#undef elf_getu -#define elf_getu(a, b) elf_getu64(a, b) -#undef elfhdr -#define elfhdr elf64hdr -#include "elfclass.h" - default: - if (file_printf(ms, ", unknown class %d", clazz) == -1) - return -1; - break; - } - return 0; -} -#endif debian/patches/bug69218.patch0000664000000000000000000000136112514151030013020 0ustar From 809610f5ea38a83b284e1125d1fff129bdd615e7 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 4 Apr 2015 15:03:46 -0700 Subject: [PATCH] Fix bug #68486 and bug #69218 (segfault in apache2handler with apache 2.4) --- sapi/apache2handler/sapi_apache2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c index e97f11c..cfebc5f 100644 --- a/sapi/apache2handler/sapi_apache2.c +++ b/sapi/apache2handler/sapi_apache2.c @@ -688,6 +688,7 @@ zend_first_try { } zend_end_try(); } apr_brigade_cleanup(brigade); + apr_pool_cleanup_run(r->pool, (void *)&SG(server_context), php_server_context_cleanup); } else { ctx->r = parent_req; } -- 2.1.4 debian/patches/CVE-2016-4343.patch0000664000000000000000000000401412717366530013247 0ustar Backport of: From 4c2424eb24b0178456acc404dbfff528cdc44197 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Thu, 14 Jan 2016 22:58:40 -0800 Subject: [PATCH] Fixed bug #71331 - Uninitialized pointer in phar_make_dirstream() --- ext/phar/dirstream.c | 3 ++- ext/phar/tar.c | 2 +- ext/phar/tests/bug71331.phpt | 15 +++++++++++++++ ext/phar/tests/bug71331.tar | Bin 0 -> 2560 bytes 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 ext/phar/tests/bug71331.phpt create mode 100644 ext/phar/tests/bug71331.tar Index: php5-5.5.9+dfsg/ext/phar/dirstream.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/dirstream.c 2016-05-19 12:42:19.433768176 -0400 +++ php5-5.5.9+dfsg/ext/phar/dirstream.c 2016-05-19 12:43:10.050440786 -0400 @@ -207,6 +207,7 @@ zend_hash_internal_pointer_reset(manifest); while (FAILURE != zend_hash_has_more_elements(manifest)) { + keylen = 0; if (HASH_KEY_NON_EXISTENT == zend_hash_get_current_key_ex(manifest, &key, &keylen, &unused, 0, NULL)) { break; } @@ -214,7 +215,7 @@ PHAR_STR(key, str_key); if (keylen <= (uint)dirlen) { - if (keylen < (uint)dirlen || !strncmp(str_key, dir, dirlen)) { + if (keylen == 0 || keylen < (uint)dirlen || !strncmp(str_key, dir, dirlen)) { PHAR_STR_FREE(str_key); if (SUCCESS != zend_hash_move_forward(manifest)) { break; Index: php5-5.5.9+dfsg/ext/phar/tar.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/tar.c 2016-05-19 12:42:19.433768176 -0400 +++ php5-5.5.9+dfsg/ext/phar/tar.c 2016-05-19 12:42:19.433768176 -0400 @@ -347,7 +347,7 @@ entry.filename_len = entry.uncompressed_filesize; /* Check for overflow - bug 61065 */ - if (entry.filename_len == UINT_MAX) { + if (entry.filename_len == UINT_MAX || entry.filename_len == 0) { if (error) { spprintf(error, 4096, "phar error: \"%s\" is a corrupted tar file (invalid entry size)", fname); } debian/patches/CVE-2015-4022.patch0000664000000000000000000001543512543257225013246 0ustar From ac2832935435556dc593784cd0087b5e576bbe4d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 29 Apr 2015 21:57:33 -0700 Subject: [PATCH] Fix bug #69545 - avoid overflow when reading list --- ext/ftp/ftp.c | 82 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 41 insertions(+), 41 deletions(-) Index: php5-5.6.4+dfsg/ext/ftp/ftp.c =================================================================== --- php5-5.6.4+dfsg.orig/ext/ftp/ftp.c 2015-06-25 11:59:44.784893239 -0400 +++ php5-5.6.4+dfsg/ext/ftp/ftp.c 2015-06-25 11:59:44.784893239 -0400 @@ -188,9 +188,9 @@ SSL_shutdown(ftp->ssl_handle); SSL_free(ftp->ssl_handle); } -#endif +#endif closesocket(ftp->fd); - } + } ftp_gc(ftp); efree(ftp); return NULL; @@ -262,7 +262,7 @@ if (!ftp_getresp(ftp)) { return 0; } - + if (ftp->resp != 234) { if (!ftp_putcmd(ftp, "AUTH", "SSL")) { return 0; @@ -270,7 +270,7 @@ if (!ftp_getresp(ftp)) { return 0; } - + if (ftp->resp != 334) { return 0; } else { @@ -278,7 +278,7 @@ ftp->use_ssl_for_data = 1; } } - + ctx = SSL_CTX_new(SSLv23_client_method()); if (ctx == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to create the SSL context"); @@ -325,8 +325,8 @@ if (!ftp_getresp(ftp)) { return 0; } - - ftp->use_ssl_for_data = (ftp->resp >= 200 && ftp->resp <=299); + + ftp->use_ssl_for_data = (ftp->resp >= 200 && ftp->resp <=299); } } #endif @@ -360,7 +360,7 @@ { if (ftp == NULL) { return 0; - } + } ftp_gc(ftp); @@ -395,7 +395,7 @@ if (!ftp_putcmd(ftp, "SYST", NULL)) { return NULL; } - if (!ftp_getresp(ftp) || ftp->resp != 215) { + if (!ftp_getresp(ftp) || ftp->resp != 215) { return NULL; } syst = ftp->inbuf; @@ -431,14 +431,14 @@ if (!ftp_putcmd(ftp, "PWD", NULL)) { return NULL; } - if (!ftp_getresp(ftp) || ftp->resp != 257) { + if (!ftp_getresp(ftp) || ftp->resp != 257) { return NULL; } /* copy out the pwd from response */ - if ((pwd = strchr(ftp->inbuf, '"')) == NULL) { + if ((pwd = strchr(ftp->inbuf, '"')) == NULL) { return NULL; } - if ((end = strrchr(++pwd, '"')) == NULL) { + if ((end = strrchr(++pwd, '"')) == NULL) { return NULL; } ftp->pwd = estrndup(pwd, end - pwd); @@ -608,7 +608,7 @@ if (!ftp_getresp(ftp) || ftp->resp != 200) { return 0; } - + return 1; } /* }}} */ @@ -625,7 +625,7 @@ } snprintf(buffer, sizeof(buffer) - 1, "%ld", size); - + if (!ftp_putcmd(ftp, "ALLO", buffer)) { return 0; } @@ -642,7 +642,7 @@ return 0; } - return 1; + return 1; } /* }}} */ @@ -674,7 +674,7 @@ if (ftp == NULL) { return 0; } - if (type == ftp->type) { + if (type == ftp->type) { return 1; } if (type == FTPTYPE_ASCII) { @@ -765,7 +765,7 @@ if (!ftp_putcmd(ftp, "PASV", NULL)) { return 0; } - if (!ftp_getresp(ftp) || ftp->resp != 227) { + if (!ftp_getresp(ftp) || ftp->resp != 227) { return 0; } /* parse out the IP and port */ @@ -807,7 +807,7 @@ if ((data = ftp_getdata(ftp TSRMLS_CC)) == NULL) { goto bail; } - + ftp->data = data; if (resumepos > 0) { @@ -900,7 +900,7 @@ if ((data = ftp_getdata(ftp TSRMLS_CC)) == NULL) { goto bail; } - ftp->data = data; + ftp->data = data; if (startpos > 0) { snprintf(arg, sizeof(arg), "%ld", startpos); @@ -1101,7 +1101,7 @@ if (strpbrk(cmd, "\r\n")) { return 0; - } + } /* build the output buffer */ if (args && args[0]) { /* "cmd args\r\n\0" */ @@ -1247,7 +1247,7 @@ #if HAVE_OPENSSL_EXT if (ftp->use_ssl && ftp->fd == s && ftp->ssl_active) { sent = SSL_write(ftp->ssl_handle, buf, size); - } else if (ftp->use_ssl && ftp->fd != s && ftp->use_ssl_for_data && ftp->data->ssl_active) { + } else if (ftp->use_ssl && ftp->fd != s && ftp->use_ssl_for_data && ftp->data->ssl_active) { sent = SSL_write(ftp->data->ssl_handle, buf, size); } else { #endif @@ -1287,14 +1287,14 @@ #if HAVE_OPENSSL_EXT if (ftp->use_ssl && ftp->fd == s && ftp->ssl_active) { nr_bytes = SSL_read(ftp->ssl_handle, buf, len); - } else if (ftp->use_ssl && ftp->fd != s && ftp->use_ssl_for_data && ftp->data->ssl_active) { + } else if (ftp->use_ssl && ftp->fd != s && ftp->use_ssl_for_data && ftp->data->ssl_active) { nr_bytes = SSL_read(ftp->data->ssl_handle, buf, len); } else { #endif nr_bytes = recv(s, buf, len, 0); #if HAVE_OPENSSL_EXT } -#endif +#endif return (nr_bytes); } /* }}} */ @@ -1511,7 +1511,7 @@ data_accepted: #if HAVE_OPENSSL_EXT - + /* now enable ssl if we need to */ if (ftp->use_ssl && ftp->use_ssl_for_data) { ctx = SSL_CTX_new(SSLv23_client_method()); @@ -1531,23 +1531,23 @@ SSL_CTX_free(ctx); return 0; } - - + + SSL_set_fd(data->ssl_handle, data->fd); if (ftp->old_ssl) { SSL_copy_session_id(data->ssl_handle, ftp->ssl_handle); } - + if (SSL_connect(data->ssl_handle) <= 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "data_accept: SSL/TLS handshake failed"); SSL_shutdown(data->ssl_handle); SSL_free(data->ssl_handle); return 0; } - + data->ssl_active = 1; - } + } #endif @@ -1562,14 +1562,14 @@ { #if HAVE_OPENSSL_EXT SSL_CTX *ctx; -#endif +#endif if (data == NULL) { return NULL; } if (data->listener != -1) { #if HAVE_OPENSSL_EXT if (data->ssl_active) { - + ctx = SSL_get_SSL_CTX(data->ssl_handle); SSL_CTX_free(ctx); @@ -1577,9 +1577,9 @@ SSL_free(data->ssl_handle); data->ssl_active = 0; } -#endif +#endif closesocket(data->listener); - } + } if (data->fd != -1) { #if HAVE_OPENSSL_EXT if (data->ssl_active) { @@ -1590,9 +1590,9 @@ SSL_free(data->ssl_handle); data->ssl_active = 0; } -#endif +#endif closesocket(data->fd); - } + } if (ftp) { ftp->data = NULL; } @@ -1610,8 +1610,8 @@ databuf_t *data = NULL; char *ptr; int ch, lastch; - int size, rcvd; - int lines; + size_t size, rcvd; + size_t lines; char **ret = NULL; char **entry; char *text; @@ -1629,7 +1629,7 @@ if ((data = ftp_getdata(ftp TSRMLS_CC)) == NULL) { goto bail; } - ftp->data = data; + ftp->data = data; if (!ftp_putcmd(ftp, cmd, path)) { goto bail; @@ -1653,7 +1653,7 @@ lines = 0; lastch = 0; while ((rcvd = my_recv(ftp, data->fd, data->buf, FTP_BUFSIZE))) { - if (rcvd == -1) { + if (rcvd == -1 || rcvd > ((size_t)(-1))-size) { goto bail; } @@ -1858,7 +1858,7 @@ if (!ftp_getresp(ftp) || (ftp->resp != 150 && ftp->resp != 125)) { goto bail; } - if ((data = data_accept(data, ftp TSRMLS_CC)) == NULL) { + if ((data = data_accept(data, ftp TSRMLS_CC)) == NULL) { goto bail; } ftp->data = data; @@ -1914,7 +1914,7 @@ goto bail; } ftp->data = data_close(ftp, ftp->data); - + if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) { goto bail; } debian/patches/CVE-2016-7125.patch0000664000000000000000000000726112773246305013256 0ustar From 8763c6090d627d8bb0ee1d030c30e58f406be9ce Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 3 Aug 2016 00:30:12 -0700 Subject: [PATCH] Fix bug #72681 - consume data even if we're not storing them --- ext/session/session.c | 25 ++++++++++++++++++------- ext/session/tests/bug72681.phpt | 16 ++++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 ext/session/tests/bug72681.phpt Index: php5-5.5.9+dfsg/ext/session/session.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/session/session.c 2016-09-29 13:17:55.201617675 -0400 +++ php5-5.5.9+dfsg/ext/session/session.c 2016-09-29 13:17:55.197617630 -0400 @@ -921,11 +921,13 @@ int namelen; int has_value; php_unserialize_data_t var_hash; + int skip = 0; PHP_VAR_UNSERIALIZE_INIT(var_hash); for (p = val; p < endptr; ) { zval **tmp; + skip = 0; namelen = ((unsigned char)(*p)) & (~PS_BIN_UNDEF); if (namelen < 0 || namelen > PS_BIN_MAX || (p + namelen) >= endptr) { @@ -941,22 +943,25 @@ if (zend_hash_find(&EG(symbol_table), name, namelen + 1, (void **) &tmp) == SUCCESS) { if ((Z_TYPE_PP(tmp) == IS_ARRAY && Z_ARRVAL_PP(tmp) == &EG(symbol_table)) || *tmp == PS(http_session_vars)) { - efree(name); - continue; + skip = 1; } } if (has_value) { ALLOC_INIT_ZVAL(current); if (php_var_unserialize(¤t, (const unsigned char **) &p, (const unsigned char *) endptr, &var_hash TSRMLS_CC)) { - php_set_session_var(name, namelen, current, &var_hash TSRMLS_CC); + if (!skip) { + php_set_session_var(name, namelen, current, &var_hash TSRMLS_CC); + } } else { PHP_VAR_UNSERIALIZE_DESTROY(var_hash); return FAILURE; } var_push_dtor_no_addref(&var_hash, ¤t); } - PS_ADD_VARL(name, namelen); + if (!skip) { + PS_ADD_VARL(name, namelen); + } efree(name); } @@ -1013,6 +1018,7 @@ int namelen; int has_value; php_unserialize_data_t var_hash; + int skip = 0; PHP_VAR_UNSERIALIZE_INIT(var_hash); @@ -1021,6 +1027,7 @@ while (p < endptr) { zval **tmp; q = p; + skip = 0; while (*q != PS_DELIMITER) { if (++q >= endptr) goto break_outer_loop; } @@ -1037,14 +1044,16 @@ if (zend_hash_find(&EG(symbol_table), name, namelen + 1, (void **) &tmp) == SUCCESS) { if ((Z_TYPE_PP(tmp) == IS_ARRAY && Z_ARRVAL_PP(tmp) == &EG(symbol_table)) || *tmp == PS(http_session_vars)) { - goto skip; + skip = 1; } } if (has_value) { ALLOC_INIT_ZVAL(current); if (php_var_unserialize(¤t, (const unsigned char **) &q, (const unsigned char *) endptr, &var_hash TSRMLS_CC)) { - php_set_session_var(name, namelen, current, &var_hash TSRMLS_CC); + if (!skip) { + php_set_session_var(name, namelen, current, &var_hash TSRMLS_CC); + } } else { var_push_dtor_no_addref(&var_hash, ¤t); efree(name); @@ -1053,7 +1062,9 @@ } var_push_dtor_no_addref(&var_hash, ¤t); } - PS_ADD_VARL(name, namelen); + if (!skip) { + PS_ADD_VARL(name, namelen); + } skip: efree(name); Index: php5-5.5.9+dfsg/ext/session/tests/bug72681.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/session/tests/bug72681.phpt 2016-09-29 13:17:55.197617630 -0400 @@ -0,0 +1,16 @@ +--TEST-- +Bug #72681: PHP Session Data Injection Vulnerability +--SKIPIF-- + +--FILE-- + +--EXPECT-- +array(0) { +} debian/patches/CVE-2015-5590.patch0000664000000000000000000000325112602473203013242 0ustar From 6dedeb40db13971af45276f80b5375030aa7e76f Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 4 Jul 2015 23:47:48 -0700 Subject: [PATCH] Fix bug #69923 - Buffer overflow and stack smashing error in phar_fix_filepath --- ext/phar/phar.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) Index: php5-5.5.9+dfsg/ext/phar/phar.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar.c 2015-09-29 07:31:13.289698629 -0400 +++ php5-5.5.9+dfsg/ext/phar/phar.c 2015-09-29 07:31:13.289698629 -0400 @@ -2140,7 +2140,7 @@ */ char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC) /* {{{ */ { - char newpath[MAXPATHLEN]; + char *newpath; int newpath_len; char *ptr; char *tok; @@ -2148,8 +2148,10 @@ if (PHAR_G(cwd_len) && use_cwd && path_length > 2 && path[0] == '.' && path[1] == '/') { newpath_len = PHAR_G(cwd_len); + newpath = emalloc(strlen(path) + newpath_len + 1); memcpy(newpath, PHAR_G(cwd), newpath_len); } else { + newpath = emalloc(strlen(path) + 2); newpath[0] = '/'; newpath_len = 1; } @@ -2172,6 +2174,7 @@ if (*tok == '.') { efree(path); *new_len = 1; + efree(newpath); return estrndup("/", 1); } break; @@ -2179,9 +2182,11 @@ if (tok[0] == '.' && tok[1] == '.') { efree(path); *new_len = 1; + efree(newpath); return estrndup("/", 1); } } + efree(newpath); return path; } @@ -2230,7 +2235,8 @@ efree(path); *new_len = newpath_len; - return estrndup(newpath, newpath_len); + newpath[newpath_len] = '\0'; + return erealloc(newpath, newpath_len + 1); } /* }}} */ debian/patches/CVE-2016-5094.patch0000664000000000000000000000152712746376475013274 0ustar From 0da8b8b801f9276359262f1ef8274c7812d3dfda Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 15 May 2016 23:26:51 -0700 Subject: [PATCH] Fix bug #72135 - don't create strings with lengths outside int range --- ext/standard/html.c | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/ext/standard/html.c b/ext/standard/html.c index 72423b5..81d8aff 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -1444,6 +1444,10 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) } replaced = php_escape_html_entities_ex(str, str_len, &new_len, all, (int) flags, hint_charset, double_encode TSRMLS_CC); + if (new_len > INT_MAX) { + efree(replaced); + RETURN_FALSE; + } RETVAL_STRINGL(replaced, (int)new_len, 0); } /* }}} */ debian/patches/CVE-2015-8835.patch0000664000000000000000000000352312704221170013246 0ustar From c96d08b27226193dd51f2b50e84272235c6aaa69 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 26 Jul 2015 16:44:18 -0700 Subject: [PATCH] Fix bug #70081: check types for SOAP variables --- ext/soap/php_http.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) Index: php5-5.5.9+dfsg/ext/soap/php_http.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/soap/php_http.c 2016-04-15 13:17:01.050656960 -0400 +++ php5-5.5.9+dfsg/ext/soap/php_http.c 2016-04-15 13:18:09.619530655 -0400 @@ -821,18 +821,21 @@ zend_hash_internal_pointer_reset(Z_ARRVAL_PP(cookies)); smart_str_append_const(&soap_headers, "Cookie: "); for (i = 0; i < n; i++) { + ulong numindx; + int res = zend_hash_get_current_key(Z_ARRVAL_PP(cookies), &key, &numindx, FALSE); zend_hash_get_current_data(Z_ARRVAL_PP(cookies), (void **)&data); - zend_hash_get_current_key(Z_ARRVAL_PP(cookies), &key, NULL, FALSE); - if (Z_TYPE_PP(data) == IS_ARRAY) { + if (res == HASH_KEY_IS_STRING && Z_TYPE_PP(data) == IS_ARRAY) { zval** value; if (zend_hash_index_find(Z_ARRVAL_PP(data), 0, (void**)&value) == SUCCESS && Z_TYPE_PP(value) == IS_STRING) { zval **tmp; if ((zend_hash_index_find(Z_ARRVAL_PP(data), 1, (void**)&tmp) == FAILURE || + Z_TYPE_PP(tmp) != IS_STRING || strncmp(phpurl->path?phpurl->path:"/",Z_STRVAL_PP(tmp),Z_STRLEN_PP(tmp)) == 0) && (zend_hash_index_find(Z_ARRVAL_PP(data), 2, (void**)&tmp) == FAILURE || + Z_TYPE_PP(tmp) != IS_STRING || in_domain(phpurl->host,Z_STRVAL_PP(tmp))) && (use_ssl || zend_hash_index_find(Z_ARRVAL_PP(data), 3, (void**)&tmp) == FAILURE)) { smart_str_appendl(&soap_headers, key, strlen(key)); debian/patches/fix-68185-inconsistent-insteadof-definition.patch0000664000000000000000000000170312563127602021742 0ustar Description: Fix #68185 - Inconsistent insteadof definition [PATCH] Fix #68185 - Inconsistent insteadof definition Use correct indexin variable Author: Julien Pauli Origin: http://git.php.net/?p=php-src.git;a=patch;h=cd3b46f28af49e5eaaa687d5d186e641ce147853 Bug: https://bugs.php.net/bug.php?id=68185 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1474276 Last-Update: 20150813 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4113,7 +4113,7 @@ /* make sure that the trait method is not from a class mentioned in exclude_from_classes, for consistency */ - if (cur_precedence->trait_method->ce == cur_precedence->exclude_from_classes[i]) { + if (cur_precedence->trait_method->ce == cur_precedence->exclude_from_classes[j]) { zend_error(E_COMPILE_ERROR, "Inconsistent insteadof definition. " "The method %s is to be used from %s, but %s is also on the exclude list", debian/patches/CVE-2015-4024.patch0000664000000000000000000000657512543257232013253 0ustar From 4605d536d23b00813d11cc906bb48d39bdcf5f25 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 9 May 2015 23:04:25 -0700 Subject: [PATCH] Fixed bug #69364 - use smart_str to assemble strings --- main/rfc1867.c | 51 +++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 24 deletions(-) Index: php5-5.5.12+dfsg/main/rfc1867.c =================================================================== --- php5-5.5.12+dfsg.orig/main/rfc1867.c 2015-06-26 08:43:04.905707194 -0400 +++ php5-5.5.12+dfsg/main/rfc1867.c 2015-06-26 08:43:04.905707194 -0400 @@ -33,6 +33,7 @@ #include "php_variables.h" #include "rfc1867.h" #include "ext/standard/php_string.h" +#include "ext/standard/php_smart_str.h" #define DEBUG_FILE_UPLOAD ZEND_DEBUG @@ -398,8 +399,9 @@ static int multipart_buffer_headers(multipart_buffer *self, zend_llist *header TSRMLS_DC) { char *line; - mime_header_entry prev_entry = {0}, entry; - int prev_len, cur_len; + mime_header_entry entry = {0}; + smart_str buf_value = {0}; + char *key = NULL; /* didn't find boundary, abort */ if (!find_boundary(self, self->boundary TSRMLS_CC)) { @@ -411,11 +413,10 @@ while( (line = get_line(self TSRMLS_CC)) && line[0] != '\0' ) { /* add header to table */ - char *key = line; char *value = NULL; if (php_rfc1867_encoding_translation(TSRMLS_C)) { - self->input_encoding = zend_multibyte_encoding_detector(line, strlen(line), self->detect_order, self->detect_order_size TSRMLS_CC); + self->input_encoding = zend_multibyte_encoding_detector((unsigned char *)line, strlen(line), self->detect_order, self->detect_order_size TSRMLS_CC); } /* space in the beginning means same header */ @@ -424,31 +425,33 @@ } if (value) { - *value = 0; - do { value++; } while(isspace(*value)); - - entry.value = estrdup(value); - entry.key = estrdup(key); - - } else if (zend_llist_count(header)) { /* If no ':' on the line, add to previous line */ - - prev_len = strlen(prev_entry.value); - cur_len = strlen(line); - - entry.value = emalloc(prev_len + cur_len + 1); - memcpy(entry.value, prev_entry.value, prev_len); - memcpy(entry.value + prev_len, line, cur_len); - entry.value[cur_len + prev_len] = '\0'; + if(buf_value.c && key) { + /* new entry, add the old one to the list */ + smart_str_0(&buf_value); + entry.key = key; + entry.value = buf_value.c; + zend_llist_add_element(header, &entry); + buf_value.c = NULL; + key = NULL; + } - entry.key = estrdup(prev_entry.key); + *value = '\0'; + do { value++; } while(isspace(*value)); - zend_llist_remove_tail(header); + key = estrdup(line); + smart_str_appends(&buf_value, value); + } else if (buf_value.c) { /* If no ':' on the line, add to previous line */ + smart_str_appends(&buf_value, line); } else { continue; } - + } + if(buf_value.c && key) { + /* add the last one to the list */ + smart_str_0(&buf_value); + entry.key = key; + entry.value = buf_value.c; zend_llist_add_element(header, &entry); - prev_entry = entry; } return 1; @@ -884,7 +887,7 @@ if (count == PG(max_input_vars) + 1) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Input variables exceeded %ld. To increase the limit change max_input_vars in php.ini.", PG(max_input_vars)); } - + if (php_rfc1867_callback != NULL) { multipart_event_formdata event_formdata; debian/patches/bug71906.patch0000664000000000000000000000315012704222354013024 0ustar From 64f42c73efc58e88671ad76b6b6bc8e2b62713e1 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 28 Mar 2016 01:22:37 -0700 Subject: [PATCH] Fixed bug #71906: AddressSanitizer: negative-size-param (-1) in mbfl_strcut --- ext/mbstring/libmbfl/mbfl/mbfilter.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c index 3b14727..4986472 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfilter.c +++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c @@ -1501,7 +1501,7 @@ mbfl_strcut( if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) { from &= -2; - if (from + length >= string->len) { + if (length >= string->len - from) { length = string->len - from; } @@ -1510,14 +1510,14 @@ mbfl_strcut( } else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) { from &= -4; - if (from + length >= string->len) { + if (length >= string->len - from) { length = string->len - from; } start = string->val + from; end = start + (length & -4); } else if ((encoding->flag & MBFL_ENCTYPE_SBCS)) { - if (from + length >= string->len) { + if (length >= string->len - from) { length = string->len - from; } @@ -1539,7 +1539,7 @@ mbfl_strcut( start = p; /* search end position */ - if ((start - string->val) + length >= (int)string->len) { + if (length >= (int)string->len - (start - string->val)) { end = string->val + string->len; } else { for (q = p + length; p < q; p += (m = mbtab[*p])); debian/patches/libdb_is_-ldb0000664000000000000000000000111512300436054013202 0ustar Description: Let configure check detect version-less libdbs to support newer versions without patching the configure code. Origin: vendor Forwarded: no Last-Update: 2010-01-18 --- php5.orig/ext/dba/config.m4 +++ php5/ext/dba/config.m4 @@ -362,7 +362,7 @@ if test "$PHP_DB4" != "no"; then break fi done - PHP_DBA_DB_CHECK(4, db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) + PHP_DBA_DB_CHECK(4, db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) fi PHP_DBA_STD_RESULT(db4,Berkeley DB4) debian/patches/CVE-2016-6297.patch0000664000000000000000000000250012746413551013255 0ustar Description: fix integer overflow in php_stream_zip_opener Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=81406c0c1d45f75fcc7972ed974d2597abb0b9e9 Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=8ebdb1f5fd19cb15dd6ac7700c781ede5dcbba95 Bug: https://bugs.php.net/bug.php?id=72520 Index: php5-5.5.9+dfsg/ext/zip/zip_stream.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/zip/zip_stream.c 2014-02-05 05:00:36.000000000 -0500 +++ php5-5.5.9+dfsg/ext/zip/zip_stream.c 2016-07-28 08:55:59.659839504 -0400 @@ -101,13 +101,13 @@ { struct zip_stat sb; const char *path = stream->orig_path; - int path_len = strlen(stream->orig_path); + size_t path_len = strlen(stream->orig_path); char *file_basename; size_t file_basename_len; char file_dirname[MAXPATHLEN]; struct zip *za; char *fragment; - int fragment_len; + size_t fragment_len; int err; fragment = strchr(path, '#'); @@ -241,7 +241,7 @@ char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC) { - int path_len; + size_t path_len; char *file_basename; size_t file_basename_len; @@ -250,7 +250,7 @@ struct zip *za; struct zip_file *zf = NULL; char *fragment; - int fragment_len; + size_t fragment_len; int err; php_stream *stream = NULL; debian/patches/CVE-2016-5399.patch0000664000000000000000000000371012746377075013275 0ustar From f3feddb5b45b5abd93abb1a95044b7e099d51c84 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 18 Jul 2016 22:20:45 -0700 Subject: [PATCH] Partial fix for bug #72613 - do not treat negative returns from bz2 as size_t --- ext/bz2/bz2.c | 80 +++++++++++++++++++++++--------------------- ext/bz2/tests/72613.bz2 | Bin 0 -> 351 bytes ext/bz2/tests/bug72613.phpt | 23 +++++++++++++ 3 files changed, 65 insertions(+), 38 deletions(-) create mode 100644 ext/bz2/tests/72613.bz2 create mode 100644 ext/bz2/tests/bug72613.phpt diff --git a/ext/bz2/bz2.c b/ext/bz2/bz2.c index de3250e..7cfcaa8 100644 --- a/ext/bz2/bz2.c +++ b/ext/bz2/bz2.c @@ -15,7 +15,7 @@ | Author: Sterling Hughes | +----------------------------------------------------------------------+ */ - + /* $Id$ */ #ifdef HAVE_CONFIG_H @@ -137,29 +137,33 @@ struct php_bz2_stream_data_t { static size_t php_bz2iop_read(php_stream *stream, char *buf, size_t count TSRMLS_DC) { struct php_bz2_stream_data_t *self = (struct php_bz2_stream_data_t *) stream->abstract; - size_t ret; - - ret = BZ2_bzread(self->bz_file, buf, count); + int bz2_ret; + + bz2_ret = BZ2_bzread(self->bz_file, buf, count); - if (ret == 0) { + if (bz2_ret < 0) { + stream->eof = 1; + return -1; + } + if (bz2_ret == 0) { stream->eof = 1; } - return ret; + return (size_t)bz2_ret; } static size_t php_bz2iop_write(php_stream *stream, const char *buf, size_t count TSRMLS_DC) { struct php_bz2_stream_data_t *self = (struct php_bz2_stream_data_t *) stream->abstract; - return BZ2_bzwrite(self->bz_file, (char*)buf, count); + return BZ2_bzwrite(self->bz_file, (char*)buf, count); } static int php_bz2iop_close(php_stream *stream, int close_handle TSRMLS_DC) { struct php_bz2_stream_data_t *self = (struct php_bz2_stream_data_t *)stream->abstract; int ret = EOF; - + if (close_handle) { BZ2_bzclose(self->bz_file); } debian/patches/CVE-2015-8994-3.patch0000664000000000000000000000274013141100515013407 0ustar From 9849c97b1bdfd7f0a7c499cad4cf601ebd68cc22 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 17 Nov 2016 01:08:42 +0300 Subject: [PATCH] Accorate handling of too big inodes of chroot directories --- ext/opcache/ZendAccelerator.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) Index: php5-5.5.9+dfsg/ext/opcache/ZendAccelerator.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/opcache/ZendAccelerator.c 2017-08-04 10:14:34.206875561 -0400 +++ php5-5.5.9+dfsg/ext/opcache/ZendAccelerator.c 2017-08-04 10:14:34.202875561 -0400 @@ -2116,18 +2116,14 @@ static void accel_activate(void) if (stat("/", &buf) != 0) { ZCG(root_hash) = 0; } else { - unsigned long x = buf.st_ino; - -#if SIZEOF_LONG == 4 - x = ((x >> 16) ^ x) * 0x45d9f3b; - x = ((x >> 16) ^ x) * 0x45d9f3b; - x = (x >> 16) ^ x; -#elif SIZEOF_LONG == 8 - x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9; - x = (x ^ (x >> 27)) * 0x94d049bb133111eb; - x = x ^ (x >> 31); -#endif - ZCG(root_hash) = x; + ZCG(root_hash) = buf.st_ino; + if (sizeof(buf.st_ino) > sizeof(ZCG(root_hash))) { + if (ZCG(root_hash) != buf.st_ino) { + zend_alter_ini_entry("opcache.enable", sizeof("opcache.enable"), "0", 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_RUNTIME); + zend_accel_error(ACCEL_LOG_WARNING, "Can't cache files in chroot() directory with too big inode"); + return; + } + } } } else { ZCG(root_hash) = 0; debian/patches/CVE-2014-8117.patch0000664000000000000000000000147412501612125013240 0ustar Description: fix denial of service via recursion Origin: other, https://github.com/file/file/commit/6f737ddfadb596d7d4a993f7ed2141ffd664a81c Origin: other, https://github.com/file/file/commit/90018fe22ff8b74a22fcd142225b0a00f3f12677 Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773148 Index: php5-5.5.12+dfsg/ext/fileinfo/libmagic/softmagic.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/fileinfo/libmagic/softmagic.c 2015-03-16 12:47:54.000000000 -0400 +++ php5-5.5.12+dfsg/ext/fileinfo/libmagic/softmagic.c 2015-03-16 13:28:20.933381326 -0400 @@ -1127,7 +1127,7 @@ union VALUETYPE *p = &ms->ms_value; struct mlist ml; - if (recursion_level >= 20) { + if (recursion_level >= 15) { file_error(ms, 0, "recursion nesting exceeded"); return -1; } debian/patches/php-fpm-listen-on-unix-socket.patch0000664000000000000000000000061012300436054017356 0ustar --- php5.orig/sapi/fpm/php-fpm.conf.in +++ php5/sapi/fpm/php-fpm.conf.in @@ -160,7 +160,7 @@ group = @php_fpm_group@ ; specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = 127.0.0.1:9000 +listen = /var/run/php5-fpm.sock ; Set listen(2) backlog. ; Default Value: 65535 (-1 on FreeBSD and OpenBSD) debian/patches/CVE-2015-6837-6838.patch0000664000000000000000000000312512602473457013670 0ustar From 1744be2d17befc69bf00033993f4081852a747d6 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 16 Aug 2015 17:16:15 -0700 Subject: [PATCH] Fix for bug #69782 --- ext/xsl/xsltprocessor.c | 142 +++++++++++++++++++++++++----------------------- 1 file changed, 73 insertions(+), 69 deletions(-) diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c index 67c90f5..d21a8eb 100644 --- a/ext/xsl/xsltprocessor.c +++ b/ext/xsl/xsltprocessor.c @@ -219,15 +219,17 @@ static void xsl_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int t } } } - + if (error == 1) { for (i = nargs - 1; i >= 0; i--) { obj = valuePop(ctxt); - xmlXPathFreeObject(obj); + if (obj) { + xmlXPathFreeObject(obj); + } } return; } - + fci.param_count = nargs - 1; if (fci.param_count > 0) { fci.params = safe_emalloc(fci.param_count, sizeof(zval**), 0); @@ -297,14 +299,16 @@ static void xsl_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int t xmlXPathFreeObject(obj); fci.params[i] = &args[i]; } - + fci.size = sizeof(fci); fci.function_table = EG(function_table); - + obj = valuePop(ctxt); - if (obj->stringval == NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Handler name must be a string"); - xmlXPathFreeObject(obj); + if (obj == NULL || obj->stringval == NULL) { + if (obj) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Handler name must be a string"); + xmlXPathFreeObject(obj); + } valuePush(ctxt, xmlXPathNewString("")); if (fci.param_count > 0) { for (i = 0; i < nargs - 1; i++) { -- 2.1.4 debian/patches/CVE-2016-4342.patch0000664000000000000000000000205412717366344013253 0ustar From 13ad4d3e971807f9a58ab5933182907dc2958539 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 13 Jan 2016 16:32:29 -0800 Subject: [PATCH] Fix bug #71354 - remove UMR when size is 0 --- ext/phar/phar_object.c | 1 + ext/phar/tests/bug71354.phpt | 13 +++++++++++++ ext/phar/tests/bug71354.tar | Bin 0 -> 1536 bytes 3 files changed, 14 insertions(+) create mode 100644 ext/phar/tests/bug71354.phpt create mode 100644 ext/phar/tests/bug71354.tar Index: php5-5.5.9+dfsg/ext/phar/phar_object.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar_object.c 2016-05-19 12:42:10.093644144 -0400 +++ php5-5.5.9+dfsg/ext/phar/phar_object.c 2016-05-19 12:42:10.089644091 -0400 @@ -4882,6 +4882,7 @@ phar_seek_efp(link, 0, SEEK_SET, 0, 0 TSRMLS_CC); Z_TYPE_P(return_value) = IS_STRING; + Z_STRVAL_P(return_value) = NULL; Z_STRLEN_P(return_value) = php_stream_copy_to_mem(fp, &(Z_STRVAL_P(return_value)), link->uncompressed_filesize, 0); if (!Z_STRVAL_P(return_value)) { debian/patches/CVE-2015-2783.patch0000664000000000000000000001454312514151013013243 0ustar Description: fix buffer overflow in unserialize when parsing Phar Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=9faaee66fa493372c7340b1ab05f8fd115131a42 Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=12d3bdee3dfa6605024a72080d8a17c165c5ed24 Bug: https://bugs.php.net/bug.php?id=69324 Index: php5-5.5.12+dfsg/ext/phar/phar.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/phar/phar.c 2015-04-17 05:24:06.379986136 -0400 +++ php5-5.5.12+dfsg/ext/phar/phar.c 2015-04-17 05:24:06.379986136 -0400 @@ -598,52 +598,41 @@ * * Meta-data is in this format: * [len32][data...] - * + * * data is the serialized zval */ -int phar_parse_metadata(char **buffer, zval **metadata, int zip_metadata_len TSRMLS_DC) /* {{{ */ +int phar_parse_metadata(char **buffer, zval **metadata, php_uint32 zip_metadata_len TSRMLS_DC) /* {{{ */ { - const unsigned char *p; - php_uint32 buf_len; php_unserialize_data_t var_hash; - if (!zip_metadata_len) { - PHAR_GET_32(*buffer, buf_len); - } else { - buf_len = zip_metadata_len; - } - - if (buf_len) { + if (zip_metadata_len) { + const unsigned char *p, *p_buff = estrndup(*buffer, zip_metadata_len); + p = p_buff; ALLOC_ZVAL(*metadata); INIT_ZVAL(**metadata); - p = (const unsigned char*) *buffer; PHP_VAR_UNSERIALIZE_INIT(var_hash); - if (!php_var_unserialize(metadata, &p, p + buf_len, &var_hash TSRMLS_CC)) { + if (!php_var_unserialize(metadata, &p, p + zip_metadata_len, &var_hash TSRMLS_CC)) { + efree(p_buff); PHP_VAR_UNSERIALIZE_DESTROY(var_hash); zval_ptr_dtor(metadata); *metadata = NULL; return FAILURE; } - + efree(p_buff); PHP_VAR_UNSERIALIZE_DESTROY(var_hash); if (PHAR_G(persist)) { /* lazy init metadata */ zval_ptr_dtor(metadata); - *metadata = (zval *) pemalloc(buf_len, 1); - memcpy(*metadata, *buffer, buf_len); - *buffer += buf_len; + *metadata = (zval *) pemalloc(zip_metadata_len, 1); + memcpy(*metadata, *buffer, zip_metadata_len); return SUCCESS; } } else { *metadata = NULL; } - if (!zip_metadata_len) { - *buffer += buf_len; - } - return SUCCESS; } /* }}}*/ @@ -653,7 +642,7 @@ * * Parse a new one and add it to the cache, returning either SUCCESS or * FAILURE, and setting pphar to the pointer to the manifest entry - * + * * This is used by phar_open_from_filename to process the manifest, but can be called * directly. */ @@ -664,6 +653,7 @@ phar_entry_info entry; php_uint32 manifest_len, manifest_count, manifest_flags, manifest_index, tmp_len, sig_flags; php_uint16 manifest_ver; + php_uint32 len; long offset; int sig_len, register_alias = 0, temp_alias = 0; char *signature = NULL; @@ -1029,16 +1019,21 @@ mydata->is_persistent = PHAR_G(persist); /* check whether we have meta data, zero check works regardless of byte order */ + PHAR_GET_32(buffer, len); if (mydata->is_persistent) { - PHAR_GET_32(buffer, mydata->metadata_len); - if (phar_parse_metadata(&buffer, &mydata->metadata, mydata->metadata_len TSRMLS_CC) == FAILURE) { - MAPPHAR_FAIL("unable to read phar metadata in .phar file \"%s\""); - } - } else { - if (phar_parse_metadata(&buffer, &mydata->metadata, 0 TSRMLS_CC) == FAILURE) { - MAPPHAR_FAIL("unable to read phar metadata in .phar file \"%s\""); + mydata->metadata_len = len; + if(!len) { + /* FIXME: not sure why this is needed but removing it breaks tests */ + PHAR_GET_32(buffer, len); } } + if(len > endbuffer - buffer) { + MAPPHAR_FAIL("internal corruption of phar \"%s\" (trying to read past buffer end)"); + } + if (phar_parse_metadata(&buffer, &mydata->metadata, len TSRMLS_CC) == FAILURE) { + MAPPHAR_FAIL("unable to read phar metadata in .phar file \"%s\""); + } + buffer += len; /* set up our manifest */ zend_hash_init(&mydata->manifest, manifest_count, @@ -1073,7 +1068,7 @@ entry.manifest_pos = manifest_index; } - if (buffer + entry.filename_len + 20 > endbuffer) { + if (entry.filename_len + 20 > endbuffer - buffer) { MAPPHAR_FAIL("internal corruption of phar \"%s\" (truncated manifest entry)"); } @@ -1109,19 +1104,20 @@ entry.flags |= PHAR_ENT_PERM_DEF_DIR; } + PHAR_GET_32(buffer, len); if (entry.is_persistent) { - PHAR_GET_32(buffer, entry.metadata_len); - if (!entry.metadata_len) buffer -= 4; - if (phar_parse_metadata(&buffer, &entry.metadata, entry.metadata_len TSRMLS_CC) == FAILURE) { - pefree(entry.filename, entry.is_persistent); - MAPPHAR_FAIL("unable to read file metadata in .phar file \"%s\""); - } + entry.metadata_len = len; } else { - if (phar_parse_metadata(&buffer, &entry.metadata, 0 TSRMLS_CC) == FAILURE) { - pefree(entry.filename, entry.is_persistent); - MAPPHAR_FAIL("unable to read file metadata in .phar file \"%s\""); - } + entry.metadata_len = 0; } + if (len > endbuffer - buffer) { + MAPPHAR_FAIL("internal corruption of phar \"%s\" (truncated manifest entry)"); + } + if (phar_parse_metadata(&buffer, &entry.metadata, len TSRMLS_CC) == FAILURE) { + pefree(entry.filename, entry.is_persistent); + MAPPHAR_FAIL("unable to read file metadata in .phar file \"%s\""); + } + buffer += len; entry.offset = entry.offset_abs = offset; offset += entry.compressed_filesize; @@ -2239,7 +2235,7 @@ /** * Process a phar stream name, ensuring we can handle any of: - * + * * - whatever.phar * - whatever.phar.gz * - whatever.phar.bz2 Index: php5-5.5.12+dfsg/ext/phar/phar_internal.h =================================================================== --- php5-5.5.12+dfsg.orig/ext/phar/phar_internal.h 2015-04-17 05:24:06.379986136 -0400 +++ php5-5.5.12+dfsg/ext/phar/phar_internal.h 2015-04-17 05:24:06.379986136 -0400 @@ -595,7 +595,7 @@ char *phar_find_in_include_path(char *file, int file_len, phar_archive_data **pphar TSRMLS_DC); char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC); phar_entry_info * phar_open_jit(phar_archive_data *phar, phar_entry_info *entry, char **error TSRMLS_DC); -int phar_parse_metadata(char **buffer, zval **metadata, int zip_metadata_len TSRMLS_DC); +int phar_parse_metadata(char **buffer, zval **metadata, php_uint32 zip_metadata_len TSRMLS_DC); void destroy_phar_manifest_entry(void *pDest); int phar_seek_efp(phar_entry_info *entry, off_t offset, int whence, off_t position, int follow_links TSRMLS_DC); php_stream *phar_get_efp(phar_entry_info *entry, int follow_links TSRMLS_DC); debian/patches/CVE-2018-5712.patch0000664000000000000000000005407713237047564013271 0ustar From 73ca9b37731dd9690ffd9706333b17eaf90ea091 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 2 Jul 2017 13:29:37 -0700 Subject: [PATCH] Fix bug #74782: remove file name from output to avoid XSS --- ext/phar/shortarc.php | 2 +- ext/phar/stub.h | 4 ++-- ext/phar/tests/cache_list/copyonwrite11.phar.phpt | 2 +- ext/phar/tests/phar_commitwrite.phpt | 2 +- ext/phar/tests/phar_convert_repeated.phpt | 2 +- ext/phar/tests/phar_create_in_cwd.phpt | 2 +- ext/phar/tests/phar_createdefaultstub.phpt | 22 +++++++++++----------- ext/phar/tests/phar_offset_check.phpt | 4 ++-- ext/phar/tests/phar_setdefaultstub.phpt | 20 ++++++++++---------- ext/phar/tests/tar/phar_convert_phar.phpt | 6 +++--- ext/phar/tests/tar/phar_convert_phar2.phpt | 6 +++--- ext/phar/tests/tar/phar_convert_phar3.phpt | 6 +++--- ext/phar/tests/tar/phar_convert_phar4.phpt | 6 +++--- ext/phar/tests/zip/phar_convert_phar.phpt | 6 +++--- 14 files changed, 45 insertions(+), 45 deletions(-) diff --git a/ext/phar/shortarc.php b/ext/phar/shortarc.php index 1bf3baa..e5ac8ba 100644 --- a/ext/phar/shortarc.php +++ b/ext/phar/shortarc.php @@ -74,7 +74,7 @@ if (@(isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && ($_ $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt); if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) { header('HTTP/1.0 404 Not Found'); - echo "\n \n File Not Found<title>\n </head>\n <body>\n <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>"; + echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File Not Found</h1>\n </body>\n</html>"; exit; } $b = pathinfo($a); diff --git a/ext/phar/stub.h b/ext/phar/stub.h index 2825142..1edbb06 100644 --- a/ext/phar/stub.h +++ b/ext/phar/stub.h @@ -22,13 +22,13 @@ static inline void phar_get_stub(const char *index_php, const char *web, size_t { static const char newstub0[] = "<?php\n\n$web = '"; static const char newstub1_0[] = "';\n\nif (in_array('phar', stream_get_wrappers()) && class_exists('Phar', 0)) {\nPhar::interceptFileFuncs();\nset_include_path('phar://' . __FILE__ . PATH_SEPARATOR . get_include_path());\nPhar::webPhar(null, $web);\ninclude 'phar://' . __FILE__ . '/' . Extract_Phar::START;\nreturn;\n}\n\nif (@(isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'POST'))) {\nExtract_Phar::go(true);\n$mimes = array(\n'phps' => 2,\n'c' => 'text/plain',\n'cc' => 'text/plain',\n'cpp' => 'text/plain',\n'c++' => 'text/plain',\n'dtd' => 'text/plain',\n'h' => 'text/plain',\n'log' => 'text/plain',\n'rng' => 'text/plain',\n'txt' => 'text/plain',\n'xsd' => 'text/plain',\n'php' => 1,\n'inc' => 1,\n'avi' => 'video/avi',\n'bmp' => 'image/bmp',\n'css' => 'text/css',\n'gif' => 'image/gif',\n'htm' => 'text/html',\n'html' => 'text/html',\n'htmls' => 'text/html',\n'ico' => 'image/x-ico',\n'jpe' => 'image/jpeg',\n'jpg' => 'image/jpeg',\n'jpeg' => 'image/jpeg',\n'js' => 'application/x-javascript',\n'midi' => 'audio/midi',\n'mid' => 'audio/midi',\n'mod' => 'audio/mod',\n'mov' => 'movie/quicktime',\n'mp3' => 'audio/mp3',\n'mpg' => 'video/mpeg',\n'mpeg' => 'video/mpeg',\n'pdf' => 'application/pdf',\n'png' => 'image/png',\n'swf' => 'application/shockwave-flash',\n'tif' => 'image/tiff',\n'tiff' => 'image/tiff',\n'wav' => 'audio/wav',\n'xbm' => 'image/xbm',\n'xml' => 'text/xml',\n);\n\nheader(\"Cache-Control: no-cache, must-revalidate\");\nheader(\"Pragma: no-cache\");\n\n$basename = basename(__FILE__);\nif (!strpos($_SERVER['REQUEST_URI'], $basename)) {\nchdir(Extract_Phar::$temp);\ninclude $web;\nreturn;\n}\n$pt = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], $basename) + strlen($basename));\nif (!$pt || $pt == '/') {\n$pt = $web;\nheader('HTTP/1.1 301 Moved Permanently');\nheader('Location: ' . $_SERVER['REQUEST_URI'] . '/' . $pt);\nexit;\n}\n$a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);\nif (!$a || strlen(dirname($a)) < strlen("; - static const char newstub1_1[] = "Extract_Phar::$temp)) {\nheader('HTTP/1.0 404 Not Found');\necho \"<html>\\n <head>\\n <title>File Not Found<title>\\n </head>\\n <body>\\n <h1>404 - File \", $pt, \" Not Found</h1>\\n </body>\\n</html>\";\nexit;\n}\n$b = pathinfo($a);\nif (!isset($b['extension'])) {\nheader('Content-Type: text/plain');\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\nif (isset($mimes[$b['extension']])) {\nif ($mimes[$b['extension']] === 1) {\ninclude $a;\nexit;\n}\nif ($mimes[$b['extension']] === 2) {\nhighlight_file($a);\nexit;\n}\nheader('Content-Type: ' .$mimes[$b['extension']]);\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\n}\n\nclass Extract_Phar\n{\nstatic $temp;\nstatic $origdir;\nconst GZ = 0x1000;\nconst BZ2 = 0x2000;\nconst MASK = 0x3000;\nconst START = '"; + static const char newstub1_1[] = "Extract_Phar::$temp)) {\nheader('HTTP/1.0 404 Not Found');\necho \"<html>\\n <head>\\n <title>File Not Found<title>\\n </head>\\n <body>\\n <h1>404 - File Not Found</h1>\\n </body>\\n</html>\";\nexit;\n}\n$b = pathinfo($a);\nif (!isset($b['extension'])) {\nheader('Content-Type: text/plain');\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\nif (isset($mimes[$b['extension']])) {\nif ($mimes[$b['extension']] === 1) {\ninclude $a;\nexit;\n}\nif ($mimes[$b['extension']] === 2) {\nhighlight_file($a);\nexit;\n}\nheader('Content-Type: ' .$mimes[$b['extension']]);\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\n}\n\nclass Extract_Phar\n{\nstatic $temp;\nstatic $origdir;\nconst GZ = 0x1000;\nconst BZ2 = 0x2000;\nconst MASK = 0x3000;\nconst START = '"; static const char newstub2[] = "';\nconst LEN = "; static const char newstub3_0[] = ";\n\nstatic function go($return = false)\n{\n$fp = fopen(__FILE__, 'rb');\nfseek($fp, self::LEN);\n$L = unpack('V', $a = (binary)fread($fp, 4));\n$m = (binary)'';\n\ndo {\n$read = 8192;\nif ($L[1] - strlen($m) < 8192) {\n$read = $L[1] - strlen($m);\n}\n$last = (binary)fread($fp, $read);\n$m .= $last;\n} while (strlen($last) && strlen($m) < $L[1]);\n\nif (strlen($m) < $L[1]) {\ndie('ERROR: manifest length read was \"' .\nstrlen($m) .'\" should be \"' .\n$L[1] . '\"');\n}\n\n$info = self::_unpack($m);\n$f = $info['c'];\n\nif ($f & self::GZ) {\nif (!function_exists('gzinflate')) {\ndie('Error: zlib extension is not enabled -' .\n' gzinflate() function needed for zlib-compressed .phars');\n}\n}\n\nif ($f & self::BZ2) {\nif (!function_exists('bzdecompress')) {\ndie('Error: bzip2 extension is not enabled -' .\n' bzdecompress() function needed for bz2-compressed .phars');\n}\n}\n\n$temp = self::tmpdir();\n\nif (!$temp || !is_writable($temp)) {\n$sessionpath = session_save_path();\nif (strpos ($sessionpath, \";\") !== false)\n$sessionpath = substr ($sessionpath, strpos ($sessionpath, \";\")+1);\nif (!file_exists($sessionpath) || !is_dir($sessionpath)) {\ndie('Could not locate temporary directory to extract phar');\n}\n$temp = $sessionpath;\n}\n\n$temp .= '/pharextract/'.basename(__FILE__, '.phar');\nself::$temp = $temp;\nself::$origdir = getcwd();\n@mkdir($temp, 0777, true);\n$temp = realpath($temp);\n\nif (!file_exists($temp . DIRECTORY_SEPARATOR . md5_file(__FILE__))) {\nself::_removeTmpFiles($temp, getcwd());\n@mkdir($temp, 0777, true);\n@file_put_contents($temp . '/' . md5_file(__FILE__), '');\n\nforeach ($info['m'] as $path => $file) {\n$a = !file_exists(dirname($temp . '/' . $path));\n@mkdir(dirname($temp . '/' . $path), 0777, true);\nclearstatcache();\n\nif ($path[strlen($path) - 1] == '/') {\n@mkdir($temp . '/' . $path, 0777);\n} else {\nfile_put_contents($temp . '/' . $path, self::extractFile($path, $file, $fp));\n@chmod($temp . '/' . $path, 0666);\n}\n}\n}\n\nchdir($temp);\n\nif (!$return) {\ninclude self::ST"; static const char newstub3_1[] = "ART;\n}\n}\n\nstatic function tmpdir()\n{\nif (strpos(PHP_OS, 'WIN') !== false) {\nif ($var = getenv('TMP') ? getenv('TMP') : getenv('TEMP')) {\nreturn $var;\n}\nif (is_dir('/temp') || mkdir('/temp')) {\nreturn realpath('/temp');\n}\nreturn false;\n}\nif ($var = getenv('TMPDIR')) {\nreturn $var;\n}\nreturn realpath('/tmp');\n}\n\nstatic function _unpack($m)\n{\n$info = unpack('V', substr($m, 0, 4));\n $l = unpack('V', substr($m, 10, 4));\n$m = substr($m, 14 + $l[1]);\n$s = unpack('V', substr($m, 0, 4));\n$o = 0;\n$start = 4 + $s[1];\n$ret['c'] = 0;\n\nfor ($i = 0; $i < $info[1]; $i++) {\n $len = unpack('V', substr($m, $start, 4));\n$start += 4;\n $savepath = substr($m, $start, $len[1]);\n$start += $len[1];\n $ret['m'][$savepath] = array_values(unpack('Va/Vb/Vc/Vd/Ve/Vf', substr($m, $start, 24)));\n$ret['m'][$savepath][3] = sprintf('%u', $ret['m'][$savepath][3]\n& 0xffffffff);\n$ret['m'][$savepath][7] = $o;\n$o += $ret['m'][$savepath][2];\n$start += 24 + $ret['m'][$savepath][5];\n$ret['c'] |= $ret['m'][$savepath][4] & self::MASK;\n}\nreturn $ret;\n}\n\nstatic function extractFile($path, $entry, $fp)\n{\n$data = '';\n$c = $entry[2];\n\nwhile ($c) {\nif ($c < 8192) {\n$data .= @fread($fp, $c);\n$c = 0;\n} else {\n$c -= 8192;\n$data .= @fread($fp, 8192);\n}\n}\n\nif ($entry[4] & self::GZ) {\n$data = gzinflate($data);\n} elseif ($entry[4] & self::BZ2) {\n$data = bzdecompress($data);\n}\n\nif (strlen($data) != $entry[0]) {\ndie(\"Invalid internal .phar file (size error \" . strlen($data) . \" != \" .\n$stat[7] . \")\");\n}\n\nif ($entry[3] != sprintf(\"%u\", crc32((binary)$data) & 0xffffffff)) {\ndie(\"Invalid internal .phar file (checksum error)\");\n}\n\nreturn $data;\n}\n\nstatic function _removeTmpFiles($temp, $origdir)\n{\nchdir($temp);\n\nforeach (glob('*') as $f) {\nif (file_exists($f)) {\nis_dir($f) ? @rmdir($f) : @unlink($f);\nif (file_exists($f) && is_dir($f)) {\nself::_removeTmpFiles($f, getcwd());\n}\n}\n}\n\n@rmdir($temp);\nclearstatcache();\nchdir($origdir);\n}\n}\n\nExtract_Phar::go();\n__HALT_COMPIL"; static const char newstub3_2[] = "ER(); ?>"; - static const int newstub_len = 6665; + static const int newstub_len = 6655; *len = spprintf(stub, name_len + web_len + newstub_len, "%s%s%s%s%s%s%d%s%s%s", newstub0, web, newstub1_0, newstub1_1, index_php, newstub2, name_len + web_len + newstub_len, newstub3_0, newstub3_1, newstub3_2); } diff --git a/ext/phar/tests/cache_list/copyonwrite11.phar.phpt b/ext/phar/tests/cache_list/copyonwrite11.phar.phpt index 6538816..c3489e4 100644 --- a/ext/phar/tests/cache_list/copyonwrite11.phar.phpt +++ b/ext/phar/tests/cache_list/copyonwrite11.phar.phpt @@ -18,5 +18,5 @@ echo strlen($p2->getStub()),"\n"; echo "ok\n"; __HALT_COMPILER(); ?> " -6685 +6675 ok \ No newline at end of file diff --git a/ext/phar/tests/phar_commitwrite.phpt b/ext/phar/tests/phar_commitwrite.phpt index 36d473e..00343ca 100644 --- a/ext/phar/tests/phar_commitwrite.phpt +++ b/ext/phar/tests/phar_commitwrite.phpt @@ -29,7 +29,7 @@ unlink(dirname(__FILE__) . '/brandnewphar.phar'); __HALT_COMPILER(); ?> --EXPECT-- -int(6683) +int(6673) string(200) "<?php function __autoload($class) { diff --git a/ext/phar/tests/phar_convert_repeated.phpt b/ext/phar/tests/phar_convert_repeated.phpt index e4b1fe4..7880bf4 100644 --- a/ext/phar/tests/phar_convert_repeated.phpt +++ b/ext/phar/tests/phar_convert_repeated.phpt @@ -123,7 +123,7 @@ NULL bool(true) bool(false) bool(false) -int(6683) +int(6673) NULL ================= convertToZip() ===================== bool(false) diff --git a/ext/phar/tests/phar_create_in_cwd.phpt b/ext/phar/tests/phar_create_in_cwd.phpt index 4b0e659..57b2432 100644 --- a/ext/phar/tests/phar_create_in_cwd.phpt +++ b/ext/phar/tests/phar_create_in_cwd.phpt @@ -32,7 +32,7 @@ __HALT_COMPILER(); unlink(dirname(__FILE__) . '/brandnewphar.phar'); ?> --EXPECT-- -int(6683) +int(6673) string(200) "<?php function __autoload($class) { diff --git a/ext/phar/tests/phar_createdefaultstub.phpt b/ext/phar/tests/phar_createdefaultstub.phpt index abc9ad8..f2ee297 100644 --- a/ext/phar/tests/phar_createdefaultstub.phpt +++ b/ext/phar/tests/phar_createdefaultstub.phpt @@ -34,7 +34,7 @@ echo $e->getMessage() . "\n"; ?> ===DONE=== --EXPECT-- -string(6683) "<?php +string(6673) "<?php $web = 'index.php'; @@ -110,7 +110,7 @@ exit; $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt); if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) { header('HTTP/1.0 404 Not Found'); -echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>"; +echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File Not Found</h1>\n </body>\n</html>"; exit; } $b = pathinfo($a); @@ -144,7 +144,7 @@ const GZ = 0x1000; const BZ2 = 0x2000; const MASK = 0x3000; const START = 'index.php'; -const LEN = 6685; +const LEN = 6675; static function go($return = false) { @@ -328,7 +328,7 @@ Extract_Phar::go(); __HALT_COMPILER(); ?>" ============================================================================ ============================================================================ -string(6694) "<?php +string(6684) "<?php $web = 'index.php'; @@ -404,7 +404,7 @@ exit; $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt); if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) { header('HTTP/1.0 404 Not Found'); -echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>"; +echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File Not Found</h1>\n </body>\n</html>"; exit; } $b = pathinfo($a); @@ -438,7 +438,7 @@ const GZ = 0x1000; const BZ2 = 0x2000; const MASK = 0x3000; const START = 'my/custom/thingy.php'; -const LEN = 6696; +const LEN = 6686; static function go($return = false) { @@ -622,7 +622,7 @@ Extract_Phar::go(); __HALT_COMPILER(); ?>" ============================================================================ ============================================================================ -int(7074) +int(7064) ============================================================================ ============================================================================ Illegal filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed @@ -630,7 +630,7 @@ Illegal filename passed in for stub creation, was 401 characters long, and only ============================================================================ ============================================================================ ============================================================================ -string(6696) "<?php +string(6686) "<?php $web = 'the/web.php'; @@ -706,7 +706,7 @@ exit; $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt); if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) { header('HTTP/1.0 404 Not Found'); -echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>"; +echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File Not Found</h1>\n </body>\n</html>"; exit; } $b = pathinfo($a); @@ -740,7 +740,7 @@ const GZ = 0x1000; const BZ2 = 0x2000; const MASK = 0x3000; const START = 'my/custom/thingy.php'; -const LEN = 6698; +const LEN = 6688; static function go($return = false) { @@ -924,6 +924,6 @@ Extract_Phar::go(); __HALT_COMPILER(); ?>" ============================================================================ ============================================================================ -int(7074) +int(7064) Illegal web filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed ===DONE=== diff --git a/ext/phar/tests/phar_offset_check.phpt b/ext/phar/tests/phar_offset_check.phpt index fe12534..303fed1 100644 --- a/ext/phar/tests/phar_offset_check.phpt +++ b/ext/phar/tests/phar_offset_check.phpt @@ -70,8 +70,8 @@ var_dump($phar->getAlias()); Entry .phar/stub.php does not exist Entry .phar/alias.txt does not exist Cannot set stub ".phar/stub.php" directly in phar "%sphar_offset_check.phar.php", use setStub -int(6685) -int(6685) +int(6675) +int(6675) Cannot set alias ".phar/alias.txt" directly in phar "%sphar_offset_check.phar.php", use setAlias string(5) "susan" string(5) "susan" diff --git a/ext/phar/tests/phar_setdefaultstub.phpt b/ext/phar/tests/phar_setdefaultstub.phpt index 434e647..c8d12e9 100644 --- a/ext/phar/tests/phar_setdefaultstub.phpt +++ b/ext/phar/tests/phar_setdefaultstub.phpt @@ -54,7 +54,7 @@ try { unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar'); ?> --EXPECT-- -string(6685) "<?php +string(6675) "<?php $web = 'index.php'; @@ -130,7 +130,7 @@ exit; $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt); if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) { header('HTTP/1.0 404 Not Found'); -echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>"; +echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File Not Found</h1>\n </body>\n</html>"; exit; } $b = pathinfo($a); @@ -164,7 +164,7 @@ const GZ = 0x1000; const BZ2 = 0x2000; const MASK = 0x3000; const START = 'index.php'; -const LEN = 6685; +const LEN = 6675; static function go($return = false) { @@ -349,7 +349,7 @@ __HALT_COMPILER(); ?> " ============================================================================ ============================================================================ -string(6696) "<?php +string(6686) "<?php $web = 'index.php'; @@ -425,7 +425,7 @@ exit; $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt); if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) { header('HTTP/1.0 404 Not Found'); -echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>"; +echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File Not Found</h1>\n </body>\n</html>"; exit; } $b = pathinfo($a); @@ -459,7 +459,7 @@ const GZ = 0x1000; const BZ2 = 0x2000; const MASK = 0x3000; const START = 'my/custom/thingy.php'; -const LEN = 6696; +const LEN = 6686; static function go($return = false) { @@ -644,7 +644,7 @@ __HALT_COMPILER(); ?> " ============================================================================ ============================================================================ -string(6698) "<?php +string(6688) "<?php $web = 'the/web.php'; @@ -720,7 +720,7 @@ exit; $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt); if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) { header('HTTP/1.0 404 Not Found'); -echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>"; +echo "<html>\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File Not Found</h1>\n </body>\n</html>"; exit; } $b = pathinfo($a); @@ -754,7 +754,7 @@ const GZ = 0x1000; const BZ2 = 0x2000; const MASK = 0x3000; const START = 'my/custom/thingy.php'; -const LEN = 6698; +const LEN = 6688; static function go($return = false) { @@ -939,6 +939,6 @@ __HALT_COMPILER(); ?> " ============================================================================ ============================================================================ -int(7076) +int(7066) Illegal filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed ===DONE=== diff --git a/ext/phar/tests/tar/phar_convert_phar.phpt b/ext/phar/tests/tar/phar_convert_phar.phpt index d754ac1..b700f4a 100644 --- a/ext/phar/tests/tar/phar_convert_phar.phpt +++ b/ext/phar/tests/tar/phar_convert_phar.phpt @@ -47,12 +47,12 @@ __HALT_COMPILER(); ?> --EXPECT-- bool(false) -int(6683) +int(6673) bool(true) string(60) "<?php // tar-based phar archive stub file __HALT_COMPILER();" bool(true) -int(6683) +int(6673) bool(true) -int(6683) +int(6673) ===DONE=== diff --git a/ext/phar/tests/tar/phar_convert_phar2.phpt b/ext/phar/tests/tar/phar_convert_phar2.phpt index 58901ca..c3a38bd 100644 --- a/ext/phar/tests/tar/phar_convert_phar2.phpt +++ b/ext/phar/tests/tar/phar_convert_phar2.phpt @@ -49,14 +49,14 @@ __HALT_COMPILER(); ?> --EXPECT-- bool(false) -int(6683) +int(6673) bool(true) string(60) "<?php // tar-based phar archive stub file __HALT_COMPILER();" bool(true) int(4096) -int(6683) +int(6673) bool(true) bool(true) -int(6683) +int(6673) ===DONE=== diff --git a/ext/phar/tests/tar/phar_convert_phar3.phpt b/ext/phar/tests/tar/phar_convert_phar3.phpt index 543c89b..b6f7a160 100644 --- a/ext/phar/tests/tar/phar_convert_phar3.phpt +++ b/ext/phar/tests/tar/phar_convert_phar3.phpt @@ -49,14 +49,14 @@ __HALT_COMPILER(); ?> --EXPECT-- bool(false) -int(6683) +int(6673) bool(true) string(60) "<?php // tar-based phar archive stub file __HALT_COMPILER();" bool(true) int(8192) -int(6683) +int(6673) bool(true) bool(true) -int(6683) +int(6673) ===DONE=== diff --git a/ext/phar/tests/tar/phar_convert_phar4.phpt b/ext/phar/tests/tar/phar_convert_phar4.phpt index 9b095f1..3fcfd6c 100644 --- a/ext/phar/tests/tar/phar_convert_phar4.phpt +++ b/ext/phar/tests/tar/phar_convert_phar4.phpt @@ -54,7 +54,7 @@ __HALT_COMPILER(); ?> --EXPECT-- bool(false) -int(6683) +int(6673) string(2) "hi" bool(true) string(60) "<?php // tar-based phar archive stub file @@ -62,10 +62,10 @@ __HALT_COMPILER();" string(2) "hi" bool(true) int(4096) -int(6683) +int(6673) string(2) "hi" bool(true) bool(true) -int(6683) +int(6673) string(2) "hi" ===DONE=== diff --git a/ext/phar/tests/zip/phar_convert_phar.phpt b/ext/phar/tests/zip/phar_convert_phar.phpt index cad6d9f..f3c6b73 100644 --- a/ext/phar/tests/zip/phar_convert_phar.phpt +++ b/ext/phar/tests/zip/phar_convert_phar.phpt @@ -46,12 +46,12 @@ __HALT_COMPILER(); ?> --EXPECT-- bool(false) -int(6683) +int(6673) bool(true) string(60) "<?php // zip-based phar archive stub file __HALT_COMPILER();" bool(true) -int(6683) +int(6673) bool(true) -int(6683) +int(6673) ===DONE=== -- 2.1.4 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7478-pre.patch��������������������������������������������������������������0000664�0000000�0000000�00000004364�13046653443�014055� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 7903276f4c18fcfda06c02785f0b4201421f9c7c Mon Sep 17 00:00:00 2001 From: Xinchen Hui <laruence@gmail.com> Date: Tue, 12 Jul 2016 12:14:45 +0800 Subject: [PATCH] backport to 5.6 (we should not unset the default value) --- NEWS | 2 ++ Zend/zend_exceptions.c | 2 +- ext/standard/tests/serialize/bug69152.phpt | 1 - ext/standard/tests/serialize/bug69793.phpt | 2 -- 4 files changed, 3 insertions(+), 4 deletions(-) Index: php5-5.5.9+dfsg/Zend/zend_exceptions.c =================================================================== --- php5-5.5.9+dfsg.orig/Zend/zend_exceptions.c 2017-02-08 12:35:34.970606545 -0500 +++ php5-5.5.9+dfsg/Zend/zend_exceptions.c 2017-02-08 12:35:34.970606545 -0500 @@ -222,7 +222,7 @@ Exception unserialize checks */ #define CHECK_EXC_TYPE(name, type) \ value = zend_read_property(default_exception_ce, object, name, sizeof(name)-1, 0 TSRMLS_CC); \ - if(value && Z_TYPE_P(value) != type) { \ + if (value && Z_TYPE_P(value) != IS_NULL && Z_TYPE_P(value) != type) { \ zval *tmp; \ MAKE_STD_ZVAL(tmp); \ ZVAL_STRINGL(tmp, name, sizeof(name)-1, 1); \ Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69152.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/serialize/bug69152.phpt 2017-02-08 12:35:34.970606545 -0500 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69152.phpt 2017-02-08 12:35:34.970606545 -0500 @@ -9,7 +9,6 @@ ?> --EXPECTF-- -Notice: Undefined property: Exception::$previous in %s on line %d exception 'Exception' in %s:%d Stack trace: #0 {main} Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69793.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/serialize/bug69793.phpt 2017-02-08 12:35:34.970606545 -0500 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69793.phpt 2017-02-08 12:36:14.651181905 -0500 @@ -7,8 +7,6 @@ var_dump($e.""); ?> --EXPECTF-- -Notice: Undefined property: Exception::$message in %s/bug69793.php on line %d - Notice: Undefined property: Exception::$file in %s/bug69793.php on line %d Notice: Undefined property: Exception::$previous in %s/bug69793.php on line %d ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/curl_embedded_null.patch�������������������������������������������������������������0000664�0000000�0000000�00000002742�12423762651�015465� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: fix local file disclosure via curl NULL byte injection Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=ab0939e5e5449cba04b02fff3a5595f725bce0a0 Bug: https://bugs.php.net/bug.php?id=68089 Index: php5-5.5.9+dfsg/ext/curl/interface.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/curl/interface.c 2014-10-28 14:46:19.328100552 -0400 +++ php5-5.5.9+dfsg/ext/curl/interface.c 2014-10-28 14:49:44.733627727 -0400 @@ -171,6 +171,12 @@ #if LIBCURL_VERSION_NUM < 0x071100 char *copystr = NULL; #endif + + if (strlen(url) != len) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Curl option contains invalid characters (\\0)"); + return 0; + } + /* Disable file:// if open_basedir are used */ if (PG(open_basedir) && *PG(open_basedir)) { #if LIBCURL_VERSION_NUM >= 0x071304 Index: php5-5.5.9+dfsg/ext/curl/tests/bug68089.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/curl/tests/bug68089.phpt 2014-10-28 14:46:19.328100552 -0400 @@ -0,0 +1,18 @@ +--TEST-- +Bug #68089 (NULL byte injection - cURL lib) +--SKIPIF-- +<?php +include 'skipif.inc'; + +?> +--FILE-- +<?php +$url = "file:///etc/passwd\0http://google.com"; +$ch = curl_init(); +var_dump(curl_setopt($ch, CURLOPT_URL, $url)); +?> +Done +--EXPECTF-- +Warning: curl_setopt(): Curl option contains invalid characters (\0) in %s/bug68089.php on line 4 +bool(false) +Done ������������������������������debian/patches/bug71860.patch�����������������������������������������������������������������������0000664�0000000�0000000�00000036355�12704235733�013045� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 72281f29dd4691b2f741362d3581162fcf85f502 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 20 Mar 2016 20:54:09 -0700 Subject: [PATCH] Fix bug #71860: Require valid paths for phar filenames --- ext/phar/phar.c | 4 +++ ext/phar/phar_object.c | 40 ++++++++++++++-------------- ext/phar/tests/badparameters.phpt | 18 ++++++------- ext/phar/tests/bug64931/bug64931.phpt | 5 ++-- ext/phar/tests/create_path_error.phpt | 3 +-- ext/phar/tests/phar_extract.phpt | 2 +- ext/phar/tests/phar_isvalidpharfilename.phpt | 2 +- ext/phar/tests/phar_unlinkarchive.phpt | 2 +- ext/phar/tests/pharfileinfo_construct.phpt | 2 +- 9 files changed, 41 insertions(+), 37 deletions(-) Index: php5-5.5.9+dfsg/ext/phar/phar.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar.c 2016-04-15 15:06:27.290059311 -0400 +++ php5-5.5.9+dfsg/ext/phar/phar.c 2016-04-15 15:06:27.286059261 -0400 @@ -2260,6 +2260,10 @@ #endif int ext_len, free_filename = 0; + if (CHECK_NULL_PATH(filename, filename_len)) { + return FAILURE; + } + if (!strncasecmp(filename, "phar://", 7)) { filename += 7; filename_len -= 7; Index: php5-5.5.9+dfsg/ext/phar/phar_object.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar_object.c 2016-04-15 15:06:27.290059311 -0400 +++ php5-5.5.9+dfsg/ext/phar/phar_object.c 2016-04-15 15:06:27.286059261 -0400 @@ -478,7 +478,7 @@ int fname_len, arch_len, entry_len, path_len, actual_len; phar_archive_data **pphar; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &path, &path_len, &actual, &actual_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "pp", &path, &path_len, &actual, &actual_len) == FAILURE) { return; } @@ -959,7 +959,7 @@ int index_len = 0, webindex_len = 0; size_t stub_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|ss", &index, &index_len, &webindex, &webindex_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|pp", &index, &index_len, &webindex, &webindex_len) == FAILURE) { return; } @@ -1003,7 +1003,7 @@ char *fname, *alias = NULL, *error; int fname_len, alias_len = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &fname, &fname_len, &alias, &alias_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|s!", &fname, &fname_len, &alias, &alias_len) == FAILURE) { return; } @@ -1082,7 +1082,7 @@ int fname_len, ext_len, is_executable; zend_bool executable = 1; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &fname, &fname_len, &executable) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|b", &fname, &fname_len, &executable) == FAILURE) { return; } @@ -1153,11 +1153,11 @@ is_data = instanceof_function(Z_OBJCE_P(zobj), phar_ce_data TSRMLS_CC); if (is_data) { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls!l", &fname, &fname_len, &flags, &alias, &alias_len, &format) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|ls!l", &fname, &fname_len, &flags, &alias, &alias_len, &format) == FAILURE) { return; } } else { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls!", &fname, &fname_len, &flags, &alias, &alias_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|ls!", &fname, &fname_len, &flags, &alias, &alias_len) == FAILURE) { return; } } @@ -1325,7 +1325,7 @@ int fname_len, zname_len, arch_len, entry_len; phar_archive_data *phar; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &fname, &fname_len) == FAILURE) { RETURN_FALSE; } @@ -1755,7 +1755,7 @@ return; } - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &dir, &dir_len, ®ex, ®ex_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|s", &dir, &dir_len, ®ex, ®ex_len) == FAILURE) { RETURN_FALSE; } @@ -2626,7 +2626,7 @@ return; } - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &fname, &fname_len) == FAILURE) { RETURN_FALSE; } @@ -3438,7 +3438,7 @@ PHAR_ARCHIVE_OBJECT(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &oldfile, &oldfile_len, &newfile, &newfile_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "pp", &oldfile, &oldfile_len, &newfile, &newfile_len) == FAILURE) { return; } @@ -3544,7 +3544,7 @@ PHAR_ARCHIVE_OBJECT(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &fname, &fname_len) == FAILURE) { return; } @@ -3581,7 +3581,7 @@ phar_entry_info *entry; PHAR_ARCHIVE_OBJECT(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &fname, &fname_len) == FAILURE) { return; } @@ -3729,8 +3729,8 @@ return; } - if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sr", &fname, &fname_len, &zresource) == FAILURE - && zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &fname, &fname_len, &cont_str, &cont_len) == FAILURE) { + if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "pr", &fname, &fname_len, &zresource) == FAILURE + && zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ps", &fname, &fname_len, &cont_str, &cont_len) == FAILURE) { return; } @@ -3768,7 +3768,7 @@ return; } - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &fname, &fname_len) == FAILURE) { return; } @@ -3815,7 +3815,7 @@ PHAR_ARCHIVE_OBJECT(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &dirname, &dirname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &dirname, &dirname_len) == FAILURE) { return; } @@ -3840,7 +3840,7 @@ PHAR_ARCHIVE_OBJECT(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &fname, &fname_len, &localname, &localname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|s", &fname, &fname_len, &localname, &localname_len) == FAILURE) { return; } @@ -3884,7 +3884,7 @@ PHAR_ARCHIVE_OBJECT(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &localname, &localname_len, &cont_str, &cont_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ps", &localname, &localname_len, &cont_str, &cont_len) == FAILURE) { return; } @@ -4311,7 +4311,7 @@ PHAR_ARCHIVE_OBJECT(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z!b", &pathto, &pathto_len, &zval_files, &overwrite) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|z!b", &pathto, &pathto_len, &zval_files, &overwrite) == FAILURE) { return; } @@ -4450,7 +4450,7 @@ phar_archive_data *phar_data; zval *zobj = getThis(), arg1; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &fname, &fname_len) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/phar/tests/badparameters.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/tests/badparameters.phpt 2016-04-15 15:06:27.290059311 -0400 +++ php5-5.5.9+dfsg/ext/phar/tests/badparameters.phpt 2016-04-15 15:06:27.286059261 -0400 @@ -126,19 +126,19 @@ --EXPECTF-- Warning: Phar::mungServer() expects parameter 1 to be array, %string given in %sbadparameters.php on line %d -Warning: Phar::createDefaultStub() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: Phar::createDefaultStub() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d -Warning: Phar::loadPhar() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: Phar::loadPhar() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d Warning: Phar::canCompress() expects parameter 1 to be long, %string given in %sbadparameters.php on line %d -Warning: Phar::__construct() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: Phar::__construct() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d Warning: Phar::convertToExecutable() expects parameter 1 to be long, array given in %sbadparameters.php on line %d Warning: Phar::convertToData() expects parameter 1 to be long, array given in %sbadparameters.php on line %d -Warning: PharData::delete() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: PharData::delete() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d Cannot write out phar archive, phar is read-only Entry oops does not exist and cannot be deleted %sfiles/frontcontroller10.phar @@ -165,18 +165,18 @@ Warning: Phar::copy() expects exactly 2 parameters, 1 given in %sbadparameters.php on line %d Cannot copy "a" to "b", phar is read-only -Warning: Phar::offsetExists() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: Phar::offsetExists() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d -Warning: Phar::offsetGet() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: Phar::offsetGet() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d Warning: Phar::offsetSet() expects exactly 2 parameters, 1 given in %sbadparameters.php on line %d -Warning: PharData::offsetUnset() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: PharData::offsetUnset() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d Write operations disabled by the php.ini setting phar.readonly -Warning: Phar::addEmptyDir() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: Phar::addEmptyDir() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d -Warning: Phar::addFile() expects parameter 1 to be %string, array given in %sbadparameters.php on line %d +Warning: Phar::addFile() expects parameter 1 to be a valid path, array given in %sbadparameters.php on line %d Warning: Phar::addFromString() expects exactly 2 parameters, 1 given in %sbadparameters.php on line %d Write operations disabled by the php.ini setting phar.readonly Index: php5-5.5.9+dfsg/ext/phar/tests/create_path_error.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/tests/create_path_error.phpt 2016-04-15 15:06:27.290059311 -0400 +++ php5-5.5.9+dfsg/ext/phar/tests/create_path_error.phpt 2016-04-15 15:07:03.166506857 -0400 @@ -58,5 +58,5 @@ Error: file_put_contents(phar://%s/.): failed to open stream: phar error: file "" in phar "%s" cannot be empty Error: file_put_contents(phar://%s/../): failed to open stream: phar error: file "" in phar "%s" cannot be empty Error: file_put_contents(phar://%s/a/..): failed to open stream: phar error: file "" in phar "%s" cannot be empty -Exception: Entry a does not exist and cannot be created: phar error: invalid path "a" contains illegal character +Error: Phar::offsetSet() expects parameter 1 to be a valid path, string given ===DONE=== Index: php5-5.5.9+dfsg/ext/phar/tests/phar_extract.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/tests/phar_extract.phpt 2016-04-15 15:06:27.290059311 -0400 +++ php5-5.5.9+dfsg/ext/phar/tests/phar_extract.phpt 2016-04-15 15:06:27.286059261 -0400 @@ -138,7 +138,7 @@ bool(false) Invalid argument, expected a filename (string) or array of filenames -Warning: Phar::extractTo() expects parameter 1 to be %string, array given in %sphar_extract.php on line %d +Warning: Phar::extractTo() expects parameter 1 to be a valid path, array given in %sphar_extract.php on line %d Invalid argument, extraction path must be non-zero length Unable to use path "%soops" for extraction, it is a file, must be a directory Invalid argument, array of filenames to extract contains non-string value Index: php5-5.5.9+dfsg/ext/phar/tests/phar_isvalidpharfilename.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/tests/phar_isvalidpharfilename.phpt 2016-04-15 15:06:27.290059311 -0400 +++ php5-5.5.9+dfsg/ext/phar/tests/phar_isvalidpharfilename.phpt 2016-04-15 15:06:27.286059261 -0400 @@ -76,7 +76,7 @@ <?php rmdir(dirname(__FILE__) . '/.phar'); --EXPECTF-- -Warning: Phar::isValidPharFilename() expects parameter 1 to be %string, array given in %sphar_isvalidpharfilename.php on line %d +Warning: Phar::isValidPharFilename() expects parameter 1 to be a valid path, array given in %sphar_isvalidpharfilename.php on line %d * bool(false) bool(false) Index: php5-5.5.9+dfsg/ext/phar/tests/phar_unlinkarchive.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/tests/phar_unlinkarchive.phpt 2016-04-15 15:06:27.290059311 -0400 +++ php5-5.5.9+dfsg/ext/phar/tests/phar_unlinkarchive.phpt 2016-04-15 15:06:27.286059261 -0400 @@ -90,7 +90,7 @@ Unknown phar archive "%sphar_unlinkarchive.phar" Unknown phar archive "%sphar_unlinkarchive.phar.tar": internal corruption of phar "%sphar_unlinkarchive.phar.tar" (truncated entry) -Warning: Phar::unlinkArchive() expects parameter 1 to be %string, array given in %sphar_unlinkarchive.php on line %d +Warning: Phar::unlinkArchive() expects parameter 1 to be a valid path, array given in %sphar_unlinkarchive.php on line %d bool(false) string(48) "<?php echo "first stub\n"; __HALT_COMPILER(); ?>" phar archive "%sphar_unlinkarchive.phar" has open file handles or objects. fclose() all file handles, and unset() all objects prior to calling unlinkArchive() Index: php5-5.5.9+dfsg/ext/phar/tests/pharfileinfo_construct.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/tests/pharfileinfo_construct.phpt 2016-04-15 15:06:27.290059311 -0400 +++ php5-5.5.9+dfsg/ext/phar/tests/pharfileinfo_construct.phpt 2016-04-15 15:06:27.286059261 -0400 @@ -47,7 +47,7 @@ --EXPECTF-- Cannot open phar file 'phar://%spharfileinfo_construct.phar/oops': internal corruption of phar "%spharfileinfo_construct.phar" (truncated entry) -Warning: PharFileInfo::__construct() expects parameter 1 to be %string, array given in %spharfileinfo_construct.php on line %d +Warning: PharFileInfo::__construct() expects parameter 1 to be a valid path, array given in %spharfileinfo_construct.php on line %d Cannot access phar file entry '/oops/I/do/not/exist' in archive '%spharfileinfo_construct.phar' Cannot call constructor twice '%spharfileinfo_construct.php' is not a valid phar archive URL (must have at least phar://filename.phar) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/bug70014.patch�����������������������������������������������������������������������0000664�0000000�0000000�00000003105�12704222122�013002� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 16023f3e3b9c06cf677c3c980e8d574e4c162827 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 26 Jul 2015 17:43:16 -0700 Subject: [PATCH] Fix bug #70014 - use RAND_bytes instead of deprecated RAND_pseudo_bytes --- ext/openssl/openssl.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) Index: php5-5.5.9+dfsg/ext/openssl/openssl.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/openssl/openssl.c 2016-04-15 13:26:39.990005785 -0400 +++ php5-5.5.9+dfsg/ext/openssl/openssl.c 2016-04-15 13:26:39.990005785 -0400 @@ -5107,7 +5107,6 @@ long buffer_length; unsigned char *buffer = NULL; zval *zstrong_result_returned = NULL; - int strong_result = 0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|z", &buffer_length, &zstrong_result_returned) == FAILURE) { return; @@ -5125,7 +5124,6 @@ buffer = emalloc(buffer_length + 1); #ifdef PHP_WIN32 - strong_result = 1; /* random/urandom equivalent on Windows */ if (php_win32_get_random_bytes(buffer, (size_t) buffer_length) == FAILURE){ efree(buffer); @@ -5135,7 +5133,7 @@ RETURN_FALSE; } #else - if ((strong_result = RAND_pseudo_bytes(buffer, buffer_length)) < 0) { + if (RAND_bytes(buffer, buffer_length) <= 0) { efree(buffer); if (zstrong_result_returned) { ZVAL_BOOL(zstrong_result_returned, 0); @@ -5148,7 +5146,7 @@ RETVAL_STRINGL((char *)buffer, buffer_length, 0); if (zstrong_result_returned) { - ZVAL_BOOL(zstrong_result_returned, strong_result); + ZVAL_BOOL(zstrong_result_returned, 1); } } /* }}} */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/session_save_path.patch��������������������������������������������������������������0000664�0000000�0000000�00000003724�12300436054�015360� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: Set the default session.save_path dir to /var/lib/php5. This is the directory that has been used in Debian to store the session files and is partially protected by dir permissions. Origin: vendor Forwarded: not-needed Last-Update: 2010-05-01 --- php5.orig/ext/session/session.c +++ php5/ext/session/session.c @@ -773,7 +773,7 @@ static ZEND_INI_MH(OnUpdateSmartStr) /* /* {{{ PHP_INI */ PHP_INI_BEGIN() - STD_PHP_INI_ENTRY("session.save_path", "", PHP_INI_ALL, OnUpdateSaveDir,save_path, php_ps_globals, ps_globals) + STD_PHP_INI_ENTRY("session.save_path", "/var/lib/php5", PHP_INI_ALL, OnUpdateSaveDir,save_path, php_ps_globals, ps_globals) STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL, OnUpdateName, session_name, php_ps_globals, ps_globals) PHP_INI_ENTRY("session.save_handler", "files", PHP_INI_ALL, OnUpdateSaveHandler) STD_PHP_INI_BOOLEAN("session.auto_start", "0", PHP_INI_PERDIR, OnUpdateBool, auto_start, php_ps_globals, ps_globals) --- php5.orig/php.ini-development +++ php5/php.ini-development @@ -1403,7 +1403,7 @@ session.save_handler = files ; where MODE is the octal representation of the mode. Note that this ; does not overwrite the process's umask. ; http://php.net/session.save-path -;session.save_path = "/tmp" +;session.save_path = "/var/lib/php5" ; Whether to use strict session mode. ; Strict session mode does not accept uninitialized session ID and regenerate --- php5.orig/php.ini-production +++ php5/php.ini-production @@ -1353,7 +1353,7 @@ session.save_handler = files ; where MODE is the octal representation of the mode. Note that this ; does not overwrite the process's umask. ; http://php.net/session.save-path -;session.save_path = "/tmp" +;session.save_path = "/var/lib/php5" ; Whether to use strict session mode. ; Strict session mode does not accept uninitialized session ID and regenerate ��������������������������������������������debian/patches/CVE-2016-7124-1.patch����������������������������������������������������������������0000664�0000000�0000000�00000007120�12773246071�013405� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 448c9be157f4147e121f1a2a524536c75c9c6059 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 2 Aug 2016 01:08:42 -0700 Subject: [PATCH] Fix bug #72663 - destroy broken object when unserializing --- ext/standard/tests/strings/bug72663.phpt | 26 +++++++++++ ext/standard/tests/strings/bug72663_2.phpt | 17 ++++++++ ext/standard/var_unserializer.c | 70 ++++++++++++++++-------------- ext/standard/var_unserializer.re | 5 ++- 4 files changed, 84 insertions(+), 34 deletions(-) create mode 100644 ext/standard/tests/strings/bug72663.phpt create mode 100644 ext/standard/tests/strings/bug72663_2.phpt Index: php5-5.5.9+dfsg/ext/standard/tests/strings/bug72663.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/strings/bug72663.phpt 2016-09-29 13:15:34.436039488 -0400 @@ -0,0 +1,26 @@ +--TEST-- +Bug #72663: Create an Unexpected Object and Don't Invoke __wakeup() in Deserialization +--FILE-- +<?php +class obj implements Serializable { + var $data; + function serialize() { + return serialize($this->data); + } + function unserialize($data) { + $this->data = unserialize($data); + } +} + +$inner = 'a:1:{i:0;O:9:"Exception":2:{s:7:"'."\0".'*'."\0".'file";R:4;}'; +$exploit = 'a:2:{i:0;C:3:"obj":'.strlen($inner).':{'.$inner.'}i:1;R:4;}'; + +$data = unserialize($exploit); +echo $data[1]; +?> +DONE +--EXPECTF-- +Notice: unserialize(): Unexpected end of serialized data in %sbug72663.php on line %d + +Notice: unserialize(): Error at offset 46 of 47 bytes in %sbug72663.php on line %d +DONE \ No newline at end of file Index: php5-5.5.9+dfsg/ext/standard/tests/strings/bug72663_2.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/strings/bug72663_2.phpt 2016-09-29 13:15:34.436039488 -0400 @@ -0,0 +1,17 @@ +--TEST-- +Bug #72663: Create an Unexpected Object and Don't Invoke __wakeup() in Deserialization +--FILE-- +<?php + +ini_set('session.serialize_handler', 'php_serialize'); +session_start(); +$sess = 'O:9:"Exception":2:{s:7:"'."\0".'*'."\0".'file";R:1;}'; +session_decode($sess); +var_dump($_SESSION); +?> +DONE +--EXPECTF-- +Notice: session_decode(): Unexpected end of serialized data in %sbug72663_2.php on line %d +array(0) { +} +DONE \ No newline at end of file Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2016-09-29 13:15:34.440039533 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2016-09-29 13:15:34.436039488 -0400 @@ -414,6 +414,9 @@ zval fname; if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements, 1)) { + /* We've got partially constructed object on our hands here. Wipe it */ + zend_hash_clean(Z_OBJPROP_PP(rval)); + ZVAL_NULL(*rval); return 0; } Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2016-09-29 13:15:34.440039533 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2016-09-29 13:15:34.436039488 -0400 @@ -420,6 +420,9 @@ zval fname; if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_OBJPROP_PP(rval), elements, 1)) { + /* We've got partially constructed object on our hands here. Wipe it. */ + zend_hash_clean(Z_OBJPROP_PP(rval)); + ZVAL_NULL(*rval); return 0; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-6292.patch������������������������������������������������������������������0000664�0000000�0000000�00000005330�12746400036�013246� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 41131cd41d2fd2e0c2f332a27988df75659c42e4 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 18 Jul 2016 23:21:51 -0700 Subject: [PATCH] Fix bug #72618: NULL Pointer Dereference in exif_process_user_comment --- ext/exif/exif.c | 17 +++++++++++------ ext/exif/tests/bug72618.jpg | Bin 0 -> 3711 bytes ext/exif/tests/bug72618.phpt | 11 +++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 ext/exif/tests/bug72618.jpg create mode 100644 ext/exif/tests/bug72618.phpt Index: php5-5.5.9+dfsg/ext/exif/exif.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/exif/exif.c 2016-07-28 08:51:09.808231838 -0400 +++ php5-5.5.9+dfsg/ext/exif/exif.c 2016-07-28 08:52:36.445259285 -0400 @@ -2623,6 +2623,7 @@ *pszEncoding = NULL; /* Copy the comment */ if (ByteCount>=8) { + const zend_encoding *from, *to; if (!memcmp(szValuePtr, "UNICODE\0", 8)) { *pszEncoding = estrdup((const char*)szValuePtr); szValuePtr = szValuePtr+8; @@ -2643,14 +2644,16 @@ } else { decode = ImageInfo->decode_unicode_le; } + to = zend_multibyte_fetch_encoding(ImageInfo->encode_unicode TSRMLS_CC); + from = zend_multibyte_fetch_encoding(decode TSRMLS_CC); /* XXX this will fail again if encoding_converter returns on error something different than SIZE_MAX */ - if (zend_multibyte_encoding_converter( + if (!to || !from || zend_multibyte_encoding_converter( (unsigned char**)pszInfoPtr, &len, (unsigned char*)szValuePtr, ByteCount, - zend_multibyte_fetch_encoding(ImageInfo->encode_unicode TSRMLS_CC), - zend_multibyte_fetch_encoding(decode TSRMLS_CC) + to, + from TSRMLS_CC) == (size_t)-1) { len = exif_process_string_raw(pszInfoPtr, szValuePtr, ByteCount); } @@ -2665,13 +2668,15 @@ szValuePtr = szValuePtr+8; ByteCount -= 8; /* XXX this will fail again if encoding_converter returns on error something different than SIZE_MAX */ - if (zend_multibyte_encoding_converter( + to = zend_multibyte_fetch_encoding(ImageInfo->encode_jis TSRMLS_CC); + from = zend_multibyte_fetch_encoding(ImageInfo->motorola_intel ? ImageInfo->decode_jis_be : ImageInfo->decode_jis_le TSRMLS_CC); + if (!to || !from || zend_multibyte_encoding_converter( (unsigned char**)pszInfoPtr, &len, (unsigned char*)szValuePtr, ByteCount, - zend_multibyte_fetch_encoding(ImageInfo->encode_jis TSRMLS_CC), - zend_multibyte_fetch_encoding(ImageInfo->motorola_intel ? ImageInfo->decode_jis_be : ImageInfo->decode_jis_le TSRMLS_CC) + to, + from TSRMLS_CC) == (size_t)-1) { len = exif_process_string_raw(pszInfoPtr, szValuePtr, ByteCount); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7418.patch������������������������������������������������������������������0000664�0000000�0000000�00000012465�12773247265�013273� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From c4cca4c20e75359c9a13a1f9a36cb7b4e9601d29 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 12 Sep 2016 00:35:01 -0700 Subject: [PATCH] Fix bug #73065: Out-Of-Bounds Read in php_wddx_push_element of wddx.c --- ext/wddx/tests/bug73065.phpt | 98 ++++++++++++++++++++++++++++++++++++++++++++ ext/wddx/wddx.c | 19 +++++---- 2 files changed, 108 insertions(+), 9 deletions(-) create mode 100644 ext/wddx/tests/bug73065.phpt Index: php5-5.5.9+dfsg/ext/wddx/tests/bug73065.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug73065.phpt 2016-09-29 13:21:57.872338365 -0400 @@ -0,0 +1,98 @@ +--TEST-- +Bug #73065: Out-Of-Bounds Read in php_wddx_push_element of wddx.c +--SKIPIF-- +<?php +if (!extension_loaded('wddx')) { + die('skip. wddx not available'); +} +?> +--FILE-- +<?php + +$xml1 = <<<XML +<?xml version='1.0' ?> + <!DOCTYPE et SYSTEM 'w'> + <wddxPacket ven='1.0'> + <array> + <var Name="name"> + <boolean value="keliu"></boolean> + </var> + <var name="1111"> + <var name="2222"> + <var name="3333"></var> + </var> + </var> + </array> + </wddxPacket> +XML; + +$xml2 = <<<XML +<?xml version='1.0' ?> + <!DOCTYPE et SYSTEM 'w'> + <wddxPacket ven='1.0'> + <array> + <char Name="code"> + <boolean value="keliu"></boolean> + </char> + </array> + </wddxPacket> +XML; + +$xml3 = <<<XML +<?xml version='1.0' ?> + <!DOCTYPE et SYSTEM 'w'> + <wddxPacket ven='1.0'> + <array> + <boolean Name="value"> + <boolean value="keliu"></boolean> + </boolean> + </array> + </wddxPacket> +XML; + +$xml4 = <<<XML +<?xml version='1.0' ?> + <!DOCTYPE et SYSTEM 'w'> + <wddxPacket ven='1.0'> + <array> + <recordset Name="fieldNames"> + <boolean value="keliu"></boolean> + </recordset> + </array> + </wddxPacket> +XML; + +$xml5 = <<<XML +<?xml version='1.0' ?> + <!DOCTYPE et SYSTEM 'w'> + <wddxPacket ven='1.0'> + <array> + <field Name="name"> + <boolean value="keliu"></boolean> + </field> + </array> + </wddxPacket> +XML; + +for($i=1;$i<=5;$i++) { + $xmlvar = "xml$i"; + $array = wddx_deserialize($$xmlvar); + var_dump($array); +} +?> +DONE +--EXPECTF-- +array(0) { +} +array(0) { +} +array(0) { +} +array(1) { + [0]=> + array(0) { + } +} +array(0) { +} +DONE \ No newline at end of file Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2016-09-29 13:21:57.872338365 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2016-09-29 13:25:43.194864558 -0400 @@ -771,10 +771,10 @@ int i; if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp(atts[i], EL_CHAR_CODE) && atts[++i] && atts[i][0]) { + if (!strcmp(atts[i], EL_CHAR_CODE) && atts[i+1] && atts[i+1][0]) { char tmp_buf[2]; - snprintf(tmp_buf, sizeof(tmp_buf), "%c", (char)strtol(atts[i], NULL, 16)); + snprintf(tmp_buf, sizeof(tmp_buf), "%c", (char)strtol(atts[i+1], NULL, 16)); php_wddx_process_data(user_data, tmp_buf, strlen(tmp_buf)); break; } @@ -792,7 +792,7 @@ int i; if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp(atts[i], EL_VALUE) && atts[++i] && atts[i][0]) { + if (!strcmp(atts[i], EL_VALUE) && atts[i+1] && atts[i+1][0]) { ent.type = ST_BOOLEAN; SET_STACK_VARNAME; @@ -800,7 +800,7 @@ INIT_PZVAL(ent.data); Z_TYPE_P(ent.data) = IS_BOOL; wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - php_wddx_process_data(user_data, atts[i], strlen(atts[i])); + php_wddx_process_data(user_data, atts[i+1], strlen(atts[i+1])); break; } } @@ -833,8 +833,8 @@ int i; if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp(atts[i], EL_NAME) && atts[++i] && atts[i][0]) { - stack->varname = estrdup(atts[i]); + if (!strcmp(atts[i], EL_NAME) && atts[i+1] && atts[i+1][0]) { + stack->varname = estrdup(atts[i+1]); break; } } @@ -847,11 +847,12 @@ array_init(ent.data); if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp(atts[i], "fieldNames") && atts[++i] && atts[i][0]) { + if (!strcmp(atts[i], "fieldNames") && atts[i+1] && atts[i+1][0]) { zval *tmp; char *key; char *p1, *p2, *endp; + i++; endp = (char *)atts[i] + strlen(atts[i]); p1 = (char *)atts[i]; while ((p2 = php_memnstr(p1, ",", sizeof(",")-1, endp)) != NULL) { @@ -883,13 +884,13 @@ ent.data = NULL; if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp(atts[i], EL_NAME) && atts[++i] && atts[i][0]) { + if (!strcmp(atts[i], EL_NAME) && atts[i+1] && atts[i+1][0]) { st_entry *recordset; zval **field; if (wddx_stack_top(stack, (void**)&recordset) == SUCCESS && recordset->type == ST_RECORDSET && - zend_hash_find(Z_ARRVAL_P(recordset->data), (char*)atts[i], strlen(atts[i])+1, (void**)&field) == SUCCESS) { + zend_hash_find(Z_ARRVAL_P(recordset->data), (char*)atts[i+1], strlen(atts[i+1])+1, (void**)&field) == SUCCESS) { ent.data = *field; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/057-no_apache_installed.patch��������������������������������������������������������0000664�0000000�0000000�00000005601�12300436054�016124� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: Disable installed-apache configure check Origin: vendor Forwarded: no Last-Update: 2010-01-18 --- php5.orig/sapi/apache2handler/config.m4 +++ php5/sapi/apache2handler/config.m4 @@ -58,14 +58,6 @@ if test "$PHP_APXS2" != "no"; then APACHE_CFLAGS="$APACHE_CPPFLAGS -I$APXS_INCLUDEDIR $APR_CFLAGS $APU_CFLAGS" - # Test that we're trying to configure with apache 2.x - PHP_AP_EXTRACT_VERSION($APXS_HTTPD) - if test "$APACHE_VERSION" -le 2000000; then - AC_MSG_ERROR([You have enabled Apache 2 support while your server is Apache 1.3. Please use the appropriate switch --with-apxs (without the 2)]) - elif test "$APACHE_VERSION" -lt 2000044; then - AC_MSG_ERROR([Please note that Apache version >= 2.0.44 is required]) - fi - APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR` if test -z `$APXS -q SYSCONFDIR`; then INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \ --- php5.orig/sapi/apache/config.m4 +++ php5/sapi/apache/config.m4 @@ -56,12 +56,6 @@ if test "$PHP_APXS" != "no"; then APXS_HTTPD=`$APXS -q SBINDIR`/`$APXS -q TARGET` APACHE_INCLUDE=-I$APXS_INCLUDEDIR - # Test that we're trying to configure with apache 1.x - PHP_AP_EXTRACT_VERSION($APXS_HTTPD) - if test "$APACHE_VERSION" -ge 2000000; then - AC_MSG_ERROR([You have enabled Apache 1.3 support while your server is Apache 2. Please use the appropriate switch --with-apxs2]) - fi - for flag in $APXS_CFLAGS; do case $flag in -D*) APACHE_CPPFLAGS="$APACHE_CPPFLAGS $flag";; --- php5.orig/sapi/apache2filter/config.m4 +++ php5/sapi/apache2filter/config.m4 @@ -59,14 +59,6 @@ if test "$PHP_APXS2FILTER" != "no"; then APACHE_CFLAGS="$APACHE_CPPFLAGS -I$APXS_INCLUDEDIR $APR_CFLAGS $APU_CFLAGS" - # Test that we're trying to configure with apache 2.x - PHP_AP_EXTRACT_VERSION($APXS_HTTPD) - if test "$APACHE_VERSION" -le 2000000; then - AC_MSG_ERROR([You have enabled Apache 2 support while your server is Apache 1.3. Please use the appropriate switch --with-apxs (without the 2)]) - elif test "$APACHE_VERSION" -lt 2000040; then - AC_MSG_ERROR([Please note that Apache version >= 2.0.40 is required]) - fi - APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR` if test -z `$APXS -q SYSCONFDIR`; then INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \ --- php5.orig/sapi/apache_hooks/config.m4 +++ php5/sapi/apache_hooks/config.m4 @@ -57,12 +57,6 @@ if test "$PHP_APACHE_HOOKS" != "no"; the APXS_HTTPD=`$APXS -q SBINDIR`/`$APXS -q TARGET` APACHE_INCLUDE=-I$APXS_INCLUDEDIR - # Test that we're trying to configure with apache 1.x - PHP_AP_EXTRACT_VERSION($APXS_HTTPD) - if test "$APACHE_VERSION" -ge 2000000; then - AC_MSG_ERROR([You have enabled Apache 1.3 support while your server is Apache 2. Please use the appropriate switch --with-apxs2]) - fi - for flag in $APXS_CFLAGS; do case $flag in -D*) APACHE_CPPFLAGS="$APACHE_CPPFLAGS $flag";; �������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-3480.patch������������������������������������������������������������������0000664�0000000�0000000�00000002354�12355546247�013256� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 40ef6e07e0b2cdced57c506e08cf18f47122292d Mon Sep 17 00:00:00 2001 From: Remi Collet <remi@php.net> Date: Tue, 10 Jun 2014 14:22:04 +0200 Subject: [PATCH] Bug #67412 fileinfo: cdf_count_chain insufficient boundary check Upstream: https://github.com/file/file/commit/40bade80cbe2af1d0b2cd0420cebd5d5905a2382 --- ext/fileinfo/libmagic/cdf.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index c9a5d50..ee467a6 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -470,7 +470,8 @@ size_t cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size) { size_t i, j; - cdf_secid_t maxsector = (cdf_secid_t)(sat->sat_len * size); + cdf_secid_t maxsector = (cdf_secid_t)((sat->sat_len * size) + / sizeof(maxsector)); DPRINTF(("Chain:")); for (j = i = 0; sid >= 0; i++, j++) { @@ -480,8 +481,8 @@ cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size) errno = EFTYPE; return (size_t)-1; } - if (sid > maxsector) { - DPRINTF(("Sector %d > %d\n", sid, maxsector)); + if (sid >= maxsector) { + DPRINTF(("Sector %d >= %d\n", sid, maxsector)); errno = EFTYPE; return (size_t)-1; } -- 1.9.2 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-4147.patch������������������������������������������������������������������0000664�0000000�0000000�00000036523�12543257244�013260� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: fix arbitrary code execution via crafted serialized data with unexpected data type Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=d5248f67b58ac3107fec82c5b937fc3f4c89784a Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=0c136a2abd49298b66acb0cad504f0f972f5bfe8 Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=c8eaca013a3922e8383def6158ece2b63f6ec483 Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=75f40ae1f3a7ca837d230f099627d121f9b3a32f Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=ff70b40dc978f3f4c457f72a71bb43fd17ee360b Bug: https://bugs.php.net/bug.php?id=69085 Bug: https://bugs.php.net/bug.php?id=69293 (regression) Index: php5-5.5.12+dfsg/ext/soap/php_encoding.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/soap/php_encoding.c 2015-06-26 08:43:57.394256050 -0400 +++ php5-5.5.12+dfsg/ext/soap/php_encoding.c 2015-06-26 08:43:57.390256008 -0400 @@ -404,12 +404,15 @@ encodePtr enc = NULL; HashTable *ht = Z_OBJPROP_P(data); - if (zend_hash_find(ht, "enc_type", sizeof("enc_type"), (void **)&ztype) == FAILURE) { + if (zend_hash_find(ht, "enc_type", sizeof("enc_type"), (void **)&ztype) == FAILURE || + Z_TYPE_PP(ztype) != IS_LONG) { soap_error0(E_ERROR, "Encoding: SoapVar has no 'enc_type' property"); } - if (zend_hash_find(ht, "enc_stype", sizeof("enc_stype"), (void **)&zstype) == SUCCESS) { - if (zend_hash_find(ht, "enc_ns", sizeof("enc_ns"), (void **)&zns) == SUCCESS) { + if (zend_hash_find(ht, "enc_stype", sizeof("enc_stype"), (void **)&zstype) == SUCCESS && + Z_TYPE_PP(zstype) == IS_STRING) { + if (zend_hash_find(ht, "enc_ns", sizeof("enc_ns"), (void **)&zns) == SUCCESS && + Z_TYPE_PP(zns) == IS_STRING) { enc = get_encoder(SOAP_GLOBAL(sdl), Z_STRVAL_PP(zns), Z_STRVAL_PP(zstype)); } else { zns = NULL; @@ -445,8 +448,10 @@ } if (style == SOAP_ENCODED || (SOAP_GLOBAL(sdl) && encode != enc)) { - if (zend_hash_find(ht, "enc_stype", sizeof("enc_stype"), (void **)&zstype) == SUCCESS) { - if (zend_hash_find(ht, "enc_ns", sizeof("enc_ns"), (void **)&zns) == SUCCESS) { + if (zend_hash_find(ht, "enc_stype", sizeof("enc_stype"), (void **)&zstype) == SUCCESS && + Z_TYPE_PP(zstype) == IS_STRING) { + if (zend_hash_find(ht, "enc_ns", sizeof("enc_ns"), (void **)&zns) == SUCCESS && + Z_TYPE_PP(zns) == IS_STRING) { set_ns_and_type_ex(node, Z_STRVAL_PP(zns), Z_STRVAL_PP(zstype)); } else { set_ns_and_type_ex(node, NULL, Z_STRVAL_PP(zstype)); @@ -454,10 +459,12 @@ } } - if (zend_hash_find(ht, "enc_name", sizeof("enc_name"), (void **)&zname) == SUCCESS) { + if (zend_hash_find(ht, "enc_name", sizeof("enc_name"), (void **)&zname) == SUCCESS && + Z_TYPE_PP(zname) == IS_STRING) { xmlNodeSetName(node, BAD_CAST(Z_STRVAL_PP(zname))); } - if (zend_hash_find(ht, "enc_namens", sizeof("enc_namens"), (void **)&znamens) == SUCCESS) { + if (zend_hash_find(ht, "enc_namens", sizeof("enc_namens"), (void **)&znamens) == SUCCESS && + Z_TYPE_PP(znamens) == IS_STRING) { xmlNsPtr nsp = encode_add_ns(node, Z_STRVAL_PP(znamens)); xmlSetNs(node, nsp); } @@ -3640,18 +3647,21 @@ Z_OBJCE_PP(tmp) == soap_var_class_entry) { zval **ztype; - if (zend_hash_find(Z_OBJPROP_PP(tmp), "enc_type", sizeof("enc_type"), (void **)&ztype) == FAILURE) { + if (zend_hash_find(Z_OBJPROP_PP(tmp), "enc_type", sizeof("enc_type"), (void **)&ztype) == FAILURE || + Z_TYPE_PP(ztype) != IS_LONG) { soap_error0(E_ERROR, "Encoding: SoapVar has no 'enc_type' property"); } cur_type = Z_LVAL_PP(ztype); - if (zend_hash_find(Z_OBJPROP_PP(tmp), "enc_stype", sizeof("enc_stype"), (void **)&ztype) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_PP(tmp), "enc_stype", sizeof("enc_stype"), (void **)&ztype) == SUCCESS && + Z_TYPE_PP(ztype) == IS_STRING) { cur_stype = Z_STRVAL_PP(ztype); } else { cur_stype = NULL; } - if (zend_hash_find(Z_OBJPROP_PP(tmp), "enc_ns", sizeof("enc_ns"), (void **)&ztype) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_PP(tmp), "enc_ns", sizeof("enc_ns"), (void **)&ztype) == SUCCESS && + Z_TYPE_PP(ztype) == IS_STRING) { cur_ns = Z_STRVAL_PP(ztype); } else { cur_ns = NULL; Index: php5-5.5.12+dfsg/ext/soap/php_http.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/soap/php_http.c 2015-06-26 08:43:57.394256050 -0400 +++ php5-5.5.12+dfsg/ext/soap/php_http.c 2015-06-26 08:43:57.390256008 -0400 @@ -36,14 +36,16 @@ { zval **login, **password; - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_proxy_login", sizeof("_proxy_login"), (void **)&login) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_proxy_login", sizeof("_proxy_login"), (void **)&login) == SUCCESS && + Z_TYPE_PP(login) == IS_STRING) { unsigned char* buf; int len; smart_str auth = {0}; smart_str_appendl(&auth, Z_STRVAL_PP(login), Z_STRLEN_PP(login)); smart_str_appendc(&auth, ':'); - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_proxy_password", sizeof("_proxy_password"), (void **)&password) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_proxy_password", sizeof("_proxy_password"), (void **)&password) == SUCCESS && + Z_TYPE_PP(password) == IS_STRING) { smart_str_appendl(&auth, Z_STRVAL_PP(password), Z_STRLEN_PP(password)); } smart_str_0(&auth); @@ -64,14 +66,16 @@ zval **login, **password; if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_login", sizeof("_login"), (void **)&login) == SUCCESS && - !zend_hash_exists(Z_OBJPROP_P(this_ptr), "_digest", sizeof("_digest"))) { + Z_TYPE_PP(login) == IS_STRING && + !zend_hash_exists(Z_OBJPROP_P(this_ptr), "_digest", sizeof("_digest"))) { unsigned char* buf; int len; smart_str auth = {0}; smart_str_appendl(&auth, Z_STRVAL_PP(login), Z_STRLEN_PP(login)); smart_str_appendc(&auth, ':'); - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_password", sizeof("_password"), (void **)&password) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_password", sizeof("_password"), (void **)&password) == SUCCESS && + Z_TYPE_PP(password) == IS_STRING) { smart_str_appendl(&auth, Z_STRVAL_PP(password), Z_STRLEN_PP(password)); } smart_str_0(&auth); @@ -571,6 +575,7 @@ } if (!http_1_1 || (zend_hash_find(Z_OBJPROP_P(this_ptr), "_keep_alive", sizeof("_keep_alive"), (void **)&tmp) == SUCCESS && + (Z_TYPE_PP(tmp) == IS_BOOL || Z_TYPE_PP(tmp) == IS_LONG) && Z_LVAL_PP(tmp) == 0)) { smart_str_append_const(&soap_headers, "\r\n" "Connection: close\r\n"); @@ -804,7 +809,8 @@ } /* Send cookies along with request */ - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) == SUCCESS && + Z_TYPE_PP(cookies) == IS_ARRAY) { zval **data; char *key; int i, n; @@ -847,7 +853,7 @@ smart_str_append_const(&soap_headers, "\r\n"); smart_str_0(&soap_headers); if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"), (void **) &trace) == SUCCESS && - Z_LVAL_PP(trace) > 0) { + (Z_TYPE_PP(trace) == IS_BOOL || Z_TYPE_PP(trace) == IS_LONG) && Z_LVAL_PP(trace) != 0) { add_property_stringl(this_ptr, "__last_request_headers", soap_headers.c, soap_headers.len, 1); } smart_str_appendl(&soap_headers, request, request_size); @@ -892,7 +898,7 @@ } if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"), (void **) &trace) == SUCCESS && - Z_LVAL_PP(trace) > 0) { + (Z_TYPE_PP(trace) == IS_BOOL || Z_TYPE_PP(trace) == IS_LONG) && Z_LVAL_PP(trace) != 0) { add_property_stringl(this_ptr, "__last_response_headers", http_headers, http_header_size, 1); } @@ -941,7 +947,8 @@ char *eqpos, *sempos; zval **cookies; - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) == FAILURE) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) == FAILURE || + Z_TYPE_PP(cookies) != IS_ARRAY) { zval *tmp_cookies; MAKE_STD_ZVAL(tmp_cookies); array_init(tmp_cookies); Index: php5-5.5.12+dfsg/ext/soap/soap.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/soap/soap.c 2015-06-26 08:43:57.394256050 -0400 +++ php5-5.5.12+dfsg/ext/soap/soap.c 2015-06-26 08:43:57.394256050 -0400 @@ -2560,7 +2560,7 @@ } if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"), (void **) &trace) == SUCCESS && - Z_LVAL_PP(trace) > 0) { + (Z_TYPE_PP(trace) == IS_BOOL || Z_TYPE_PP(trace) == IS_LONG) && Z_LVAL_PP(trace) != 0) { add_property_stringl(this_ptr, "__last_request", buf, buf_size, 1); } @@ -2595,7 +2595,7 @@ } ret = FALSE; } else if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"), (void **) &trace) == SUCCESS && - Z_LVAL_PP(trace) > 0) { + (Z_TYPE_PP(trace) == IS_BOOL || Z_TYPE_PP(trace) == IS_LONG) && Z_LVAL_PP(trace) != 0) { add_property_stringl(this_ptr, "__last_response", Z_STRVAL_P(response), Z_STRLEN_P(response), 1); } zval_ptr_dtor(¶ms[4]); @@ -2639,13 +2639,13 @@ SOAP_CLIENT_BEGIN_CODE(); - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"), (void **) &trace) == SUCCESS - && Z_LVAL_PP(trace) > 0) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"), (void **) &trace) == SUCCESS && + (Z_TYPE_PP(trace) == IS_BOOL || Z_TYPE_PP(trace) == IS_LONG) && Z_LVAL_PP(trace) != 0) { zend_hash_del(Z_OBJPROP_P(this_ptr), "__last_request", sizeof("__last_request")); zend_hash_del(Z_OBJPROP_P(this_ptr), "__last_response", sizeof("__last_response")); } - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_soap_version", sizeof("_soap_version"), (void **) &tmp) == SUCCESS - && Z_LVAL_PP(tmp) == SOAP_1_2) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_soap_version", sizeof("_soap_version"), (void **) &tmp) == SUCCESS && + Z_TYPE_PP(tmp) == IS_LONG && Z_LVAL_PP(tmp) == SOAP_1_2) { soap_version = SOAP_1_2; } else { soap_version = SOAP_1_1; @@ -2742,7 +2742,7 @@ zval **uri; smart_str action = {0}; - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "uri", sizeof("uri"), (void *)&uri) == FAILURE) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "uri", sizeof("uri"), (void *)&uri) == FAILURE || Z_TYPE_PP(uri) != IS_STRING) { add_soap_fault(this_ptr, "Client", "Error finding \"uri\" property", NULL, NULL TSRMLS_CC); } else if (location == NULL) { add_soap_fault(this_ptr, "Client", "Error could not find \"location\" property", NULL, NULL TSRMLS_CC); @@ -2900,7 +2900,8 @@ } /* Add default headers */ - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__default_headers", sizeof("__default_headers"), (void **) &tmp)==SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__default_headers", sizeof("__default_headers"), (void **) &tmp)==SUCCESS && + Z_TYPE_PP(tmp) == IS_ARRAY) { HashTable *default_headers = Z_ARRVAL_P(*tmp); if (soap_headers) { if (!free_soap_headers) { @@ -3021,7 +3022,8 @@ return; } - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__last_request", sizeof("__last_request"), (void **)&tmp) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__last_request", sizeof("__last_request"), (void **)&tmp) == SUCCESS && + Z_TYPE_PP(tmp) == IS_STRING) { RETURN_STRINGL(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1); } RETURN_NULL(); @@ -3039,7 +3041,8 @@ return; } - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__last_response", sizeof("__last_response"), (void **)&tmp) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__last_response", sizeof("__last_response"), (void **)&tmp) == SUCCESS && + Z_TYPE_PP(tmp) == IS_STRING) { RETURN_STRINGL(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1); } RETURN_NULL(); @@ -3057,7 +3060,8 @@ return; } - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__last_request_headers", sizeof("__last_request_headers"), (void **)&tmp) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__last_request_headers", sizeof("__last_request_headers"), (void **)&tmp) == SUCCESS && + Z_TYPE_PP(tmp) == IS_STRING) { RETURN_STRINGL(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1); } RETURN_NULL(); @@ -3075,7 +3079,8 @@ return; } - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__last_response_headers", sizeof("__last_response_headers"), (void **)&tmp) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__last_response_headers", sizeof("__last_response_headers"), (void **)&tmp) == SUCCESS && + Z_TYPE_PP(tmp) == IS_STRING) { RETURN_STRINGL(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1); } RETURN_NULL(); @@ -3131,13 +3136,15 @@ } if (val == NULL) { - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) == SUCCESS && + Z_TYPE_PP(cookies) == IS_ARRAY) { zend_hash_del(Z_ARRVAL_PP(cookies), name, name_len+1); } } else { zval *zcookie; - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) == FAILURE) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies", sizeof("_cookies"), (void **)&cookies) == FAILURE || + Z_TYPE_PP(cookies) != IS_ARRAY) { zval *tmp_cookies; MAKE_STD_ZVAL(tmp_cookies); @@ -3969,7 +3976,8 @@ } if (version == SOAP_1_1) { - if (zend_hash_find(prop, "faultcode", sizeof("faultcode"), (void**)&tmp) == SUCCESS) { + if (zend_hash_find(prop, "faultcode", sizeof("faultcode"), (void**)&tmp) == SUCCESS && + Z_TYPE_PP(tmp) == IS_STRING) { size_t new_len; xmlNodePtr node = xmlNewNode(NULL, BAD_CAST("faultcode")); char *str = php_escape_html_entities((unsigned char*)Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), &new_len, 0, 0, NULL TSRMLS_CC); @@ -3994,7 +4002,8 @@ } detail_name = "detail"; } else { - if (zend_hash_find(prop, "faultcode", sizeof("faultcode"), (void**)&tmp) == SUCCESS) { + if (zend_hash_find(prop, "faultcode", sizeof("faultcode"), (void**)&tmp) == SUCCESS && + Z_TYPE_PP(tmp) == IS_STRING) { size_t new_len; xmlNodePtr node = xmlNewChild(param, ns, BAD_CAST("Code"), NULL); char *str = php_escape_html_entities((unsigned char*)Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), &new_len, 0, 0, NULL TSRMLS_CC); @@ -4234,7 +4243,8 @@ } } } else { - if (zend_hash_find(Z_OBJPROP_P(this_ptr), "style", sizeof("style"), (void **)&zstyle) == SUCCESS) { + if (zend_hash_find(Z_OBJPROP_P(this_ptr), "style", sizeof("style"), (void **)&zstyle) == SUCCESS && + Z_TYPE_PP(zstyle) == IS_LONG) { style = Z_LVAL_PP(zstyle); } else { style = SOAP_RPC; @@ -4257,7 +4267,7 @@ } if (zend_hash_find(Z_OBJPROP_P(this_ptr), "use", sizeof("use"), (void **)&zuse) == SUCCESS && - Z_LVAL_PP(zuse) == SOAP_LITERAL) { + Z_TYPE_PP(zuse) == IS_LONG && Z_LVAL_PP(zuse) == SOAP_LITERAL) { use = SOAP_LITERAL; } else { use = SOAP_ENCODED; @@ -4387,6 +4397,7 @@ zval **param_data; if (zend_hash_find(Z_OBJPROP_P(param_val), "param_name", sizeof("param_name"), (void **)¶m_name) == SUCCESS && + Z_TYPE_PP(param_name) == IS_STRING && zend_hash_find(Z_OBJPROP_P(param_val), "param_data", sizeof("param_data"), (void **)¶m_data) == SUCCESS) { param_val = *param_data; name = Z_STRVAL_PP(param_name); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-10712-2.patch���������������������������������������������������������������0000664�0000000�0000000�00000013747�13252723635�013476� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 2a7d8c0a06de8123034b136b0c717576b6e36fae Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 1 Feb 2016 18:58:02 -0800 Subject: [PATCH] fix tests --- ext/standard/tests/file/stream_rfc2397_002.phpt | 56 +++++++++++----------- .../tests/network/socket_get_status_basic.phpt | 12 ++--- ext/zip/tests/stream_meta_data.phpt | 16 +++---- ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt | 20 ++++---- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/ext/standard/tests/file/stream_rfc2397_002.phpt b/ext/standard/tests/file/stream_rfc2397_002.phpt index 980863b..1dce5ad 100644 --- a/ext/standard/tests/file/stream_rfc2397_002.phpt +++ b/ext/standard/tests/file/stream_rfc2397_002.phpt @@ -34,6 +34,8 @@ foreach($streams as $stream) <?php exit(0); ?> --EXPECTF-- array(7) { + ["base64"]=> + bool(false) ["wrapper_type"]=> string(7) "RFC2397" ["stream_type"]=> @@ -46,8 +48,6 @@ array(7) { bool(true) ["uri"]=> string(8) "data://," - ["base64"]=> - bool(false) } NULL @@ -55,6 +55,8 @@ Warning: fopen(data://): failed to open stream: rfc2397: no comma in URL in %sst NULL NULL array(7) { + ["base64"]=> + bool(true) ["wrapper_type"]=> string(7) "RFC2397" ["stream_type"]=> @@ -67,8 +69,6 @@ array(7) { bool(true) ["uri"]=> string(15) "data://;base64," - ["base64"]=> - bool(true) } NULL @@ -84,6 +84,10 @@ Warning: fopen(data://foo=bar,): failed to open stream: rfc2397: illegal media t NULL NULL array(8) { + ["mediatype"]=> + string(10) "text/plain" + ["base64"]=> + bool(false) ["wrapper_type"]=> string(7) "RFC2397" ["stream_type"]=> @@ -96,10 +100,6 @@ array(8) { bool(true) ["uri"]=> string(18) "data://text/plain," - ["mediatype"]=> - string(10) "text/plain" - ["base64"]=> - bool(false) } NULL @@ -107,6 +107,12 @@ Warning: fopen(data://text/plain;foo,): failed to open stream: rfc2397: illegal NULL NULL array(9) { + ["mediatype"]=> + string(10) "text/plain" + ["foo"]=> + string(3) "bar" + ["base64"]=> + bool(false) ["wrapper_type"]=> string(7) "RFC2397" ["stream_type"]=> @@ -119,12 +125,6 @@ array(9) { bool(true) ["uri"]=> string(26) "data://text/plain;foo=bar," - ["mediatype"]=> - string(10) "text/plain" - ["foo"]=> - string(3) "bar" - ["base64"]=> - bool(false) } string(3) "bar" @@ -132,6 +132,12 @@ Warning: fopen(data://text/plain;foo=bar;bla,): failed to open stream: rfc2397: NULL NULL array(9) { + ["mediatype"]=> + string(10) "text/plain" + ["foo"]=> + string(3) "bar" + ["base64"]=> + bool(true) ["wrapper_type"]=> string(7) "RFC2397" ["stream_type"]=> @@ -144,12 +150,6 @@ array(9) { bool(true) ["uri"]=> string(33) "data://text/plain;foo=bar;base64," - ["mediatype"]=> - string(10) "text/plain" - ["foo"]=> - string(3) "bar" - ["base64"]=> - bool(true) } string(3) "bar" @@ -157,6 +157,14 @@ Warning: fopen(data://text/plain;foo=bar;bar=baz): failed to open stream: rfc239 NULL NULL array(10) { + ["mediatype"]=> + string(10) "text/plain" + ["foo"]=> + string(3) "bar" + ["bar"]=> + string(3) "baz" + ["base64"]=> + bool(false) ["wrapper_type"]=> string(7) "RFC2397" ["stream_type"]=> @@ -169,14 +177,6 @@ array(10) { bool(true) ["uri"]=> string(34) "data://text/plain;foo=bar;bar=baz," - ["mediatype"]=> - string(10) "text/plain" - ["foo"]=> - string(3) "bar" - ["bar"]=> - string(3) "baz" - ["base64"]=> - bool(false) } string(3) "bar" ===DONE=== diff --git a/ext/standard/tests/network/socket_get_status_basic.phpt b/ext/standard/tests/network/socket_get_status_basic.phpt index 46215f9..32a8d9c 100644 --- a/ext/standard/tests/network/socket_get_status_basic.phpt +++ b/ext/standard/tests/network/socket_get_status_basic.phpt @@ -18,6 +18,12 @@ fclose($server); ?> --EXPECTF-- array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(%d) "tcp_socket%S" ["mode"]=> @@ -26,10 +32,4 @@ array(7) { int(0) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } diff --git a/ext/zip/tests/stream_meta_data.phpt b/ext/zip/tests/stream_meta_data.phpt index bd08098..63f720a 100644 --- a/ext/zip/tests/stream_meta_data.phpt +++ b/ext/zip/tests/stream_meta_data.phpt @@ -35,6 +35,12 @@ fclose($fp); ?> --EXPECTF-- array(8) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(3) "zip" ["mode"]=> @@ -45,14 +51,14 @@ array(8) { bool(false) ["uri"]=> string(3) "foo" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(11) "zip wrapper" ["stream_type"]=> @@ -65,10 +71,4 @@ array(9) { bool(false) ["uri"]=> string(%d) "zip://%stest_with_comment.zip#foo" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } diff --git a/ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt b/ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt index 2f76b46..a9d208e 100644 --- a/ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt +++ b/ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt @@ -25,6 +25,12 @@ gzclose($h); --EXPECTF-- no wrapper array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(4) "ZLIB" ["mode"]=> @@ -33,16 +39,16 @@ array(7) { int(0) ["seekable"]=> bool(true) +} + +with wrapper +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - -with wrapper -array(9) { ["wrapper_type"]=> string(4) "ZLIB" ["stream_type"]=> @@ -55,11 +61,5 @@ array(9) { bool(true) ["uri"]=> string(%d) "compress.zlib://%s/004.txt.gz" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } ===DONE=== \ No newline at end of file -- 2.1.4 �������������������������debian/patches/CVE-2014-9427.patch������������������������������������������������������������������0000664�0000000�0000000�00000002514�12467421334�013254� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From f9ad3086693fce680fbe246e4a45aa92edd2ac35 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 30 Dec 2014 01:23:05 -0800 Subject: [PATCH] FIx bug #68618 (out of bounds read crashes php-cgi) --- NEWS | 2 ++ sapi/cgi/cgi_main.c | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) Index: php5-5.5.12+dfsg/sapi/cgi/cgi_main.c =================================================================== --- php5-5.5.12+dfsg.orig/sapi/cgi/cgi_main.c 2015-02-13 10:05:42.564459058 -0500 +++ php5-5.5.12+dfsg/sapi/cgi/cgi_main.c 2015-02-13 10:05:42.560459025 -0500 @@ -2432,14 +2432,17 @@ int i = 1; c = file_handle.handle.stream.mmap.buf[i++]; - while (c != '\n' && c != '\r' && c != EOF) { + while (c != '\n' && c != '\r' && i < file_handle.handle.stream.mmap.len) { c = file_handle.handle.stream.mmap.buf[i++]; } if (c == '\r') { - if (file_handle.handle.stream.mmap.buf[i] == '\n') { + if (i < file_handle.handle.stream.mmap.len && file_handle.handle.stream.mmap.buf[i] == '\n') { i++; } } + if(i > file_handle.handle.stream.mmap.len) { + i = file_handle.handle.stream.mmap.len; + } file_handle.handle.stream.mmap.buf += i; file_handle.handle.stream.mmap.len -= i; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/gdIOCtx.patch������������������������������������������������������������������������0000664�0000000�0000000�00000006361�12300436054�013144� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- php5.orig/ext/gd/gd_ctx.c +++ php5/ext/gd/gd_ctx.c @@ -46,33 +46,6 @@ static void _php_image_output_ctxfree(st } } -static void _php_image_stream_putc(struct gdIOCtx *ctx, int c) { - char ch = (char) c; - php_stream * stream = (php_stream *)ctx->data; - TSRMLS_FETCH(); - php_stream_write(stream, &ch, 1); -} - -static int _php_image_stream_putbuf(struct gdIOCtx *ctx, const void* buf, int l) -{ - php_stream * stream = (php_stream *)ctx->data; - TSRMLS_FETCH(); - return php_stream_write(stream, (void *)buf, l); -} - -static void _php_image_stream_ctxfree(struct gdIOCtx *ctx) -{ - TSRMLS_FETCH(); - - if(ctx->data) { - php_stream_close((php_stream *) ctx->data); - ctx->data = NULL; - } - if(ctx) { - efree(ctx); - } -} - /* {{{ _php_image_output_ctx */ static void _php_image_output_ctx(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)()) { @@ -81,12 +54,11 @@ static void _php_image_output_ctx(INTERN int file_len = 0; long quality, basefilter; gdImagePtr im; + FILE *fp = NULL; int argc = ZEND_NUM_ARGS(); int q = -1, i; int f = -1; gdIOCtx *ctx = NULL; - zval *to_zval = NULL; - php_stream *stream; /* The third (quality) parameter for Wbmp stands for the threshold when called from image2wbmp(). * The third (quality) parameter for Wbmp and Xbm stands for the foreground color index when called @@ -103,7 +75,7 @@ static void _php_image_output_ctx(INTERN * PHP_GDIMG_TYPE_WBM * PHP_GDIMG_TYPE_WEBP * */ - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|z/!ll", &imgind, &to_zval, &quality, &basefilter) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|p!ll", &imgind, &file, &file_len, &quality, &basefilter) == FAILURE) { return; } } @@ -117,21 +89,19 @@ static void _php_image_output_ctx(INTERN } } - if (argc > 1 && to_zval != NULL) { - if (Z_TYPE_P(to_zval) == IS_RESOURCE) { - php_stream_from_zval_no_verify(stream, &to_zval); - if (stream == NULL) { - RETURN_FALSE; - } - } else if (Z_TYPE_P(to_zval) == IS_STRING) { - stream = php_stream_open_wrapper(Z_STRVAL_P(to_zval), "wb", REPORT_ERRORS|IGNORE_PATH|IGNORE_URL_WIN, NULL); - if (stream == NULL) { - RETURN_FALSE; - } - } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid 2nd parameter, it must a filename or a stream"); + if (argc > 1 && file_len) { + if (strlen(file) != file_len) { + RETURN_FALSE; + } + PHP_GD_CHECK_OPEN_BASEDIR(file, "Invalid filename"); + + fp = VCWD_FOPEN(file, "wb"); + if (!fp) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open '%s' for writing: %s", file, strerror(errno)); RETURN_FALSE; } + + ctx = gdNewFileCtx(fp); } else { ctx = emalloc(sizeof(gdIOCtx)); ctx->putC = _php_image_output_putc; @@ -145,14 +115,6 @@ static void _php_image_output_ctx(INTERN #endif } - if (!ctx) { - ctx = emalloc(sizeof(gdIOCtx)); - ctx->putC = _php_image_stream_putc; - ctx->putBuf = _php_image_stream_putbuf; - ctx->gd_free = _php_image_stream_ctxfree; - ctx->data = (void *)stream; - } - switch(image_type) { case PHP_GDIMG_CONVERT_WBM: if(q<0||q>255) { @@ -191,6 +153,11 @@ static void _php_image_output_ctx(INTERN ctx->gd_free(ctx); + if(fp) { + fflush(fp); + fclose(fp); + } + RETURN_TRUE; } /* }}} */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-2787.patch������������������������������������������������������������������0000664�0000000�0000000�00000002463�12514151020�013243� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: fix arbitrary code exection via process_nested_data use-after-free Origin: backport, https://github.com/php/php-src/commit/780222f97f47644a6a118ada86a269a96a1e8134 Origin: backport, https://github.com/php/php-src/commit/d76b293ac71aa5bd4e9a433192afef6e0dd5a4ee Bug: https://bugs.php.net/bug.php?id=68976 Index: php5-5.5.12+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/var_unserializer.c 2015-04-17 05:24:13.936048112 -0400 +++ php5-5.5.12+dfsg/ext/standard/var_unserializer.c 2015-04-17 05:24:13.936048112 -0400 @@ -340,6 +340,7 @@ zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof data, NULL); } + var_push_dtor(var_hash, &data); zval_dtor(key); FREE_ZVAL(key); Index: php5-5.5.12+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/var_unserializer.re 2015-04-17 05:24:13.936048112 -0400 +++ php5-5.5.12+dfsg/ext/standard/var_unserializer.re 2015-04-17 05:24:13.936048112 -0400 @@ -346,6 +346,7 @@ zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof data, NULL); } + var_push_dtor(var_hash, &data); zval_dtor(key); FREE_ZVAL(key); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/php-5.3.9-mysqlnd.patch��������������������������������������������������������������0000664�0000000�0000000�00000001601�12300436054�014561� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- php5.orig/ext/mysqlnd/mysqlnd.c +++ php5/ext/mysqlnd/mysqlnd.c @@ -920,7 +921,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, connec if (host_len == sizeof("localhost") - 1 && !strncasecmp(host, "localhost", host_len)) { DBG_INF_FMT("socket=%s", socket_or_pipe? socket_or_pipe:"n/a"); if (!socket_or_pipe) { - socket_or_pipe = "/tmp/mysql.sock"; + socket_or_pipe = "/var/run/mysqld/mysqld.sock"; } transport_len = mnd_sprintf(&transport, 0, "unix://%s", socket_or_pipe); unix_socket = TRUE; --- php5.orig/ext/pdo_mysql/pdo_mysql.c +++ php5/ext/pdo_mysql/pdo_mysql.c @@ -50,7 +50,7 @@ ZEND_DECLARE_MODULE_GLOBALS(pdo_mysql) # define PDO_MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR # else # if !PHP_WIN32 -# define PDO_MYSQL_UNIX_ADDR "/tmp/mysql.sock" +# define PDO_MYSQL_UNIX_ADDR "/var/run/mysqld/mysqld.sock" # else # define PDO_MYSQL_UNIX_ADDR NULL # endif �������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-5385.patch������������������������������������������������������������������0000664�0000000�0000000�00000011220�12746412337�013252� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: fix proxy request header vulnerability (httpoxy) Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=98b9dfaec95e6f910f125ed172cdbd25abd006ec Origin: backport, http://git.php.net/?p=php-src.git;a=commit;h=9ebc96116b609cd3c969c2d5a460aaa904c2afec Bug: https://bugs.php.net/bug.php?id=72573 Index: php5-5.5.9+dfsg/ext/standard/basic_functions.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/basic_functions.c 2016-07-28 08:39:39.276018097 -0400 +++ php5-5.5.9+dfsg/ext/standard/basic_functions.c 2016-07-28 08:41:18.525201478 -0400 @@ -654,8 +654,9 @@ ZEND_ARG_INFO(0, proper_address) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO(arginfo_getenv, 0) +ZEND_BEGIN_ARG_INFO_EX(arginfo_getenv, 0, 0, 1) ZEND_ARG_INFO(0, varname) + ZEND_ARG_INFO(0, local_only) ZEND_END_ARG_INFO() #ifdef HAVE_PUTENV @@ -3541,7 +3542,7 @@ #define BASIC_ADD_SUBMODULE(module) \ zend_hash_add_empty_element(&basic_submodules, #module, strlen(#module)); - + #define BASIC_RINIT_SUBMODULE(module) \ if (zend_hash_exists(&basic_submodules, #module, strlen(#module))) { \ PHP_RINIT(module)(INIT_FUNC_ARGS_PASSTHRU); \ @@ -4009,21 +4010,24 @@ * System Functions * ********************/ -/* {{{ proto string getenv(string varname) +/* {{{ proto string getenv(string varname[, bool local_only]) Get the value of an environment variable */ PHP_FUNCTION(getenv) { char *ptr, *str; int str_len; + zend_bool local_only = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &str, &str_len, &local_only) == FAILURE) { RETURN_FALSE; } - /* SAPI method returns an emalloc()'d string */ - ptr = sapi_getenv(str, str_len TSRMLS_CC); - if (ptr) { - RETURN_STRING(ptr, 0); + if (!local_only) { + /* SAPI method returns an emalloc()'d string */ + ptr = sapi_getenv(str, str_len TSRMLS_CC); + if (ptr) { + RETURN_STRING(ptr, 0); + } } #ifdef PHP_WIN32 { Index: php5-5.5.9+dfsg/main/SAPI.c =================================================================== --- php5-5.5.9+dfsg.orig/main/SAPI.c 2016-07-28 08:40:15.596451276 -0400 +++ php5-5.5.9+dfsg/main/SAPI.c 2016-07-28 08:41:16.185173587 -0400 @@ -1011,7 +1011,11 @@ SAPI_API char *sapi_getenv(char *name, size_t name_len TSRMLS_DC) { - if (sapi_module.getenv) { + if (!strncasecmp(name, "HTTP_PROXY", name_len)) { + /* Ugly fix for HTTP_PROXY issue */ + return NULL; + } + if (sapi_module.getenv) { char *value, *tmp = sapi_module.getenv(name, name_len TSRMLS_CC); if (tmp) { value = estrdup(tmp); Index: php5-5.5.9+dfsg/main/php_variables.c =================================================================== --- php5-5.5.9+dfsg.orig/main/php_variables.c 2014-02-05 05:00:36.000000000 -0500 +++ php5-5.5.9+dfsg/main/php_variables.c 2016-07-28 08:41:16.185173587 -0400 @@ -718,10 +718,26 @@ zend_hash_update(&EG(symbol_table), name, name_len + 1, &vars, sizeof(zval *), NULL); Z_ADDREF_P(vars); - + return 0; /* don't rearm */ } +/* Upgly hack to fix HTTP_PROXY issue */ +static void check_http_proxy(HashTable *var_table) { + if (zend_hash_exists(var_table, "HTTP_PROXY", sizeof("HTTP_PROXY"))) { + char *local_proxy = getenv("HTTP_PROXY"); + + if (!local_proxy) { + zend_hash_del(var_table, "HTTP_PROXY", sizeof("HTTP_PROXY")); + } else { + zval *local_zval; + ALLOC_INIT_ZVAL(local_zval); + ZVAL_STRING(local_zval, local_proxy, 1); + zend_hash_update(var_table, "HTTP_PROXY", sizeof("HTTP_PROXY"), &local_zval, sizeof(zval **), NULL); + } + } +} + static zend_bool php_auto_globals_create_server(const char *name, uint name_len TSRMLS_DC) { if (PG(variables_order) && (strchr(PG(variables_order),'S') || strchr(PG(variables_order),'s'))) { @@ -754,9 +770,10 @@ PG(http_globals)[TRACK_VARS_SERVER] = server_vars; } + check_http_proxy(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER])); zend_hash_update(&EG(symbol_table), name, name_len + 1, &PG(http_globals)[TRACK_VARS_SERVER], sizeof(zval *), NULL); Z_ADDREF_P(PG(http_globals)[TRACK_VARS_SERVER]); - + return 0; /* don't rearm */ } @@ -770,11 +787,12 @@ zval_ptr_dtor(&PG(http_globals)[TRACK_VARS_ENV]); } PG(http_globals)[TRACK_VARS_ENV] = env_vars; - + if (PG(variables_order) && (strchr(PG(variables_order),'E') || strchr(PG(variables_order),'e'))) { php_import_environment_variables(PG(http_globals)[TRACK_VARS_ENV] TSRMLS_CC); } + check_http_proxy(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_ENV])); zend_hash_update(&EG(symbol_table), name, name_len + 1, &PG(http_globals)[TRACK_VARS_ENV], sizeof(zval *), NULL); Z_ADDREF_P(PG(http_globals)[TRACK_VARS_ENV]); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-2301.patch������������������������������������������������������������������0000664�0000000�0000000�00000001620�12501612573�013226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From b2cf3f064b8f5efef89bb084521b61318c71781b Mon Sep 17 00:00:00 2001 From: Xinchen Hui <laruence@php.net> Date: Thu, 29 Jan 2015 00:00:09 +0800 Subject: [PATCH] Fixed bug #68901 (use after free) --- NEWS | 3 +++ ext/phar/phar_object.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) Index: php5-5.5.12+dfsg/ext/phar/phar_object.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/phar/phar_object.c 2015-03-16 13:31:12.102645101 -0400 +++ php5-5.5.12+dfsg/ext/phar/phar_object.c 2015-03-16 13:31:12.094645041 -0400 @@ -2138,8 +2138,8 @@ } its_ok: if (SUCCESS == php_stream_stat_path(newpath, &ssb)) { - efree(oldpath); zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "phar \"%s\" exists and must be unlinked prior to conversion", newpath); + efree(oldpath); return NULL; } if (!phar->is_data) { ����������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7416.patch������������������������������������������������������������������0000664�0000000�0000000�00000001410�12773246645�013256� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 6d55ba265637d6adf0ba7e9c9ef11187d1ec2f5b Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 5 Sep 2016 18:01:35 -0700 Subject: [PATCH] Fix bug #73007: add locale length check --- ext/intl/msgformat/msgformat_format.c | 2 ++ 1 file changed, 2 insertions(+) Index: php5-5.5.9+dfsg/ext/intl/msgformat/msgformat_format.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/intl/msgformat/msgformat_format.c 2016-09-29 13:21:39.084127722 -0400 +++ php5-5.5.9+dfsg/ext/intl/msgformat/msgformat_format.c 2016-09-29 13:21:39.080127677 -0400 @@ -118,6 +118,8 @@ RETURN_FALSE; } + INTL_CHECK_LOCALE_LEN(slocale_len); + msgformat_data_init(&mfo->mf_data TSRMLS_CC); if(pattern && pattern_len) { ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-6832.patch������������������������������������������������������������������0000664�0000000�0000000�00000004370�12602473337�013255� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From b7fa67742cd8d2b0ca0c0273b157f6ffee9ad6e2 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 26 Jul 2015 17:25:25 -0700 Subject: [PATCH] Fix bug #70068 (Dangling pointer in the unserialization of ArrayObject items) --- ext/spl/spl_array.c | 90 +++++++++++++++++++++++---------------------- ext/spl/tests/bug70068.phpt | 9 +++++ 2 files changed, 56 insertions(+), 43 deletions(-) create mode 100644 ext/spl/tests/bug70068.phpt Index: php5-5.5.9+dfsg/ext/spl/spl_array.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_array.c 2015-09-29 07:32:44.874756676 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_array.c 2015-09-29 07:32:44.870756629 -0400 @@ -1755,14 +1755,12 @@ ALLOC_INIT_ZVAL(pflags); if (!php_var_unserialize(&pflags, &p, s + buf_len, &var_hash TSRMLS_CC) || Z_TYPE_P(pflags) != IS_LONG) { - zval_ptr_dtor(&pflags); goto outexcept; } var_push_dtor(&var_hash, &pflags); --p; /* for ';' */ flags = Z_LVAL_P(pflags); - zval_ptr_dtor(&pflags); /* flags needs to be verified and we also need to verify whether the next * thing we get is ';'. After that we require an 'm' or somethign else * where 'm' stands for members and anything else should be an array. If @@ -1814,10 +1812,16 @@ /* done reading $serialized */ PHP_VAR_UNSERIALIZE_DESTROY(var_hash); + if (pflags) { + zval_ptr_dtor(&pflags); + } return; outexcept: PHP_VAR_UNSERIALIZE_DESTROY(var_hash); + if (pflags) { + zval_ptr_dtor(&pflags); + } zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "Error at offset %ld of %d bytes", (long)((char*)p - buf), buf_len); return; Index: php5-5.5.9+dfsg/ext/spl/tests/bug70068.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/spl/tests/bug70068.phpt 2015-09-29 07:32:44.874756676 -0400 @@ -0,0 +1,9 @@ +--TEST-- +Bug #70068 (Dangling pointer in the unserialization of ArrayObject items) +--FILE-- +<?php +$a = unserialize('a:3:{i:0;C:11:"ArrayObject":20:{x:i:0;r:3;;m:a:0:{};}i:1;d:11;i:2;S:31:"AAAAAAAABBBBCCCC\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00";}'); +?> +OK +--EXPECT-- +OK \ No newline at end of file ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/112-proc_open.patch������������������������������������������������������������������0000664�0000000�0000000�00000000610�12300436054�014117� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- php5.orig/ext/standard/proc_open.c +++ php5/ext/standard/proc_open.c @@ -61,7 +61,7 @@ * */ #ifdef PHP_CAN_SUPPORT_PROC_OPEN -#if 0 && HAVE_PTSNAME && HAVE_GRANTPT && HAVE_UNLOCKPT && HAVE_SYS_IOCTL_H && HAVE_TERMIOS_H +#if HAVE_PTSNAME && HAVE_GRANTPT && HAVE_UNLOCKPT && HAVE_SYS_IOCTL_H && HAVE_TERMIOS_H # include <sys/ioctl.h> # include <termios.h> # define PHP_CAN_DO_PTS 1 ������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-0207.patch������������������������������������������������������������������0000664�0000000�0000000�00000002206�12355546226�013241� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 4fcb9a9d1b1063a65fbeb27395de4979c75bd962 Mon Sep 17 00:00:00 2001 From: Remi Collet <remi@php.net> Date: Tue, 3 Jun 2014 11:05:00 +0200 Subject: [PATCH] Fix bug #67326 fileinfo: cdf_read_short_sector insufficient boundary check Upstream fix https://github.com/file/file/commit/6d209c1c489457397a5763bca4b28e43aac90391.patch Only revelant part applied --- ext/fileinfo/libmagic/cdf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index 4712e84..16649f1 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -365,10 +365,10 @@ cdf_read_short_sector(const cdf_stream_t *sst, void *buf, size_t offs, size_t ss = CDF_SHORT_SEC_SIZE(h); size_t pos = CDF_SHORT_SEC_POS(h, id); assert(ss == len); - if (pos > CDF_SEC_SIZE(h) * sst->sst_len) { + if (pos + len > CDF_SEC_SIZE(h) * sst->sst_len) { DPRINTF(("Out of bounds read %" SIZE_T_FORMAT "u > %" SIZE_T_FORMAT "u\n", - pos, CDF_SEC_SIZE(h) * sst->sst_len)); + pos + len, CDF_SEC_SIZE(h) * sst->sst_len)); return -1; } (void)memcpy(((char *)buf) + offs, -- 1.9.2 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-4598.patch������������������������������������������������������������������0000664�0000000�0000000�00000051021�12545232072�013252� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: fix more missing file path null byte checks Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=f7d7befae8bcc2db0093f8adaa9f72eeb7ad891e Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=eee8b6c33fc968ef8c496db8fb54e8c9d9d5a8f9 Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=a643ccfb90750e0d830106588d2a46af87706b5b Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=634aa0a2dbf8ec5e6fabb4ee01c6d1355ba7ee67 Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=1defbb25ed69e7a1a90e2bcb2ee3b9190ea06577 Bug: https://bugs.php.net/bug.php?id=69719 Index: php5-5.5.9+dfsg/ext/dom/document.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/dom/document.c 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/dom/document.c 2015-07-02 08:53:09.288980695 -0400 @@ -1754,7 +1754,7 @@ char *file; long options = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &id, dom_document_class_entry, &file, &file_len, &options) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op|l", &id, dom_document_class_entry, &file, &file_len, &options) == FAILURE) { return; } @@ -1984,7 +1984,7 @@ int is_valid; char resolved_path[MAXPATHLEN + 1]; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op|l", &id, dom_document_class_entry, &source, &source_len, &flags) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &id, dom_document_class_entry, &source, &source_len, &flags) == FAILURE) { return; } @@ -1997,6 +1997,10 @@ switch (type) { case DOM_LOAD_FILE: + if (CHECK_NULL_PATH(source, source_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Schema file source"); + RETURN_FALSE; + } valid_file = _dom_get_valid_file_path(source, resolved_path, MAXPATHLEN TSRMLS_CC); if (!valid_file) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Schema file source"); @@ -2080,7 +2084,7 @@ int is_valid; char resolved_path[MAXPATHLEN + 1]; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op", &id, dom_document_class_entry, &source, &source_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_document_class_entry, &source, &source_len) == FAILURE) { return; } @@ -2093,6 +2097,10 @@ switch (type) { case DOM_LOAD_FILE: + if (CHECK_NULL_PATH(source, source_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid RelaxNG file source"); + RETURN_FALSE; + } valid_file = _dom_get_valid_file_path(source, resolved_path, MAXPATHLEN TSRMLS_CC); if (!valid_file) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid RelaxNG file source"); @@ -2173,7 +2181,7 @@ id = getThis(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|l", &source, &source_len, &options) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &source, &source_len, &options) == FAILURE) { return; } @@ -2183,6 +2191,10 @@ } if (mode == DOM_LOAD_FILE) { + if (CHECK_NULL_PATH(source, source_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid file source"); + RETURN_FALSE; + } ctxt = htmlCreateFileParserCtxt(source, NULL); } else { source_len = xmlStrlen(source); @@ -2271,7 +2283,7 @@ char *file; const char *encoding; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_document_class_entry, &file, &file_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op", &id, dom_document_class_entry, &file, &file_len) == FAILURE) { return; } Index: php5-5.5.9+dfsg/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt 2015-07-02 08:53:09.288980695 -0400 @@ -15,9 +15,9 @@ assert('$result === false'); $doc = new DOMDocument(); $result = $doc->loadHTMLFile("text.html\0something"); -assert('$result === null'); +assert('$result === false'); ?> --EXPECTF-- %r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile(): Empty string supplied as input %s -%r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile() expects parameter 1 to be a valid path, string given %s +%r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile(): Invalid file source %s Index: php5-5.5.9+dfsg/ext/gd/gd.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/gd/gd.c 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/gd/gd.c 2015-07-02 08:53:09.292980742 -0400 @@ -1735,7 +1735,7 @@ long cx, cy, w, h, ST, E, col, style; gdImagePtr im; int e, st; - + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllllll", &IM, &cx, &cy, &w, &h, &ST, &E, &col, &style) == FAILURE) { return; } @@ -1976,7 +1976,7 @@ if ( handle == 0 ) { goto clean; } - pPrintWindow = (tPrintWindow) GetProcAddress(handle, "PrintWindow"); + pPrintWindow = (tPrintWindow) GetProcAddress(handle, "PrintWindow"); if ( pPrintWindow ) { pPrintWindow(window, memDC, (UINT) client_area); @@ -3845,7 +3845,7 @@ if (zend_hash_get_current_data_ex(HASH_OF(EXT), (void **) &item, &pos) == FAILURE) { continue; } - + if (strcmp("linespacing", key) == 0) { convert_to_double_ex(item); strex.flags |= gdFTEX_LINESPACE; @@ -3924,7 +3924,7 @@ struct stat st; #endif - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &file, &file_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &file, &file_len) == FAILURE) { return; } @@ -4264,11 +4264,11 @@ if (argc != 3 && argc != 6) { ZEND_WRONG_PARAM_COUNT(); } - + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "srl|lld", &str, &str_len, &fnt, &sz, &sp, &wd, &angle) == FAILURE) { return; } - + if (argc == 6) { space = sp; add_width = wd; Index: php5-5.5.9+dfsg/ext/gd/tests/imageloadfont_error1.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/gd/tests/imageloadfont_error1.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/gd/tests/imageloadfont_error1.phpt 2015-07-02 08:53:09.292980742 -0400 @@ -3,7 +3,7 @@ --CREDITS-- Neveo Harrison <neveoo [at] gmail [dot] com> #testfest #tek11 --SKIPIF-- -<?php +<?php if (!extension_loaded("gd")) die("skip GD not present"); ?> --FILE-- @@ -11,5 +11,5 @@ var_dump( imageloadfont(array()) ); ?> --EXPECTF-- -Warning: imageloadfont() expects parameter 1 to be string, array given in %s on line %d -NULL \ No newline at end of file +Warning: imageloadfont() expects parameter 1 to be a valid path, array given in %s on line %d +NULL Index: php5-5.5.9+dfsg/ext/zlib/tests/gzopen_variation1.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/zlib/tests/gzopen_variation1.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/zlib/tests/gzopen_variation1.phpt 2015-07-02 08:53:09.292980742 -0400 @@ -1,17 +1,17 @@ --TEST-- -Test gzopen() function : usage variation +Test gzopen() function : usage variation --SKIPIF-- -<?php +<?php if (!extension_loaded("zlib")) { - print "skip - zlib extension not loaded"; -} + print "skip - zlib extension not loaded"; +} ?> --FILE-- <?php /* Prototype : resource gzopen(string filename, string mode [, int use_include_path]) - * Description: Open a .gz-file and return a .gz-file pointer + * Description: Open a .gz-file and return a .gz-file pointer * Source code: ext/zlib/zlib.c - * Alias to functions: + * Alias to functions: */ echo "*** Testing gzopen() : usage variation ***\n"; @@ -102,9 +102,9 @@ // unset data 'unset var' => @$unset_var, - + // resource variable - 'resource' => $fp + 'resource' => $fp ); // loop through each element of the array for filename @@ -158,19 +158,19 @@ bool(false) --empty array-- -Error: 2 - gzopen() expects parameter 1 to be string, array given, %s(%d) +Error: 2 - gzopen() expects parameter 1 to be a valid path, array given, %s(%d) NULL --int indexed array-- -Error: 2 - gzopen() expects parameter 1 to be string, array given, %s(%d) +Error: 2 - gzopen() expects parameter 1 to be a valid path, array given, %s(%d) NULL --associative array-- -Error: 2 - gzopen() expects parameter 1 to be string, array given, %s(%d) +Error: 2 - gzopen() expects parameter 1 to be a valid path, array given, %s(%d) NULL --nested arrays-- -Error: 2 - gzopen() expects parameter 1 to be string, array given, %s(%d) +Error: 2 - gzopen() expects parameter 1 to be a valid path, array given, %s(%d) NULL --uppercase NULL-- @@ -210,7 +210,7 @@ bool(false) --instance of classWithoutToString-- -Error: 2 - gzopen() expects parameter 1 to be string, object given, %s(%d) +Error: 2 - gzopen() expects parameter 1 to be a valid path, object given, %s(%d) NULL --undefined var-- @@ -222,7 +222,7 @@ bool(false) --resource-- -Error: 2 - gzopen() expects parameter 1 to be string, resource given, %s(%d) +Error: 2 - gzopen() expects parameter 1 to be a valid path, resource given, %s(%d) NULL ===DONE=== Index: php5-5.5.9+dfsg/ext/zlib/tests/readgzfile_variation1.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/zlib/tests/readgzfile_variation1.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/zlib/tests/readgzfile_variation1.phpt 2015-07-02 08:53:09.292980742 -0400 @@ -29,15 +29,15 @@ ===DONE=== --EXPECTF-- -Warning: readgzfile() expects parameter 1 to be string, array given in %s on line %d +Warning: readgzfile() expects parameter 1 to be a valid path, array given in %s on line %d NULL -Warning: readgzfile() expects parameter 1 to be string, array given in %s on line %d +Warning: readgzfile() expects parameter 1 to be a valid path, array given in %s on line %d NULL -Warning: readgzfile() expects parameter 1 to be string, array given in %s on line %d +Warning: readgzfile() expects parameter 1 to be a valid path, array given in %s on line %d NULL -Warning: readgzfile() expects parameter 1 to be string, array given in %s on line %d +Warning: readgzfile() expects parameter 1 to be a valid path, array given in %s on line %d NULL -===DONE=== \ No newline at end of file +===DONE=== Index: php5-5.5.9+dfsg/ext/zlib/tests/readgzfile_variation6.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/zlib/tests/readgzfile_variation6.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/zlib/tests/readgzfile_variation6.phpt 2015-07-02 08:53:09.292980742 -0400 @@ -45,5 +45,5 @@ --EXPECTF-- Error: 2 - readgzfile(Class A object): failed to open stream: No such file or directory, %s(%d) bool(false) -Error: 2 - readgzfile() expects parameter 1 to be string, object given, %s(%d) -NULL \ No newline at end of file +Error: 2 - readgzfile() expects parameter 1 to be a valid path, object given, %s(%d) +NULL Index: php5-5.5.9+dfsg/ext/standard/tests/dir/dir_variation1.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/dir/dir_variation1.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/dir/dir_variation1.phpt 2015-07-02 08:53:09.296980787 -0400 @@ -8,7 +8,7 @@ ?> --FILE-- <?php -/* +/* * Prototype : object dir(string $directory[, resource $context]) * Description: Directory class with properties, handle and class and methods read, rewind and close * Source code: ext/standard/dir.c @@ -34,7 +34,7 @@ } // get a resource variable -$fp = fopen(__FILE__, "r"); // get a file handle +$fp = fopen(__FILE__, "r"); // get a file handle $dfp = opendir( dirname(__FILE__) ); // get a dir handle // unexpected values to be passed to $directory argument @@ -92,27 +92,27 @@ -- Iteration 1 -- -Warning: dir() expects parameter 1 to be string, array given in %s on line %d +Warning: dir() expects parameter 1 to be a valid path, array given in %s on line %d NULL -- Iteration 2 -- -Warning: dir() expects parameter 1 to be string, array given in %s on line %d +Warning: dir() expects parameter 1 to be a valid path, array given in %s on line %d NULL -- Iteration 3 -- -Warning: dir() expects parameter 1 to be string, array given in %s on line %d +Warning: dir() expects parameter 1 to be a valid path, array given in %s on line %d NULL -- Iteration 4 -- -Warning: dir() expects parameter 1 to be string, array given in %s on line %d +Warning: dir() expects parameter 1 to be a valid path, array given in %s on line %d NULL -- Iteration 5 -- -Warning: dir() expects parameter 1 to be string, array given in %s on line %d +Warning: dir() expects parameter 1 to be a valid path, array given in %s on line %d NULL -- Iteration 6 -- @@ -151,16 +151,16 @@ -- Iteration 16 -- -Warning: dir() expects parameter 1 to be string, resource given in %s on line %d +Warning: dir() expects parameter 1 to be a valid path, resource given in %s on line %d NULL -- Iteration 17 -- -Warning: dir() expects parameter 1 to be string, resource given in %s on line %d +Warning: dir() expects parameter 1 to be a valid path, resource given in %s on line %d NULL -- Iteration 18 -- -Warning: dir() expects parameter 1 to be string, object given in %s on line %d +Warning: dir() expects parameter 1 to be a valid path, object given in %s on line %d NULL -Done \ No newline at end of file +Done Index: php5-5.5.9+dfsg/ext/standard/tests/dir/opendir_variation1.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/dir/opendir_variation1.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/dir/opendir_variation1.phpt 2015-07-02 08:53:09.296980787 -0400 @@ -9,7 +9,7 @@ --FILE-- <?php /* Prototype : mixed opendir(string $path[, resource $context]) - * Description: Open a directory and return a dir_handle + * Description: Open a directory and return a dir_handle * Source code: ext/standard/dir.c */ @@ -30,7 +30,7 @@ // get a class class classA { - + var $path; function __construct($path) { $this->path = $path; @@ -73,7 +73,7 @@ false, TRUE, FALSE, - + // empty data /*16*/ "", '', @@ -83,7 +83,7 @@ /*19*/ "$path", 'string', $heredoc, - + // object data /*22*/ new classA($path), @@ -194,7 +194,7 @@ -- Iteration 18 -- -Warning: opendir() expects parameter 1 to be string, array given in %s on line %d +Warning: opendir() expects parameter 1 to be a valid path, array given in %s on line %d NULL -- Iteration 19 -- @@ -219,6 +219,6 @@ -- Iteration 25 -- -Warning: opendir() expects parameter 1 to be string, resource given in %s on line %d +Warning: opendir() expects parameter 1 to be a valid path, resource given in %s on line %d NULL ===DONE=== Index: php5-5.5.9+dfsg/ext/standard/tests/file/mkdir_rmdir_variation2.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/file/mkdir_rmdir_variation2.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/file/mkdir_rmdir_variation2.phpt 2015-07-02 08:53:09.296980787 -0400 @@ -68,7 +68,7 @@ Warning: mkdir() expects parameter 1 to be a valid path, string given in %s on line %d bool(false) -Warning: rmdir(%s): No such file or directory in %s on line %d +Warning: rmdir() expects parameter 1 to be a valid path, string given in %s on line %d bool(false) *** Testing mkdir() with miscelleneous input *** Index: php5-5.5.9+dfsg/ext/standard/tests/file/readlink_variation1.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/file/readlink_variation1.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/file/readlink_variation1.phpt 2015-07-02 08:53:09.296980787 -0400 @@ -65,7 +65,7 @@ Warning: readlink(): %s in %s on line %d bool(false) -Warning: readlink() expects parameter 1 to be string, resource given in %s on line %d +Warning: readlink() expects parameter 1 to be a valid path, resource given in %s on line %d NULL Warning: readlink(): %s in %s on line %d Index: php5-5.5.9+dfsg/ext/standard/tests/file/tempnam_variation3-win32.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/file/tempnam_variation3-win32.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/file/tempnam_variation3-win32.phpt 2015-07-02 08:53:09.296980787 -0400 @@ -22,9 +22,9 @@ $file_path = realpath($file_path); -/* An array of prefixes */ +/* An array of prefixes */ $names_arr = array( - /* Valid args (casting)*/ + /* Valid args (casting)*/ -1, TRUE, FALSE, @@ -32,17 +32,17 @@ "", " ", "\0", - /* Invalid args */ + /* Invalid args */ array(), - /* Valid args*/ + /* Valid args*/ /* prefix with path separator of a non existing directory*/ - "/no/such/file/dir", + "/no/such/file/dir", "php/php" ); $res_arr = array( - /* Invalid args */ + /* Invalid args */ true, true, true, @@ -53,7 +53,7 @@ false, /* prefix with path separator of a non existing directory*/ - true, + true, true ); @@ -72,7 +72,7 @@ } else { echo "Failed, not created in the correct directory " . realpath($file_dir) . ' vs ' . $file_path ."\n"; } - + if (!is_writable($file_name)) { printf("%o\n", fileperms($file_name) ); @@ -105,7 +105,7 @@ OK -- Iteration 7 -- -Warning: tempnam() expects parameter 2 to be string, array given in %s\ext\standard\tests\file\tempnam_variation3-win32.php on line %d +Warning: tempnam() expects parameter 2 to be a valid path, array given in %s\ext\standard\tests\file\tempnam_variation3-win32.php on line %d OK -- Iteration 8 -- OK Index: php5-5.5.9+dfsg/ext/standard/tests/file/tempnam_variation3.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/file/tempnam_variation3.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/file/tempnam_variation3.phpt 2015-07-02 08:53:09.296980787 -0400 @@ -17,9 +17,9 @@ $file_path = dirname(__FILE__)."/tempnamVar3"; mkdir($file_path); -/* An array of prefixes */ +/* An array of prefixes */ $names_arr = array( - /* Invalid args */ + /* Invalid args */ -1, TRUE, FALSE, @@ -30,7 +30,7 @@ array(), /* prefix with path separator of a non existing directory*/ - "/no/such/file/dir", + "/no/such/file/dir", "php/php" ); @@ -48,10 +48,10 @@ echo "File permissions are => "; printf("%o", fileperms($file_name) ); echo "\n"; - + echo "File created in => "; $file_dir = dirname($file_name); - + if ($file_dir == sys_get_temp_dir()) { echo "temp dir\n"; } @@ -61,7 +61,7 @@ else { echo "unknown location\n"; } - + } else { echo "-- File is not created --\n"; @@ -100,12 +100,14 @@ File permissions are => 100600 File created in => directory specified -- Iteration 6 -- -File name is => %s/%s -File permissions are => 100600 -File created in => directory specified + +Warning: tempnam() expects parameter 2 to be a valid path, string given in %s on line %d +-- File is not created -- + +Warning: unlink(): %s in %s on line %d -- Iteration 7 -- -Warning: tempnam() expects parameter 2 to be string, array given in %s on line %d +Warning: tempnam() expects parameter 2 to be a valid path, array given in %s on line %d -- File is not created -- Warning: unlink(): %s in %s on line %d Index: php5-5.5.9+dfsg/ext/standard/tests/general_functions/include_path.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/general_functions/include_path.phpt 2015-07-02 08:53:09.300980834 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/general_functions/include_path.phpt 2015-07-02 08:53:09.296980787 -0400 @@ -41,7 +41,7 @@ echo "Done\n"; ?> ---EXPECTF-- +--EXPECTF-- string(1) "." Warning: get_include_path() expects exactly 0 parameters, 1 given in %s on line %d @@ -67,7 +67,7 @@ NULL string(1) "." -Warning: set_include_path() expects parameter 1 to be string, array given in %s on line %d +Warning: set_include_path() expects parameter 1 to be a valid path, array given in %s on line %d NULL string(1) "." NULL ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-6834-1.patch����������������������������������������������������������������0000664�0000000�0000000�00000015523�12602473377�013423� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From e8429400d40e3c3aa4b22ba701991d698a2f3b2f Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 31 Aug 2015 21:28:11 -0700 Subject: [PATCH] Fix bug #70172 - Use After Free Vulnerability in unserialize() --- ext/standard/tests/serialize/bug70172.phpt | 52 ++++++++++++++++++++ ext/standard/var.c | 23 +++++++-- ext/standard/var_unserializer.c | 76 ++++++++++++++++-------------- ext/standard/var_unserializer.re | 12 +++-- 4 files changed, 121 insertions(+), 42 deletions(-) create mode 100644 ext/standard/tests/serialize/bug70172.phpt Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug70172.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug70172.phpt 2015-09-29 07:33:15.675112365 -0400 @@ -0,0 +1,52 @@ +--TEST-- +Bug #70172 - Use After Free Vulnerability in unserialize() +--FILE-- +<?php +class obj implements Serializable { + var $data; + function serialize() { + return serialize($this->data); + } + function unserialize($data) { + $this->data = unserialize($data); + } +} + +$fakezval = ptr2str(1122334455); +$fakezval .= ptr2str(0); +$fakezval .= "\x00\x00\x00\x00"; +$fakezval .= "\x01"; +$fakezval .= "\x00"; +$fakezval .= "\x00\x00"; + +$inner = 'r:2;'; +$exploit = 'a:2:{i:0;i:1;i:1;C:3:"obj":'.strlen($inner).':{'.$inner.'}}'; + +$data = unserialize($exploit); + +for ($i = 0; $i < 5; $i++) { + $v[$i] = $fakezval.$i; +} + +var_dump($data); + +function ptr2str($ptr) +{ + $out = ''; + for ($i = 0; $i < 8; $i++) { + $out .= chr($ptr & 0xff); + $ptr >>= 8; + } + return $out; +} +?> +--EXPECTF-- +array(2) { + [0]=> + int(1) + [1]=> + object(obj)#%d (1) { + ["data"]=> + int(1) + } +} \ No newline at end of file Index: php5-5.5.9+dfsg/ext/standard/var.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var.c 2015-09-29 07:33:15.679112412 -0400 +++ php5-5.5.9+dfsg/ext/standard/var.c 2015-09-29 07:33:15.679112412 -0400 @@ -951,6 +951,8 @@ int buf_len; const unsigned char *p; php_unserialize_data_t var_hash; + int oldlevel; + zval *old_rval = return_value; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &buf, &buf_len) == FAILURE) { RETURN_FALSE; @@ -970,6 +972,19 @@ } RETURN_FALSE; } + if (return_value != old_rval) { + /* + * Terrible hack due to the fact that executor passes us zval *, + * but unserialize with r/R wants to replace it with another zval * + */ + zval_dtor(old_rval); + *old_rval = *return_value; + zval_copy_ctor(old_rval); + var_push_dtor_no_addref(&var_hash, &return_value); + var_push_dtor_no_addref(&var_hash, &old_rval); + } else { + var_push_dtor(&var_hash, &return_value); + } PHP_VAR_UNSERIALIZE_DESTROY(var_hash); } /* }}} */ Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2015-09-29 07:33:15.679112412 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2015-09-29 07:33:15.679112412 -0400 @@ -61,7 +61,7 @@ { var_entries *var_hash = (*var_hashx)->last_dtor; #if VAR_ENTRIES_DBG - fprintf(stderr, "var_push_dtor(%ld): %d\n", var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval)); + fprintf(stderr, "var_push_dtor(%p, %ld): %d\n", *rval, var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval)); #endif if (!var_hash || var_hash->used_slots == VAR_ENTRIES_MAX) { @@ -86,7 +86,7 @@ { var_entries *var_hash = (*var_hashx)->last_dtor; #if VAR_ENTRIES_DBG - fprintf(stderr, "var_push_dtor_no_addref(%ld): %d (%d)\n", var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval), Z_REFCOUNT_PP(rval)); + fprintf(stderr, "var_push_dtor_no_addref(%p, %ld): %d (%d)\n", *rval, var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval), Z_REFCOUNT_PP(rval)); #endif if (!var_hash || var_hash->used_slots == VAR_ENTRIES_MAX) { @@ -165,6 +165,9 @@ while (var_hash) { for (i = 0; i < var_hash->used_slots; i++) { +#if VAR_ENTRIES_DBG + fprintf(stderr, "var_destroy dtor(%p, %ld)\n", var_hash->data[i], Z_REFCOUNT_P(var_hash->data[i])); +#endif zval_ptr_dtor(&var_hash->data[i]); } next = var_hash->next; @@ -610,6 +613,7 @@ zval **args[1]; zval *arg_func_name; + if (!var_hash) return 0; if (*start == 'C') { custom_object = 1; } @@ -765,6 +769,7 @@ if (yych != '"') goto yy18; ++YYCURSOR; { + if (!var_hash) return 0; INIT_PZVAL(*rval); @@ -795,6 +800,7 @@ long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ *p = YYCURSOR; + if (!var_hash) return 0; if (elements < 0) { return 0; @@ -1224,7 +1230,7 @@ } if (*rval != NULL) { - zval_ptr_dtor(rval); + var_push_dtor_no_addref(var_hash, rval); } *rval = *rval_ref; Z_ADDREF_PP(rval); Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2015-09-29 07:33:15.679112412 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2015-09-29 07:33:15.679112412 -0400 @@ -60,7 +60,7 @@ { var_entries *var_hash = (*var_hashx)->last_dtor; #if VAR_ENTRIES_DBG - fprintf(stderr, "var_push_dtor(%ld): %d\n", var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval)); + fprintf(stderr, "var_push_dtor(%p, %ld): %d\n", *rval, var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval)); #endif if (!var_hash || var_hash->used_slots == VAR_ENTRIES_MAX) { @@ -85,7 +85,7 @@ { var_entries *var_hash = (*var_hashx)->last_dtor; #if VAR_ENTRIES_DBG - fprintf(stderr, "var_push_dtor_no_addref(%ld): %d (%d)\n", var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval), Z_REFCOUNT_PP(rval)); + fprintf(stderr, "var_push_dtor_no_addref(%p, %ld): %d (%d)\n", *rval, var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval), Z_REFCOUNT_PP(rval)); #endif if (!var_hash || var_hash->used_slots == VAR_ENTRIES_MAX) { @@ -164,6 +164,9 @@ while (var_hash) { for (i = 0; i < var_hash->used_slots; i++) { +#if VAR_ENTRIES_DBG + fprintf(stderr, "var_destroy dtor(%p, %ld)\n", var_hash->data[i], Z_REFCOUNT_P(var_hash->data[i])); +#endif zval_ptr_dtor(&var_hash->data[i]); } next = var_hash->next; @@ -478,7 +481,7 @@ } if (*rval != NULL) { - zval_ptr_dtor(rval); + var_push_dtor_no_addref(var_hash, rval); } *rval = *rval_ref; Z_ADDREF_PP(rval); @@ -637,6 +640,7 @@ long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ *p = YYCURSOR; + if (!var_hash) return 0; if (elements < 0) { return 0; @@ -654,6 +658,7 @@ } "o:" iv ":" ["] { + if (!var_hash) return 0; INIT_PZVAL(*rval); @@ -676,6 +681,7 @@ zval **args[1]; zval *arg_func_name; + if (!var_hash) return 0; if (*start == 'C') { custom_object = 1; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-4537.patch������������������������������������������������������������������0000664�0000000�0000000�00000010044�12717366567�013266� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From d650063a0457aec56364e4005a636dc6c401f9cd Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 24 Apr 2016 18:33:32 -0700 Subject: [PATCH] Fix bug #72093: bcpowmod accepts negative scale and corrupts _one_ definition We can not modify result since it can be copy of _zero_ or _one_, etc. and "copy" in bcmath is just bumping the refcount. --- ext/bcmath/bcmath.c | 60 +++++++++++++++++++++++++++++------------- ext/bcmath/tests/bug72093.phpt | 13 +++++++++ main/php_version.h | 6 ++--- 3 files changed, 57 insertions(+), 22 deletions(-) create mode 100644 ext/bcmath/tests/bug72093.phpt diff --git a/ext/bcmath/bcmath.c b/ext/bcmath/bcmath.c index 02177e4..dd69115 100644 --- a/ext/bcmath/bcmath.c +++ b/ext/bcmath/bcmath.c @@ -201,6 +201,21 @@ static void php_str2num(bc_num *num, char *str TSRMLS_DC) } /* }}} */ +/* {{{ split_bc_num + Convert to bc_num detecting scale */ +static bc_num split_bc_num(bc_num num) { + bc_num newnum; + if (num->n_refs >= 1) { + return num; + } + newnum = _bc_new_num_ex(0, 0, 0); + *newnum = *num; + newnum->n_refs = 1; + num->n_refs--; + return newnum; +} +/* }}} */ + /* {{{ proto string bcadd(string left_operand, string right_operand [, int scale]) Returns the sum of two arbitrary precision numbers */ PHP_FUNCTION(bcadd) @@ -225,11 +240,12 @@ PHP_FUNCTION(bcadd) php_str2num(&first, left TSRMLS_CC); php_str2num(&second, right TSRMLS_CC); bc_add (first, second, &result, scale); - + if (result->n_scale > scale) { + result = split_bc_num(result); result->n_scale = scale; } - + Z_STRVAL_P(return_value) = bc_num2str(result); Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value)); Z_TYPE_P(return_value) = IS_STRING; @@ -266,6 +282,7 @@ PHP_FUNCTION(bcsub) bc_sub (first, second, &result, scale); if (result->n_scale > scale) { + result = split_bc_num(result); result->n_scale = scale; } @@ -305,6 +322,7 @@ PHP_FUNCTION(bcmul) bc_multiply (first, second, &result, scale TSRMLS_CC); if (result->n_scale > scale) { + result = split_bc_num(result); result->n_scale = scale; } @@ -345,6 +363,7 @@ PHP_FUNCTION(bcdiv) switch (bc_divide(first, second, &result, scale TSRMLS_CC)) { case 0: /* OK */ if (result->n_scale > scale) { + result = split_bc_num(result); result->n_scale = scale; } Z_STRVAL_P(return_value) = bc_num2str(result); @@ -424,8 +443,9 @@ PHP_FUNCTION(bcpowmod) scale_int = (int) ((int)scale < 0) ? 0 : scale; if (bc_raisemod(first, second, mod, &result, scale_int TSRMLS_CC) != -1) { - if (result->n_scale > scale) { - result->n_scale = scale; + if (result->n_scale > scale_int) { + result = split_bc_num(result); + result->n_scale = scale_int; } Z_STRVAL_P(return_value) = bc_num2str(result); Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value)); @@ -468,6 +488,7 @@ PHP_FUNCTION(bcpow) bc_raise (first, second, &result, scale TSRMLS_CC); if (result->n_scale > scale) { + result = split_bc_num(result); result->n_scale = scale; } @@ -494,16 +515,17 @@ PHP_FUNCTION(bcsqrt) if (zend_parse_parameters(argc TSRMLS_CC, "s|l", &left, &left_len, &scale_param) == FAILURE) { return; } - + if (argc == 2) { scale = (int) ((int)scale_param < 0) ? 0 : scale_param; } bc_init_num(&result TSRMLS_CC); php_str2num(&result, left TSRMLS_CC); - + if (bc_sqrt (&result, scale TSRMLS_CC) != 0) { if (result->n_scale > scale) { + result = split_bc_num(result); result->n_scale = scale; } Z_STRVAL_P(return_value) = bc_num2str(result); diff --git a/ext/bcmath/tests/bug72093.phpt b/ext/bcmath/tests/bug72093.phpt new file mode 100644 index 0000000..be664b8 --- /dev/null +++ b/ext/bcmath/tests/bug72093.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug 72093: bcpowmod accepts negative scale and corrupts _one_ definition +--SKIPIF-- +<?php if(!extension_loaded("bcmath")) print "skip"; ?> +--FILE-- +<?php +var_dump(bcpowmod(1, "A", 128, -200)); +var_dump(bcpowmod(1, 1.2, 1, 1)); +?> +--EXPECTF-- +string(1) "1" +bc math warning: non-zero scale in exponent +string(3) "0.0" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-1351.patch������������������������������������������������������������������0000664�0000000�0000000�00000001637�12467421362�013247� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 777c39f4042327eac4b63c7ee87dc1c7a09a3115 Mon Sep 17 00:00:00 2001 From: Xinchen Hui <laruence@php.net> Date: Thu, 8 Jan 2015 16:32:20 +0800 Subject: [PATCH] Fixed #68677 --- ext/opcache/zend_shared_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: php5-5.5.12+dfsg/ext/opcache/zend_shared_alloc.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/opcache/zend_shared_alloc.c 2015-02-13 10:08:30.277841648 -0500 +++ php5-5.5.12+dfsg/ext/opcache/zend_shared_alloc.c 2015-02-13 10:09:13.038193887 -0500 @@ -346,10 +346,10 @@ retval = ZCG(mem);; ZCG(mem) = (void*)(((char*)ZCG(mem)) + ZEND_ALIGNED_SIZE(size)); memcpy(retval, source, size); + zend_shared_alloc_register_xlat_entry(source, retval); if (free_source) { interned_efree((char*)source); } - zend_shared_alloc_register_xlat_entry(source, retval); return retval; } �������������������������������������������������������������������������������������������������debian/patches/CVE-2016-9935-2.patch����������������������������������������������������������������0000664�0000000�0000000�00000001540�13046673416�013423� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From b04d60626de25edb06b6ecd6d7f5090b3dac0ecd Mon Sep 17 00:00:00 2001 From: Anatol Belski <ab@php.net> Date: Tue, 6 Dec 2016 14:34:27 +0100 Subject: [PATCH] fix leak, take on 5.6 --- ext/wddx/tests/bug73631.phpt | 2 -- ext/wddx/wddx.c | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2017-02-08 14:51:12.077167458 -0500 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2017-02-08 14:51:12.077167458 -0500 @@ -1046,6 +1046,8 @@ } else { zend_hash_next_index_insert(target_hash, &ent1->data, sizeof(zval *), NULL); } + } else if (!strcmp(name, EL_BINARY) && STR_EMPTY_ALLOC() == Z_STRVAL_P(ent1->data)) { + zval_ptr_dtor(&ent1->data); } efree(ent1); } else { ����������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-10158.patch�����������������������������������������������������������������0000664�0000000�0000000�00000002030�13047111374�013313� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 1cda0d7c2ffb62d8331c64e703131d9cabdc03ea Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 31 Dec 2016 19:31:49 -0800 Subject: [PATCH] Fix bug #73737 FPE when parsing a tag format --- ext/exif/exif.c | 2 +- ext/exif/tests/bug73737.phpt | 12 ++++++++++++ ext/exif/tests/bug73737.tiff | Bin 0 -> 48 bytes 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 ext/exif/tests/bug73737.phpt create mode 100644 ext/exif/tests/bug73737.tiff Index: php5-5.5.9+dfsg/ext/exif/exif.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/exif/exif.c 2017-02-09 11:04:09.635237490 -0500 +++ php5-5.5.9+dfsg/ext/exif/exif.c 2017-02-09 11:04:09.631237429 -0500 @@ -1313,7 +1313,7 @@ if (s_den == 0) { return 0; } else { - return php_ifd_get32s(value, motorola_intel) / s_den; + return (size_t)((double)php_ifd_get32s(value, motorola_intel) / s_den); } case TAG_FMT_SSHORT: return php_ifd_get16u(value, motorola_intel); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-9935-3.patch����������������������������������������������������������������0000664�0000000�0000000�00000001525�13046673432�013425� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From c89306ac52d9aff1eeec0441f1aff7e53c188234 Mon Sep 17 00:00:00 2001 From: Anatol Belski <ab@php.net> Date: Tue, 6 Dec 2016 16:12:39 +0100 Subject: [PATCH] fix leak, take 2 --- ext/wddx/wddx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2017-02-08 14:52:56.234695110 -0500 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2017-02-08 14:52:56.230695051 -0500 @@ -1046,7 +1046,7 @@ } else { zend_hash_next_index_insert(target_hash, &ent1->data, sizeof(zval *), NULL); } - } else if (!strcmp(name, EL_BINARY) && STR_EMPTY_ALLOC() == Z_STRVAL_P(ent1->data)) { + } else if (!strcmp(name, EL_BINARY) && Z_STRLEN_P(ent1->data) < 1) { zval_ptr_dtor(&ent1->data); } efree(ent1); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2019-9024.patch������������������������������������������������������������������0000664�0000000�0000000�00000003237�13437472604�013261� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 4feb9e66ff9636ad44bc23a91b7ebd37d83ddf1d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 1 Jan 2019 17:15:20 -0800 Subject: [PATCH] Fix bug #77380 (Global out of bounds read in xmlrpc base64 code) --- ext/xmlrpc/libxmlrpc/base64.c | 4 ++-- ext/xmlrpc/tests/bug77380.phpt | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 ext/xmlrpc/tests/bug77380.phpt Index: php5-5.5.9+dfsg/ext/xmlrpc/libxmlrpc/base64.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/xmlrpc/libxmlrpc/base64.c 2019-03-05 08:10:31.568911288 -0500 +++ php5-5.5.9+dfsg/ext/xmlrpc/libxmlrpc/base64.c 2019-03-05 08:10:31.564911278 -0500 @@ -165,7 +165,7 @@ void base64_decode_xmlrpc(struct buffer_ return; } - if (dtable[c] & 0x80) { + if (dtable[(unsigned char)c] & 0x80) { /* fprintf(stderr, "Offset %i length %i\n", offset, length); fprintf(stderr, "character '%c:%x:%c' in input file.\n", c, c, dtable[c]); Index: php5-5.5.9+dfsg/ext/xmlrpc/tests/bug77380.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/xmlrpc/tests/bug77380.phpt 2019-03-05 08:10:31.564911278 -0500 @@ -0,0 +1,17 @@ +--TEST-- +Bug #77380 (Global out of bounds read in xmlrpc base64 code) +--SKIPIF-- +<?php +if (!extension_loaded("xmlrpc")) print "skip"; +?> +--FILE-- +<?php +var_dump(xmlrpc_decode(base64_decode("PGJhc2U2ND7CkzwvYmFzZTY0Pgo="))); +?> +--EXPECT-- +object(stdClass)#1 (2) { + ["scalar"]=> + string(0) "" + ["xmlrpc_type"]=> + string(6) "base64" +} �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/force_libmysqlclient_r.patch���������������������������������������������������������0000664�0000000�0000000�00000003121�12300436054�016364� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: Force linking to mysqlclient_r to avoid symbol conflicts. apr-util's mysql driver is linked against that version of the library but due to missing proper symbols versioning we are forced to link to the re-entrant library too. Origin: other, http://bugs.debian.org/469081 Forwarded: not-needed Last-Update: 2010-01-18 --- php5.orig/ext/mysql/config.m4 +++ php5/ext/mysql/config.m4 @@ -77,7 +77,7 @@ elif test "$PHP_MYSQL" != "no"; then Note that the MySQL client library is not bundled anymore!]) fi - if test "$enable_maintainer_zts" = "yes"; then + if true || test "$enable_maintainer_zts" = "yes"; then MYSQL_LIBNAME=mysqlclient_r else MYSQL_LIBNAME=mysqlclient --- php5.orig/ext/mysqli/config.m4 +++ php5/ext/mysqli/config.m4 @@ -26,7 +26,7 @@ elif test "$PHP_MYSQLI" != "no"; then MYSQL_LIB_CFG='--libmysqld-libs' dnl mysqlnd doesn't support embedded, so we have to add some extra stuff mysqli_extra_sources="mysqli_embedded.c" - elif test "$enable_maintainer_zts" = "yes"; then + elif true || test "$enable_maintainer_zts" = "yes"; then MYSQL_LIB_CFG='--libs_r' MYSQL_LIB_NAME='mysqlclient_r' else --- php5.orig/ext/pdo_mysql/config.m4 +++ php5/ext/pdo_mysql/config.m4 @@ -55,7 +55,7 @@ if test "$PHP_PDO_MYSQL" != "no"; then if test "x$SED" = "x"; then AC_PATH_PROG(SED, sed) fi - if test "$enable_maintainer_zts" = "yes"; then + if true || test "$enable_maintainer_zts" = "yes"; then PDO_MYSQL_LIBNAME=mysqlclient_r PDO_MYSQL_LIBS=`$PDO_MYSQL_CONFIG --libs_r | $SED -e "s/'//g"` else �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7478-pre2.patch�������������������������������������������������������������0000664�0000000�0000000�00000002131�13046663566�014134� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Partial backport of: From 082d1f237531ab71c3050dfb9f598344f654d9e1 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 11 Oct 2016 16:16:20 -0700 Subject: [PATCH] Fix tests --- ext/intl/tests/bug72241.phpt | 4 +--- ext/spl/spl_iterators.c | 4 ---- ext/spl/tests/spl_cachingiterator___toString_basic.phpt | 2 +- ext/standard/tests/serialize/bug69793.phpt | 2 -- 4 files changed, 2 insertions(+), 10 deletions(-) Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69793.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/serialize/bug69793.phpt 2017-02-08 13:45:25.460902881 -0500 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug69793.phpt 2017-02-08 13:46:02.125441348 -0500 @@ -8,8 +8,6 @@ ?> --EXPECTF-- Notice: Undefined property: Exception::$file in %s/bug69793.php on line %d - -Notice: Undefined property: Exception::$previous in %s/bug69793.php on line %d string(53) "exception 'Exception' in :1337 Stack trace: #0 {main}" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-6831-2.patch����������������������������������������������������������������0000664�0000000�0000000�00000003570�12602473223�013406� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From c2e197e4efc663ca55f393bf0e799848842286f3 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 1 Aug 2015 21:12:38 -0700 Subject: [PATCH] Fix bug #70168 - Use After Free Vulnerability in unserialize() with SplObjectStorage --- ext/spl/spl_observer.c | 68 +++++++++++++++++++++++---------------------- ext/spl/tests/bug70168.phpt | 19 +++++++++++++ 2 files changed, 54 insertions(+), 33 deletions(-) create mode 100644 ext/spl/tests/bug70168.phpt Index: php5-5.5.9+dfsg/ext/spl/spl_observer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_observer.c 2015-09-29 07:31:28.449873810 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_observer.c 2015-09-29 07:31:28.445873764 -0400 @@ -832,14 +832,15 @@ goto outexcept; } + var_push_dtor(&var_hash, &pcount); --p; /* for ';' */ count = Z_LVAL_P(pcount); - + while(count-- > 0) { spl_SplObjectStorageElement *pelement; char *hash; int hash_len; - + if (*p != ';') { goto outexcept; } @@ -903,6 +904,7 @@ goto outexcept; } + var_push_dtor(&var_hash, &pmembers); /* copy members */ if (!intern->std.properties) { rebuild_object_properties(&intern->std); Index: php5-5.5.9+dfsg/ext/spl/tests/bug70168.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/spl/tests/bug70168.phpt 2015-09-29 07:31:28.445873764 -0400 @@ -0,0 +1,19 @@ +--TEST-- +SPL: Bug #70168 Use After Free Vulnerability in unserialize() with SplObjectStorage +--FILE-- +<?php +$inner = 'x:i:1;O:8:"stdClass":0:{};m:a:0:{}'; +$exploit = 'a:2:{i:0;C:16:"SplObjectStorage":'.strlen($inner).':{'.$inner.'}i:1;R:3;}'; + +$data = unserialize($exploit); + +for($i = 0; $i < 5; $i++) { + $v[$i] = 'hi'.$i; +} + +var_dump($data[1]); +?> +===DONE=== +--EXPECT-- +int(1) +===DONE=== ����������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-5768.patch������������������������������������������������������������������0000664�0000000�0000000�00000005045�12746377104�013271� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 5b597a2e5b28e2d5a52fc1be13f425f08f47cb62 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 18 Jun 2016 21:48:39 -0700 Subject: [PATCH] Fix bug #72402: _php_mb_regex_ereg_replace_exec - double free --- ext/mbstring/php_mbregex.c | 65 ++++++++++++++++++++-------------------- ext/mbstring/tests/bug72402.phpt | 17 +++++++++++ 2 files changed, 49 insertions(+), 33 deletions(-) create mode 100644 ext/mbstring/tests/bug72402.phpt diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index d73c848..6cdee23 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -953,32 +953,31 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp eval_buf.len = 0; zval_dtor(&v); } else if (is_callable) { - zval *retval_ptr; + zval *retval_ptr = NULL; zval **args[1]; zval *subpats; int i; - + MAKE_STD_ZVAL(subpats); array_init(subpats); - + for (i = 0; i < regs->num_regs; i++) { add_next_index_stringl(subpats, string + regs->beg[i], regs->end[i] - regs->beg[i], 1); - } - + } + args[0] = &subpats; /* null terminate buffer */ smart_str_0(&eval_buf); - + arg_replace_fci.param_count = 1; arg_replace_fci.params = args; arg_replace_fci.retval_ptr_ptr = &retval_ptr; - if (zend_call_function(&arg_replace_fci, &arg_replace_fci_cache TSRMLS_CC) == SUCCESS && arg_replace_fci.retval_ptr_ptr) { + if (zend_call_function(&arg_replace_fci, &arg_replace_fci_cache TSRMLS_CC) == SUCCESS && arg_replace_fci.retval_ptr_ptr && retval_ptr) { convert_to_string_ex(&retval_ptr); smart_str_appendl(&out_buf, Z_STRVAL_P(retval_ptr), Z_STRLEN_P(retval_ptr)); eval_buf.len = 0; zval_ptr_dtor(&retval_ptr); } else { - efree(description); if (!EG(exception)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call custom replacement function"); } diff --git a/ext/mbstring/tests/bug72402.phpt b/ext/mbstring/tests/bug72402.phpt new file mode 100644 index 0000000..abb290b --- /dev/null +++ b/ext/mbstring/tests/bug72402.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #72402: _php_mb_regex_ereg_replace_exec - double free +--SKIPIF-- +<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?> +--FILE-- +<?php +function throwit() { + throw new Exception('it'); +} +$var10 = "throwit"; +try { + $var14 = mb_ereg_replace_callback("", $var10, ""); +} catch(Exception $e) {} +?> +DONE +--EXPECT-- +DONE \ No newline at end of file -- 2.1.4 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-9934.patch������������������������������������������������������������������0000664�0000000�0000000�00000016341�13046611540�013256� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 6045de69c7dedcba3eadf7c4bba424b19c81d00d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 23 Oct 2016 20:07:47 -0700 Subject: [PATCH] Fix bug #73331 - do not try to serialize/unserialize objects wddx can not handle Proper soltion would be to call serialize/unserialize and deal with the result, but this requires more work that should be done by wddx maintainer (not me). --- ext/pdo/pdo_stmt.c | 1 + ext/wddx/tests/bug45901.phpt | 4 ++- ext/wddx/tests/bug72790.phpt | 2 +- ext/wddx/tests/bug73331.phpt | 15 ++++++++++ ext/wddx/wddx.c | 67 +++++++++++++++++++++++--------------------- 5 files changed, 55 insertions(+), 34 deletions(-) create mode 100644 ext/wddx/tests/bug73331.phpt Index: php5-5.5.9+dfsg/ext/pdo/pdo_stmt.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/pdo/pdo_stmt.c 2017-02-08 07:44:26.039254963 -0500 +++ php5-5.5.9+dfsg/ext/pdo/pdo_stmt.c 2017-02-08 07:44:26.035254911 -0500 @@ -2364,6 +2364,7 @@ pdo_row_ce->ce_flags |= ZEND_ACC_FINAL_CLASS; /* when removing this a lot of handlers need to be redone */ pdo_row_ce->create_object = pdo_row_new; pdo_row_ce->serialize = pdo_row_serialize; + pdo_row_ce->unserialize = zend_class_unserialize_deny; } static void free_statement(pdo_stmt_t *stmt TSRMLS_DC) Index: php5-5.5.9+dfsg/ext/wddx/tests/bug45901.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/tests/bug45901.phpt 2017-02-08 07:44:26.039254963 -0500 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug45901.phpt 2017-02-08 07:44:26.035254911 -0500 @@ -14,5 +14,7 @@ echo "DONE"; ?> --EXPECTF-- -<wddxPacket version='1.0'><header><comment>Variables</comment></header><data><struct><var name='php_class_name'><string>SimpleXMLElement</string></var><var name='test'><struct><var name='php_class_name'><string>SimpleXMLElement</string></var></struct></var></struct></data></wddxPacket> + +Warning: wddx_serialize_value(): Class SimpleXMLElement can not be serialized in %sbug45901.php on line %d +<wddxPacket version='1.0'><header><comment>Variables</comment></header><data></data></wddxPacket> DONE \ No newline at end of file Index: php5-5.5.9+dfsg/ext/wddx/tests/bug72790.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/tests/bug72790.phpt 2017-02-08 07:44:26.039254963 -0500 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug72790.phpt 2017-02-08 07:44:26.035254911 -0500 @@ -1,5 +1,5 @@ --TEST-- -Bug 72790: wddx_deserialize null dereference with invalid xml +Bug #72790: wddx_deserialize null dereference with invalid xml --SKIPIF-- <?php if (!extension_loaded('wddx')) { Index: php5-5.5.9+dfsg/ext/wddx/tests/bug73331.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug73331.phpt 2017-02-08 07:44:26.035254911 -0500 @@ -0,0 +1,15 @@ +--TEST-- +Bug #73331 (NULL Pointer Dereference in WDDX Packet Deserialization with PDORow) +--SKIPIF-- +<?php if (!extension_loaded("wddx") || !extension_loaded("pdo")) print "skip"; ?> +--FILE-- +<?php + +$wddx = "<wddxPacket version='1.0'><header/><data><struct><var name='php_class_name'><string>PDORow</string></var></struct></data></wddxPacket>"; +var_dump(wddx_deserialize($wddx)); +?> +--EXPECTF-- + +Warning: wddx_deserialize(): Class pdorow can not be unserialized in %s73331.php on line %d +NULL + Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2017-02-08 07:44:26.039254963 -0500 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2017-02-08 07:46:34.932919970 -0500 @@ -462,8 +462,18 @@ ulong idx; char tmp_buf[WDDX_BUF_LEN]; HashTable *objhash, *sleephash; + zend_class_entry *ce; + PHP_CLASS_ATTRIBUTES; TSRMLS_FETCH(); + PHP_SET_CLASS_ATTRIBUTES(obj); + ce = Z_OBJCE_P(obj); + if (!ce || ce->serialize || ce->unserialize) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Class %s can not be serialized", class_name); + PHP_CLEANUP_CLASS_ATTRIBUTES(); + return; + } + MAKE_STD_ZVAL(fname); ZVAL_STRING(fname, "__sleep", 1); @@ -473,10 +483,6 @@ */ if (call_user_function_ex(CG(function_table), &obj, fname, &retval, 0, 0, 1, NULL TSRMLS_CC) == SUCCESS) { if (retval && (sleephash = HASH_OF(retval))) { - PHP_CLASS_ATTRIBUTES; - - PHP_SET_CLASS_ATTRIBUTES(obj); - php_wddx_add_chunk_static(packet, WDDX_STRUCT_S); snprintf(tmp_buf, WDDX_BUF_LEN, WDDX_VAR_S, PHP_CLASS_NAME_VAR); php_wddx_add_chunk(packet, tmp_buf); @@ -485,8 +491,6 @@ php_wddx_add_chunk_static(packet, WDDX_STRING_E); php_wddx_add_chunk_static(packet, WDDX_VAR_E); - PHP_CLEANUP_CLASS_ATTRIBUTES(); - objhash = HASH_OF(obj); for (zend_hash_internal_pointer_reset(sleephash); @@ -507,10 +511,6 @@ } else { uint key_len; - PHP_CLASS_ATTRIBUTES; - - PHP_SET_CLASS_ATTRIBUTES(obj); - php_wddx_add_chunk_static(packet, WDDX_STRUCT_S); snprintf(tmp_buf, WDDX_BUF_LEN, WDDX_VAR_S, PHP_CLASS_NAME_VAR); php_wddx_add_chunk(packet, tmp_buf); @@ -518,8 +518,6 @@ php_wddx_add_chunk_ex(packet, class_name, name_len); php_wddx_add_chunk_static(packet, WDDX_STRING_E); php_wddx_add_chunk_static(packet, WDDX_VAR_E); - - PHP_CLEANUP_CLASS_ATTRIBUTES(); objhash = HASH_OF(obj); for (zend_hash_internal_pointer_reset(objhash); @@ -542,6 +540,8 @@ php_wddx_add_chunk_static(packet, WDDX_STRUCT_E); } + PHP_CLEANUP_CLASS_ATTRIBUTES(); + zval_dtor(fname); FREE_ZVAL(fname); @@ -1001,26 +1001,30 @@ pce = &PHP_IC_ENTRY; } - /* Initialize target object */ - MAKE_STD_ZVAL(obj); - object_init_ex(obj, *pce); - - /* Merge current hashtable with object's default properties */ - zend_hash_merge(Z_OBJPROP_P(obj), - Z_ARRVAL_P(ent2->data), - (void (*)(void *)) zval_add_ref, - (void *) &tmp, sizeof(zval *), 0); + if (pce != &PHP_IC_ENTRY && ((*pce)->serialize || (*pce)->unserialize)) { + ent2->data = NULL; + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Class %s can not be unserialized", Z_STRVAL_P(ent1->data)); + } else { + /* Initialize target object */ + MAKE_STD_ZVAL(obj); + object_init_ex(obj, *pce); + + /* Merge current hashtable with object's default properties */ + zend_hash_merge(Z_OBJPROP_P(obj), + Z_ARRVAL_P(ent2->data), + (void (*)(void *)) zval_add_ref, + (void *) &tmp, sizeof(zval *), 0); + + if (incomplete_class) { + php_store_class_name(obj, Z_STRVAL_P(ent1->data), Z_STRLEN_P(ent1->data)); + } - if (incomplete_class) { - php_store_class_name(obj, Z_STRVAL_P(ent1->data), Z_STRLEN_P(ent1->data)); - } + /* Clean up old array entry */ + zval_ptr_dtor(&ent2->data); - /* Clean up old array entry */ - zval_ptr_dtor(&ent2->data); - - /* Set stack entry to point to the newly created object */ - ent2->data = obj; - + /* Set stack entry to point to the newly created object */ + ent2->data = obj; + } /* Clean up class name var entry */ zval_ptr_dtor(&ent1->data); } else if (Z_TYPE_P(ent2->data) == IS_OBJECT) { �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-5589-1.patch����������������������������������������������������������������0000664�0000000�0000000�00000002175�12602473073�013421� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From bf58162ddf970f63502837f366930e44d6a992cf Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 4 Jul 2015 21:01:50 -0700 Subject: [PATCH] Fix bug #69958 - Segfault in Phar::convertToData on invalid file --- ext/phar/phar_object.c | 70 ++++++++++++++++++++++--------------------- ext/phar/tests/bug69958.phpt | 14 +++++++++ ext/phar/tests/bug69958.tar | Bin 0 -> 513 bytes 3 files changed, 50 insertions(+), 34 deletions(-) create mode 100644 ext/phar/tests/bug69958.phpt create mode 100644 ext/phar/tests/bug69958.tar Index: php5-5.5.9+dfsg/ext/phar/phar_object.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar_object.c 2015-09-29 07:29:58.128829869 -0400 +++ php5-5.5.9+dfsg/ext/phar/phar_object.c 2015-09-29 07:29:58.128829869 -0400 @@ -2338,7 +2338,9 @@ zend_hash_destroy(&(phar->manifest)); zend_hash_destroy(&(phar->mounted_dirs)); zend_hash_destroy(&(phar->virtual_dirs)); - php_stream_close(phar->fp); + if (phar->fp) { + php_stream_close(phar->fp); + } efree(phar->fname); efree(phar); return NULL; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-3597.patch������������������������������������������������������������������0000664�0000000�0000000�00000020511�12377506464�013263� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Origin: https://github.com/php/php-src/commit/2fefae47716d501aec41c1102f3fd4531f070b05 From: Remi Collet Subject: Fixed Sec Bug #67717 segfault in dns_get_record CVE-2014-3597 diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 214a7dc..0b5e69c 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -412,8 +412,14 @@ PHP_FUNCTION(dns_check_record) #if HAVE_FULL_DNS_FUNCS +#define CHECKCP(n) do { \ + if (cp + n > end) { \ + return NULL; \ + } \ +} while (0) + /* {{{ php_parserr */ -static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int store, int raw, zval **subarray) +static u_char *php_parserr(u_char *cp, u_char *end, querybuf *answer, int type_to_fetch, int store, int raw, zval **subarray) { u_short type, class, dlen; u_long ttl; @@ -425,16 +431,18 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int *subarray = NULL; - n = dn_expand(answer->qb2, answer->qb2+65536, cp, name, sizeof(name) - 2); + n = dn_expand(answer->qb2, end, cp, name, sizeof(name) - 2); if (n < 0) { return NULL; } cp += n; + CHECKCP(10); GETSHORT(type, cp); GETSHORT(class, cp); GETLONG(ttl, cp); GETSHORT(dlen, cp); + CHECKCP(dlen); if (type_to_fetch != T_ANY && type != type_to_fetch) { cp += dlen; return cp; @@ -461,12 +469,14 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int switch (type) { case DNS_T_A: + CHECKCP(4); add_assoc_string(*subarray, "type", "A", 1); snprintf(name, sizeof(name), "%d.%d.%d.%d", cp[0], cp[1], cp[2], cp[3]); add_assoc_string(*subarray, "ip", name, 1); cp += dlen; break; case DNS_T_MX: + CHECKCP(2); add_assoc_string(*subarray, "type", "MX", 1); GETSHORT(n, cp); add_assoc_long(*subarray, "pri", n); @@ -485,7 +495,7 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int if (type == DNS_T_PTR) { add_assoc_string(*subarray, "type", "PTR", 1); } - n = dn_expand(answer->qb2, answer->qb2+65536, cp, name, (sizeof name) - 2); + n = dn_expand(answer->qb2, end, cp, name, (sizeof name) - 2); if (n < 0) { return NULL; } @@ -495,18 +505,22 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int case DNS_T_HINFO: /* See RFC 1010 for values */ add_assoc_string(*subarray, "type", "HINFO", 1); + CHECKCP(1); n = *cp & 0xFF; cp++; + CHECKCP(n); add_assoc_stringl(*subarray, "cpu", (char*)cp, n, 1); cp += n; + CHECKCP(1); n = *cp & 0xFF; cp++; + CHECKCP(n); add_assoc_stringl(*subarray, "os", (char*)cp, n, 1); cp += n; break; case DNS_T_TXT: { - int ll = 0; + int l1 = 0, l2 = 0; zval *entries = NULL; add_assoc_string(*subarray, "type", "TXT", 1); @@ -515,37 +529,41 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int MAKE_STD_ZVAL(entries); array_init(entries); - while (ll < dlen) { - n = cp[ll]; - if ((ll + n) >= dlen) { + while (l1 < dlen) { + n = cp[l1]; + if ((l1 + n) >= dlen) { // Invalid chunk length, truncate - n = dlen - (ll + 1); + n = dlen - (l1 + 1); + } + if (n) { + memcpy(tp + l2 , cp + l1 + 1, n); + add_next_index_stringl(entries, cp + l1 + 1, n, 1); } - memcpy(tp + ll , cp + ll + 1, n); - add_next_index_stringl(entries, cp + ll + 1, n, 1); - ll = ll + n + 1; + l1 = l1 + n + 1; + l2 = l2 + n; } - tp[dlen] = '\0'; + tp[l2] = '\0'; cp += dlen; - add_assoc_stringl(*subarray, "txt", tp, (dlen>0)?dlen - 1:0, 0); + add_assoc_stringl(*subarray, "txt", tp, l2, 0); add_assoc_zval(*subarray, "entries", entries); } break; case DNS_T_SOA: add_assoc_string(*subarray, "type", "SOA", 1); - n = dn_expand(answer->qb2, answer->qb2+65536, cp, name, (sizeof name) -2); + n = dn_expand(answer->qb2, end, cp, name, (sizeof name) -2); if (n < 0) { return NULL; } cp += n; add_assoc_string(*subarray, "mname", name, 1); - n = dn_expand(answer->qb2, answer->qb2+65536, cp, name, (sizeof name) -2); + n = dn_expand(answer->qb2, end, cp, name, (sizeof name) -2); if (n < 0) { return NULL; } cp += n; add_assoc_string(*subarray, "rname", name, 1); + CHECKCP(5*4); GETLONG(n, cp); add_assoc_long(*subarray, "serial", n); GETLONG(n, cp); @@ -559,6 +577,7 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int break; case DNS_T_AAAA: tp = (u_char*)name; + CHECKCP(8*2); for(i=0; i < 8; i++) { GETSHORT(s, cp); if (s != 0) { @@ -593,6 +612,7 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int case DNS_T_A6: p = cp; add_assoc_string(*subarray, "type", "A6", 1); + CHECKCP(1); n = ((int)cp[0]) & 0xFF; cp++; add_assoc_long(*subarray, "masklen", n); @@ -628,6 +648,7 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int cp++; } for (i = (n + 8) / 16; i < 8; i++) { + CHECKCP(2); GETSHORT(s, cp); if (s != 0) { if (tp > (u_char *)name) { @@ -657,7 +678,7 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int tp[0] = '\0'; add_assoc_string(*subarray, "ipv6", name, 1); if (cp < p + dlen) { - n = dn_expand(answer->qb2, answer->qb2+65536, cp, name, (sizeof name) - 2); + n = dn_expand(answer->qb2, end, cp, name, (sizeof name) - 2); if (n < 0) { return NULL; } @@ -666,6 +687,7 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int } break; case DNS_T_SRV: + CHECKCP(3*2); add_assoc_string(*subarray, "type", "SRV", 1); GETSHORT(n, cp); add_assoc_long(*subarray, "pri", n); @@ -673,7 +695,7 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int add_assoc_long(*subarray, "weight", n); GETSHORT(n, cp); add_assoc_long(*subarray, "port", n); - n = dn_expand(answer->qb2, answer->qb2+65536, cp, name, (sizeof name) - 2); + n = dn_expand(answer->qb2, end, cp, name, (sizeof name) - 2); if (n < 0) { return NULL; } @@ -681,21 +703,35 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int add_assoc_string(*subarray, "target", name, 1); break; case DNS_T_NAPTR: + CHECKCP(2*2); add_assoc_string(*subarray, "type", "NAPTR", 1); GETSHORT(n, cp); add_assoc_long(*subarray, "order", n); GETSHORT(n, cp); add_assoc_long(*subarray, "pref", n); + + CHECKCP(1); n = (cp[0] & 0xFF); - add_assoc_stringl(*subarray, "flags", (char*)++cp, n, 1); + cp++; + CHECKCP(n); + add_assoc_stringl(*subarray, "flags", (char*)cp, n, 1); cp += n; + + CHECKCP(1); n = (cp[0] & 0xFF); - add_assoc_stringl(*subarray, "services", (char*)++cp, n, 1); + cp++; + CHECKCP(n); + add_assoc_stringl(*subarray, "services", (char*)cp, n, 1); cp += n; + + CHECKCP(1); n = (cp[0] & 0xFF); - add_assoc_stringl(*subarray, "regex", (char*)++cp, n, 1); + cp++; + CHECKCP(n); + add_assoc_stringl(*subarray, "regex", (char*)cp, n, 1); cp += n; - n = dn_expand(answer->qb2, answer->qb2+65536, cp, name, (sizeof name) - 2); + + n = dn_expand(answer->qb2, end, cp, name, (sizeof name) - 2); if (n < 0) { return NULL; } @@ -888,7 +924,7 @@ PHP_FUNCTION(dns_get_record) while (an-- && cp && cp < end) { zval *retval; - cp = php_parserr(cp, &answer, type_to_fetch, store_results, raw, &retval); + cp = php_parserr(cp, end, &answer, type_to_fetch, store_results, raw, &retval); if (retval != NULL && store_results) { add_next_index_zval(return_value, retval); } @@ -901,7 +937,7 @@ PHP_FUNCTION(dns_get_record) while (ns-- > 0 && cp && cp < end) { zval *retval = NULL; - cp = php_parserr(cp, &answer, DNS_T_ANY, authns != NULL, raw, &retval); + cp = php_parserr(cp, end, &answer, DNS_T_ANY, authns != NULL, raw, &retval); if (retval != NULL) { add_next_index_zval(authns, retval); } @@ -913,7 +949,7 @@ PHP_FUNCTION(dns_get_record) while (ar-- > 0 && cp && cp < end) { zval *retval = NULL; - cp = php_parserr(cp, &answer, DNS_T_ANY, 1, raw, &retval); + cp = php_parserr(cp, end, &answer, DNS_T_ANY, 1, raw, &retval); if (retval != NULL) { add_next_index_zval(addtl, retval); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/imageconvolution-regression.patch����������������������������������������������������0000664�0000000�0000000�00000001645�12305147045�017407� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 143bb29c1ac3f959f44b8fe59adef4d1840bc393 Mon Sep 17 00:00:00 2001 From: Brad Daily <brad@bradleyboy.com> Date: Wed, 19 Feb 2014 15:24:15 -0600 Subject: [PATCH] Fixes #66714: imageconvolution breakage in 5.5.9 5.5.9 included some GD fixes related to #66356. One of those fixes changed the above section of imageconvolution, but the variable was mistyped. --- ext/gd/gd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/gd/gd.c b/ext/gd/gd.c index ab4ab2d..0c4a0b3 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -4879,7 +4879,7 @@ static void php_image_filter_pixelate(INTERNAL_FUNCTION_PARAMETERS) if (zend_hash_index_find(Z_ARRVAL_PP(var), (j), (void **) &var2) == SUCCESS) { if (Z_TYPE_PP(var2) != IS_DOUBLE) { zval dval; - dval = **var; + dval = **var2; zval_copy_ctor(&dval); convert_to_double(&dval); matrix[i][j] = (float)Z_DVAL(dval); -- 1.8.5.5 �������������������������������������������������������������������������������������������debian/patches/CVE-2015-6831-1.patch����������������������������������������������������������������0000664�0000000�0000000�00000004034�12602473214�013401� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 7381b6accc5559b2de039af3a22f6ec1003b03b3 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 1 Aug 2015 21:45:19 -0700 Subject: [PATCH] Fixed bug #70166 - Use After Free Vulnerability in unserialize() with SPLArrayObject --- ext/spl/spl_array.c | 3 +++ ext/spl/tests/bug70166.phpt | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 ext/spl/tests/bug70166.phpt Index: php5-5.5.9+dfsg/ext/spl/spl_array.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_array.c 2015-09-29 07:31:22.241802075 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_array.c 2015-09-29 07:31:22.241802075 -0400 @@ -1759,6 +1759,7 @@ goto outexcept; } + var_push_dtor(&var_hash, &pflags); --p; /* for ';' */ flags = Z_LVAL_P(pflags); zval_ptr_dtor(&pflags); @@ -1783,6 +1784,7 @@ if (!php_var_unserialize(&intern->array, &p, s + buf_len, &var_hash TSRMLS_CC)) { goto outexcept; } + var_push_dtor(&var_hash, &intern->array); } if (*p != ';') { goto outexcept; @@ -1801,6 +1803,7 @@ goto outexcept; } + var_push_dtor(&var_hash, &pmembers); /* copy members */ if (!intern->std.properties) { rebuild_object_properties(&intern->std); Index: php5-5.5.9+dfsg/ext/spl/tests/bug70166.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/spl/tests/bug70166.phpt 2015-09-29 07:31:22.241802075 -0400 @@ -0,0 +1,29 @@ +--TEST-- +SPL: Bug #70166 Use After Free Vulnerability in unserialize() with SPLArrayObject +--FILE-- +<?php +$inner = 'x:i:1;a:0:{};m:a:0:{}'; +$exploit = 'a:2:{i:0;C:11:"ArrayObject":'.strlen($inner).':{'.$inner.'}i:1;R:5;}'; + +$data = unserialize($exploit); + +for($i = 0; $i < 5; $i++) { + $v[$i] = 'hi'.$i; +} + +var_dump($data); +?> +===DONE=== +--EXPECTF-- +array(2) { + [0]=> + object(ArrayObject)#%d (1) { + ["storage":"ArrayObject":private]=> + array(0) { + } + } + [1]=> + array(0) { + } +} +===DONE=== ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-5093.patch������������������������������������������������������������������0000664�0000000�0000000�00000006723�12746376471�013272� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 97eff7eb57fc2320c267a949cffd622c38712484 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 22 May 2016 17:49:02 -0700 Subject: [PATCH] Fix bug #72241: get_icu_value_internal out-of-bounds read --- ext/intl/locale/locale_methods.c | 235 ++++++++++++++++++++------------------- ext/intl/tests/bug72241.phpt | 14 +++ 2 files changed, 132 insertions(+), 117 deletions(-) create mode 100644 ext/intl/tests/bug72241.phpt Index: php5-5.5.9+dfsg/ext/intl/locale/locale_methods.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/intl/locale/locale_methods.c 2016-07-28 08:40:22.848537752 -0400 +++ php5-5.5.9+dfsg/ext/intl/locale/locale_methods.c 2016-07-28 08:40:22.844537704 -0400 @@ -327,6 +327,7 @@ if( U_FAILURE( status ) ) { if( status == U_BUFFER_OVERFLOW_ERROR ) { status = U_ZERO_ERROR; + buflen++; /* add space for \0 */ continue; } Index: php5-5.5.9+dfsg/ext/intl/tests/bug72241.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/intl/tests/bug72241.phpt 2016-07-28 08:40:22.844537704 -0400 @@ -0,0 +1,14 @@ +--TEST-- +Bug #72241: get_icu_value_internal out-of-bounds read +--SKIPIF-- +<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?> +--FILE-- +<?php +$var1=str_repeat("A", 1000); +$out = locale_get_primary_language($var1); +echo strlen($out) . PHP_EOL; +echo unpack('H*', $out)[1] . PHP_EOL; +--EXPECT-- +1000 +61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 + ���������������������������������������������debian/patches/expose_all_built_and_installed_apis.patch��������������������������������������������0000664�0000000�0000000�00000002033�12300436054�021062� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- php5.orig/scripts/man1/php-config.1.in +++ php5/scripts/man1/php-config.1.in @@ -44,7 +44,7 @@ Full path to php CLI or CGI binary .TP .PD 0 .B \-\-php-sapis -Show all SAPI modules available +Show all SAPI modules installed on the Debian system .TP .PD 0 .B \-\-configure-options --- php5.orig/scripts/php-config.in +++ php5/scripts/php-config.in @@ -18,9 +18,12 @@ exe_extension="@EXEEXT@" php_cli_binary=NONE php_cgi_binary=NONE configure_options="@CONFIGURE_OPTIONS@" -php_sapis="@PHP_INSTALLED_SAPIS@" +#php_sapis="@PHP_INSTALLED_SAPIS@" phpapi="@DEBIAN_PHP_API@" +# Query the dpkg database for available PHP5 sapis +php_sapis=$(dpkg-query -W -f='${binary:Package} ' libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-cli php5-fpm libphp5-embed 2>/dev/null | sed -e 's|libapache2-mod-php5|apache2handler|;s|libapache2-mod-php5filter|apache2filter|;s|php5-cgi|cgi|;s|php5-cli|cli|;s|php5-fpm|fpm|;s|libphp5-embed|embed|;') + # Set php_cli_binary and php_cgi_binary if available for sapi in $php_sapis; do case $sapi in �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/053-extension_api.patch��������������������������������������������������������������0000664�0000000�0000000�00000003350�12300436054�015010� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: Adds --phpapi argument to php-config(1) . TODO: make it more generic and add it to the man page. Origin: vendor Forwarded: no Last-Update: 2010-01-18 --- php5.orig/configure.in +++ php5/configure.in @@ -1177,8 +1177,13 @@ dnl Build extension directory path ZEND_MODULE_API_NO=`$EGREP '#define ZEND_MODULE_API_NO ' $srcdir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO //'` +DEBIAN_PHP_API=$ZEND_MODULE_API_NO +if echo "$CPPFLAGS $CFLAGS" | grep -q -- -D_FILE_OFFSET_BITS=64; then + DEBIAN_PHP_API="${DEBIAN_PHP_API}+lfs" +fi + if test -z "$EXTENSION_DIR"; then - extbasedir=$ZEND_MODULE_API_NO + extbasedir=$DEBIAN_PHP_API if test "$oldstyleextdir" = "yes"; then if test "$PHP_DEBUG" = "1"; then part1=debug @@ -1321,6 +1326,7 @@ PHP_SUBST(CXX) PHP_SUBST(CXXFLAGS) PHP_SUBST(CXXFLAGS_CLEAN) PHP_SUBST_OLD(DEBUG_CFLAGS) +PHP_SUBST_OLD(DEBIAN_PHP_API) PHP_SUBST_OLD(EXTENSION_DIR) PHP_SUBST_OLD(EXTRA_LDFLAGS) PHP_SUBST_OLD(EXTRA_LDFLAGS_PROGRAM) --- php5.orig/scripts/php-config.in +++ php5/scripts/php-config.in @@ -19,6 +19,7 @@ php_cli_binary=NONE php_cgi_binary=NONE configure_options="@CONFIGURE_OPTIONS@" php_sapis="@PHP_INSTALLED_SAPIS@" +phpapi="@DEBIAN_PHP_API@" # Set php_cli_binary and php_cgi_binary if available for sapi in $php_sapis; do @@ -57,6 +58,8 @@ case "$1" in echo $include_dir;; --php-binary) echo $php_binary;; +--phpapi) + echo $phpapi;; --php-sapis) echo $php_sapis;; --configure-options) @@ -80,6 +83,7 @@ Options: --man-dir [$man_dir] --php-binary [$php_binary] --php-sapis [$php_sapis] + --phpapi [$phpapi] --configure-options [$configure_options] --version [$version] --vernum [$vernum] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-6835-2.patch����������������������������������������������������������������0000664�0000000�0000000�00000002723�12602473443�013415� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From fc8eff897bd7fe3fed7f6867d2d6a86117a5278d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Fri, 28 Aug 2015 21:50:21 -0700 Subject: [PATCH] More fixes for bug #70219 --- ext/session/session.c | 7 +++-- ext/standard/tests/serialize/bug70219_1.phpt | 46 ++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 ext/standard/tests/serialize/bug70219_1.phpt Index: php5-5.5.9+dfsg/ext/session/session.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/session/session.c 2015-09-29 07:33:51.935531023 -0400 +++ php5-5.5.9+dfsg/ext/session/session.c 2015-09-29 07:33:51.931530976 -0400 @@ -861,7 +861,10 @@ PHP_VAR_UNSERIALIZE_INIT(var_hash); ALLOC_INIT_ZVAL(session_vars); - php_var_unserialize(&session_vars, &val, endptr, &var_hash TSRMLS_CC); + if (php_var_unserialize(&session_vars, &val, endptr, &var_hash TSRMLS_CC)) { + var_push_dtor(&var_hash, &session_vars); + } + PHP_VAR_UNSERIALIZE_DESTROY(var_hash); if (PS(http_session_vars)) { zval_ptr_dtor(&PS(http_session_vars)); @@ -870,7 +873,7 @@ array_init(session_vars); } PS(http_session_vars) = session_vars; - ZEND_SET_GLOBAL_VAR_WITH_LENGTH("_SESSION", sizeof("_SESSION"), PS(http_session_vars), 2, 1); + ZEND_SET_GLOBAL_VAR_WITH_LENGTH("_SESSION", sizeof("_SESSION"), PS(http_session_vars), Z_REFCOUNT_P(PS(http_session_vars)) + 1, 1); return SUCCESS; } /* }}} */ ���������������������������������������������debian/patches/strcmp_null-OnUpdateErrorLog.patch���������������������������������������������������0000664�0000000�0000000�00000000327�12300436054�017372� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- /dev/null +++ php5/tests/func/null-new_val.phpt @@ -0,0 +1,10 @@ +--TEST-- +ini_restore strcmp NULL new_val +--FILE-- +<?php + +ini_set('error_log','ini_set_works'); +ini_restore('error_log'); + +?> +--EXPECT-- ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-9652.patch������������������������������������������������������������������0000664�0000000�0000000�00000002745�12467421342�013261� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From ede59c8feb4b80e1b94e4abdaa0711051e2912ab Mon Sep 17 00:00:00 2001 From: Anatol Belski <ab@php.net> Date: Sun, 4 Jan 2015 14:20:21 +0100 Subject: [PATCH] Fixed bug #68735 fileinfo out-of-bounds memory access --- NEWS | 7 +++++++ ext/fileinfo/libmagic/softmagic.c | 7 +++++-- ext/fileinfo/tests/bug68735.jpg | Bin 0 -> 24 bytes ext/fileinfo/tests/bug68735.phpt | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 ext/fileinfo/tests/bug68735.jpg create mode 100644 ext/fileinfo/tests/bug68735.phpt diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c index 7e0c856..e7b7855 100644 --- a/ext/fileinfo/libmagic/softmagic.c +++ b/ext/fileinfo/libmagic/softmagic.c @@ -884,14 +884,17 @@ mconvert(struct magic_set *ms, struct magic *m, int flip) size_t sz = file_pstring_length_size(m); char *ptr1 = p->s, *ptr2 = ptr1 + sz; size_t len = file_pstring_get_length(m, ptr1); - if (len >= sizeof(p->s)) { + sz = sizeof(p->s) - sz; /* maximum length of string */ + if (len >= sz) { /* * The size of the pascal string length (sz) * is 1, 2, or 4. We need at least 1 byte for NUL * termination, but we've already truncated the * string by p->s, so we need to deduct sz. + * Because we can use one of the bytes of the length + * after we shifted as NUL termination. */ - len = sizeof(p->s) - sz; + len = sz; } while (len--) *ptr1++ = *ptr2++; ���������������������������debian/patches/CVE-2015-6835-1.patch����������������������������������������������������������������0000664�0000000�0000000�00000034436�12602473433�013421� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From df4bf28f9f104ca3ef78ed94b497859f15b004e5 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 23 Aug 2015 13:27:59 -0700 Subject: [PATCH] Fix bug #70219 (Use after free vulnerability in session deserializer) --- ext/session/session.c | 36 +- ext/session/tests/session_decode_error2.phpt | 518 +++++------------------ ext/session/tests/session_decode_variation3.phpt | 2 +- ext/standard/tests/serialize/bug70219.phpt | 38 ++ ext/standard/var_unserializer.c | 68 +-- ext/standard/var_unserializer.re | 64 +-- 6 files changed, 228 insertions(+), 498 deletions(-) create mode 100644 ext/standard/tests/serialize/bug70219.phpt Index: php5-5.5.9+dfsg/ext/session/session.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/session/session.c 2015-09-29 07:33:44.083440371 -0400 +++ php5-5.5.9+dfsg/ext/session/session.c 2015-09-29 07:33:44.083440371 -0400 @@ -215,16 +215,18 @@ } /* }}} */ -static void php_session_decode(const char *val, int vallen TSRMLS_DC) /* {{{ */ +static int php_session_decode(const char *val, int vallen TSRMLS_DC) /* {{{ */ { if (!PS(serializer)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown session.serialize_handler. Failed to decode session object"); - return; + return FAILURE; } if (PS(serializer)->decode(val, vallen TSRMLS_CC) == FAILURE) { php_session_destroy(TSRMLS_C); php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to decode session object. Session has been destroyed"); + return FAILURE; } + return SUCCESS; } /* }}} */ @@ -944,8 +946,11 @@ ALLOC_INIT_ZVAL(current); if (php_var_unserialize(¤t, (const unsigned char **) &p, (const unsigned char *) endptr, &var_hash TSRMLS_CC)) { php_set_session_var(name, namelen, current, &var_hash TSRMLS_CC); + } else { + PHP_VAR_UNSERIALIZE_DESTROY(var_hash); + return FAILURE; } - zval_ptr_dtor(¤t); + var_push_dtor_no_addref(&var_hash, ¤t); } PS_ADD_VARL(name, namelen); efree(name); @@ -1036,8 +1041,13 @@ ALLOC_INIT_ZVAL(current); if (php_var_unserialize(¤t, (const unsigned char **) &q, (const unsigned char *) endptr, &var_hash TSRMLS_CC)) { php_set_session_var(name, namelen, current, &var_hash TSRMLS_CC); + } else { + var_push_dtor_no_addref(&var_hash, ¤t); + efree(name); + PHP_VAR_UNSERIALIZE_DESTROY(var_hash); + return FAILURE; } - zval_ptr_dtor(¤t); + var_push_dtor_no_addref(&var_hash, ¤t); } PS_ADD_VARL(name, namelen); skip: @@ -2037,9 +2047,7 @@ return; } - php_session_decode(str, str_len TSRMLS_CC); - - RETURN_TRUE; + RETVAL_BOOL(php_session_decode(str, str_len TSRMLS_CC) == SUCCESS); } /* }}} */ Index: php5-5.5.9+dfsg/ext/session/tests/session_decode_error2.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/session/tests/session_decode_error2.phpt 2015-09-29 07:33:44.083440371 -0400 +++ php5-5.5.9+dfsg/ext/session/tests/session_decode_error2.phpt 2015-09-29 07:33:44.083440371 -0400 @@ -53,563 +53,247 @@ } -- Iteration 4 -- -bool(true) -array(1) { - ["foo"]=> - NULL + +Warning: session_decode(): Failed to decode session object. Session has been destroyed in %s/session_decode_error2.php on line %d +bool(false) +array(0) { } -- Iteration 5 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 6 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 7 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 8 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 9 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 10 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 11 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 12 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 13 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 14 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 15 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 16 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 17 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 18 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 19 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 20 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 21 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 22 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 23 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 24 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 25 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 26 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 27 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 28 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 29 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 30 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 31 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 32 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 33 -- -bool(true) -array(1) { - ["foo"]=> - NULL +bool(false) +array(0) { } -- Iteration 34 -- -bool(true) -array(1) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 35 -- -bool(true) -array(1) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 36 -- -bool(true) -array(1) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 37 -- -bool(true) -array(1) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 38 -- -bool(true) -array(1) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 39 -- -bool(true) -array(2) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - NULL +bool(false) +array(0) { } -- Iteration 40 -- -bool(true) -array(2) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - NULL +bool(false) +array(0) { } -- Iteration 41 -- -bool(true) -array(2) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - NULL +bool(false) +array(0) { } -- Iteration 42 -- -bool(true) -array(2) { - ["foo"]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - NULL +bool(false) +array(0) { } -- Iteration 43 -- -bool(true) -array(2) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 44 -- -bool(true) -array(2) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 45 -- -bool(true) -array(2) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 46 -- -bool(true) -array(2) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 47 -- -bool(true) -array(2) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } +bool(false) +array(0) { } -- Iteration 48 -- -bool(true) -array(3) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["blah"]=> - NULL +bool(false) +array(0) { } -- Iteration 49 -- -bool(true) -array(3) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["blah"]=> - NULL +bool(false) +array(0) { } -- Iteration 50 -- -bool(true) -array(3) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["blah"]=> - NULL +bool(false) +array(0) { } -- Iteration 51 -- -bool(true) -array(3) { - ["foo"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["guff"]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - ["blah"]=> - NULL +bool(false) +array(0) { } -bool(true) -Done +Warning: session_destroy(): Trying to destroy uninitialized session in %s/session_decode_error2.php on line %d +bool(false) +Done Index: php5-5.5.9+dfsg/ext/session/tests/session_decode_variation3.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/session/tests/session_decode_variation3.phpt 2015-09-29 07:33:44.083440371 -0400 +++ php5-5.5.9+dfsg/ext/session/tests/session_decode_variation3.phpt 2015-09-29 07:33:44.083440371 -0400 @@ -49,7 +49,7 @@ } Warning: session_decode(): Unknown session.serialize_handler. Failed to decode session object in %s on line %d -bool(true) +bool(false) array(3) { ["foo"]=> int(1234567890) Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2015-09-29 07:33:44.083440371 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2015-09-29 07:33:44.083440371 -0400 @@ -84,7 +84,13 @@ PHPAPI void var_push_dtor_no_addref(php_unserialize_data_t *var_hashx, zval **rval) { - var_entries *var_hash = (*var_hashx)->last_dtor; + var_entries *var_hash; + + if (!var_hashx || !*var_hashx) { + return; + } + + var_hash = (*var_hashx)->last_dtor; #if VAR_ENTRIES_DBG fprintf(stderr, "var_push_dtor_no_addref(%p, %ld): %d (%d)\n", *rval, var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval), Z_REFCOUNT_PP(rval)); #endif @@ -298,24 +304,20 @@ ALLOC_INIT_ZVAL(key); if (!php_var_unserialize(&key, p, max, NULL TSRMLS_CC)) { - zval_dtor(key); - FREE_ZVAL(key); + var_push_dtor_no_addref(var_hash, &key); return 0; } if (Z_TYPE_P(key) != IS_LONG && Z_TYPE_P(key) != IS_STRING) { - zval_dtor(key); - FREE_ZVAL(key); + var_push_dtor_no_addref(var_hash, &key); return 0; } ALLOC_INIT_ZVAL(data); if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) { - zval_dtor(key); - FREE_ZVAL(key); - zval_dtor(data); - FREE_ZVAL(data); + var_push_dtor_no_addref(var_hash, &key); + var_push_dtor_no_addref(var_hash, &data); return 0; } @@ -344,9 +346,7 @@ sizeof data, NULL); } var_push_dtor(var_hash, &data); - - zval_dtor(key); - FREE_ZVAL(key); + var_push_dtor_no_addref(var_hash, &key); if (elements && *(*p-1) != ';' && *(*p-1) != '}') { (*p)--; Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2015-09-29 07:33:44.083440371 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2015-09-29 07:33:44.083440371 -0400 @@ -83,7 +83,13 @@ PHPAPI void var_push_dtor_no_addref(php_unserialize_data_t *var_hashx, zval **rval) { - var_entries *var_hash = (*var_hashx)->last_dtor; + var_entries *var_hash; + + if (!var_hashx || !*var_hashx) { + return; + } + + var_hash = (*var_hashx)->last_dtor; #if VAR_ENTRIES_DBG fprintf(stderr, "var_push_dtor_no_addref(%p, %ld): %d (%d)\n", *rval, var_hash?var_hash->used_slots:-1L, Z_TYPE_PP(rval), Z_REFCOUNT_PP(rval)); #endif @@ -304,24 +310,20 @@ ALLOC_INIT_ZVAL(key); if (!php_var_unserialize(&key, p, max, NULL TSRMLS_CC)) { - zval_dtor(key); - FREE_ZVAL(key); + var_push_dtor_no_addref(var_hash, &key); return 0; } if (Z_TYPE_P(key) != IS_LONG && Z_TYPE_P(key) != IS_STRING) { - zval_dtor(key); - FREE_ZVAL(key); + var_push_dtor_no_addref(var_hash, &key); return 0; } ALLOC_INIT_ZVAL(data); if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) { - zval_dtor(key); - FREE_ZVAL(key); - zval_dtor(data); - FREE_ZVAL(data); + var_push_dtor_no_addref(var_hash, &key); + var_push_dtor_no_addref(var_hash, &data); return 0; } @@ -350,9 +352,7 @@ sizeof data, NULL); } var_push_dtor(var_hash, &data); - - zval_dtor(key); - FREE_ZVAL(key); + var_push_dtor_no_addref(var_hash, &key); if (elements && *(*p-1) != ';' && *(*p-1) != '}') { (*p)--; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-1903.patch������������������������������������������������������������������0000664�0000000�0000000�00000003205�12704221754�013241� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: fix denial of service or memory disclosure in gd via large bgd_color argument to imagerotate Bug: https://bugs.php.net/bug.php?id=70976 Origin: upstream, https://github.com/php/php-src/commit/4bb422343f29f06b7081323844d9b52e1a71e4a5 Origin: upstream, https://github.com/php/php-src/commit/2baeb167a08b0186a885208bdc8b5871f1681dc8 Origin: upstream, https://github.com/php/php-src/commit/aa8d3a8cc612ba87c0497275f58a2317a90fb1c4 Index: php5-5.5.9+dfsg/ext/gd/libgd/gd_interpolation.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/gd/libgd/gd_interpolation.c 2016-04-15 13:24:57.128704439 -0400 +++ php5-5.5.9+dfsg/ext/gd/libgd/gd_interpolation.c 2016-04-15 13:24:57.124704388 -0400 @@ -2162,7 +2162,7 @@ images can be done at a later point. */ if (src->trueColor == 0) { - if (bgcolor >= 0) { + if (bgcolor < gdMaxColors) { bgcolor = gdTrueColorAlpha(src->red[bgcolor], src->green[bgcolor], src->blue[bgcolor], src->alpha[bgcolor]); } gdImagePaletteToTrueColor(src); Index: php5-5.5.9+dfsg/ext/gd/tests/bug70976.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/gd/tests/bug70976.phpt 2016-04-15 13:24:57.124704388 -0400 @@ -0,0 +1,13 @@ +--TEST-- +Bug #70976 (Memory Read via gdImageRotateInterpolated Array Index Out of Bounds) +--SKIPIF-- +<?php + if(!extension_loaded('gd')){ die('skip gd extension not available'); } +?> +--FILE-- +<?php +$img = imagerotate(imagecreate(10,10),45,0x7ffffff9); +var_dump($img); +?> +--EXPECTF-- +resource(5) of type (gd) \ No newline at end of file �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-5114.patch������������������������������������������������������������������0000664�0000000�0000000�00000001563�12746376524�013260� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From be19dbcb84fea0001e53cea2732c00de7ae6c371 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 8 Dec 2015 00:10:07 -0800 Subject: [PATCH] Fixed bug #70755: fpm_log.c memory leak and buffer overflow --- NEWS | 3 +++ sapi/fpm/fpm/fpm_log.c | 5 +++++ 2 files changed, 8 insertions(+) Index: php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_log.c =================================================================== --- php5-5.5.9+dfsg.orig/sapi/fpm/fpm/fpm_log.c 2016-07-28 08:40:50.020861718 -0400 +++ php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_log.c 2016-07-28 08:40:50.016861670 -0400 @@ -446,6 +446,11 @@ b += len2; len += len2; } + if (len >= FPM_LOG_BUFFER) { + zlog(ZLOG_NOTICE, "the log buffer is full (%d). The access log request has been truncated.", FPM_LOG_BUFFER); + len = FPM_LOG_BUFFER; + break; + } continue; } ���������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-10397-1.patch���������������������������������������������������������������0000664�0000000�0000000�00000021234�13141100631�013452� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From b061fa909de77085d3822a89ab901b934d0362c4 Mon Sep 17 00:00:00 2001 From: Nikita Popov <nikic@php.net> Date: Sat, 8 Oct 2016 01:04:22 +0200 Subject: [PATCH] Fix bug #73192 --- ext/standard/tests/url/bug73192.phpt | 30 +++++++++++++++++++++++++ ext/standard/tests/url/parse_url_basic_001.phpt | 20 ++--------------- ext/standard/tests/url/parse_url_basic_002.phpt | 4 ++-- ext/standard/tests/url/parse_url_basic_003.phpt | 4 ++-- ext/standard/tests/url/parse_url_basic_004.phpt | 4 ++-- ext/standard/tests/url/parse_url_basic_005.phpt | 4 ++-- ext/standard/tests/url/parse_url_basic_006.phpt | 4 ++-- ext/standard/tests/url/parse_url_basic_007.phpt | 4 ++-- ext/standard/tests/url/parse_url_basic_008.phpt | 4 ++-- ext/standard/tests/url/parse_url_basic_009.phpt | 4 ++-- ext/standard/url.c | 23 +------------------ 11 files changed, 49 insertions(+), 56 deletions(-) create mode 100644 ext/standard/tests/url/bug73192.phpt Index: php5-5.5.9+dfsg/ext/standard/tests/url/bug73192.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/url/bug73192.phpt 2017-08-04 10:15:09.470874269 -0400 @@ -0,0 +1,30 @@ +--TEST-- +Bug #73192: parse_url return wrong hostname +--FILE-- +<?php + +var_dump(parse_url("http://example.com:80#@google.com/")); +var_dump(parse_url("http://example.com:80?@google.com/")); + +?> +--EXPECT-- +array(4) { + ["scheme"]=> + string(4) "http" + ["host"]=> + string(11) "example.com" + ["port"]=> + int(80) + ["fragment"]=> + string(12) "@google.com/" +} +array(4) { + ["scheme"]=> + string(4) "http" + ["host"]=> + string(11) "example.com" + ["port"]=> + int(80) + ["query"]=> + string(12) "@google.com/" +} Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_001.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_001.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_001.phpt 2017-08-04 10:15:09.470874269 -0400 @@ -759,25 +759,9 @@ echo "Done"; int(6) } ---> http://?:/: array(3) { - ["scheme"]=> - string(4) "http" - ["host"]=> - string(1) "?" - ["path"]=> - string(1) "/" -} +--> http://?:/: bool(false) ---> http://@?:/: array(4) { - ["scheme"]=> - string(4) "http" - ["host"]=> - string(1) "?" - ["user"]=> - string(0) "" - ["path"]=> - string(1) "/" -} +--> http://@?:/: bool(false) --> file:///:: array(2) { ["scheme"]=> Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_002.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_002.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_002.phpt 2017-08-04 10:15:09.474874269 -0400 @@ -98,8 +98,8 @@ echo "Done"; --> http://::? : string(4) "http" --> http://::# : string(4) "http" --> x://::6.5 : string(1) "x" ---> http://?:/ : string(4) "http" ---> http://@?:/ : string(4) "http" +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : string(4) "file" --> file:///a:/ : string(4) "file" --> file:///ab:/ : string(4) "file" Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_003.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_003.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_003.phpt 2017-08-04 10:15:09.474874269 -0400 @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : string(1) ":" --> http://::# : string(1) ":" --> x://::6.5 : string(1) ":" ---> http://?:/ : string(1) "?" ---> http://@?:/ : string(1) "?" +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_004.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_004.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_004.phpt 2017-08-04 10:15:09.474874269 -0400 @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : int(6) ---> http://?:/ : NULL ---> http://@?:/ : NULL +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_005.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_005.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_005.phpt 2017-08-04 10:15:09.474874269 -0400 @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : NULL ---> http://@?:/ : string(0) "" +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_006.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_006.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_006.phpt 2017-08-04 10:15:09.474874269 -0400 @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : NULL ---> http://@?:/ : NULL +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_007.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_007.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_007.phpt 2017-08-04 10:15:09.474874269 -0400 @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : string(1) "/" ---> http://@?:/ : string(1) "/" +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : string(2) "/:" --> file:///a:/ : string(3) "a:/" --> file:///ab:/ : string(5) "/ab:/" Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_008.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_008.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_008.phpt 2017-08-04 10:15:09.474874269 -0400 @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : NULL ---> http://@?:/ : NULL +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL Index: php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_009.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/url/parse_url_basic_009.phpt 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/url/parse_url_basic_009.phpt 2017-08-04 10:15:09.474874269 -0400 @@ -97,8 +97,8 @@ echo "Done"; --> http://::? : NULL --> http://::# : NULL --> x://::6.5 : NULL ---> http://?:/ : NULL ---> http://@?:/ : NULL +--> http://?:/ : bool(false) +--> http://@?:/ : bool(false) --> file:///: : NULL --> file:///a:/ : NULL --> file:///ab:/ : NULL Index: php5-5.5.9+dfsg/ext/standard/url.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/url.c 2017-08-04 10:15:09.478874269 -0400 +++ php5-5.5.9+dfsg/ext/standard/url.c 2017-08-04 10:15:42.298873067 -0400 @@ -214,28 +214,7 @@ PHPAPI php_url *php_url_parse_ex(char co goto nohost; } - e = ue; - - if (!(p = memchr(s, '/', (ue - s)))) { - char *query, *fragment; - - query = memchr(s, '?', (ue - s)); - fragment = memchr(s, '#', (ue - s)); - - if (query && fragment) { - if (query > fragment) { - e = fragment; - } else { - e = query; - } - } else if (query) { - e = query; - } else if (fragment) { - e = fragment; - } - } else { - e = p; - } + e = s + strcspn(s, "/?#"); /* check for login and password */ if ((p = zend_memrchr(s, '@', (e-s)))) { ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7478.patch������������������������������������������������������������������0000664�0000000�0000000�00000010633�13046653543�013266� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 40e7baab3c90001beee4c8f0ed0ef79ad18ee0d6 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 3 Oct 2016 00:09:02 -0700 Subject: [PATCH] Fix bug #73190: memcpy negative parameter _bc_new_num_ex --- Zend/zend_exceptions.c | 32 ++++++++++++++++++++++++-------- ext/bcmath/libbcmath/src/init.c | 5 ++++- ext/bcmath/libbcmath/src/outofmem.c | 3 +-- main/php_version.h | 6 +++--- 4 files changed, 32 insertions(+), 14 deletions(-) Index: php5-5.5.9+dfsg/Zend/zend_exceptions.c =================================================================== --- php5-5.5.9+dfsg.orig/Zend/zend_exceptions.c 2017-02-08 12:36:46.107637874 -0500 +++ php5-5.5.9+dfsg/Zend/zend_exceptions.c 2017-02-08 12:37:24.884199778 -0500 @@ -221,13 +221,9 @@ /* {{{ proto Exception::__wakeup() Exception unserialize checks */ #define CHECK_EXC_TYPE(name, type) \ - value = zend_read_property(default_exception_ce, object, name, sizeof(name)-1, 0 TSRMLS_CC); \ + value = zend_read_property(default_exception_ce, object, name, sizeof(name)-1, 1 TSRMLS_CC); \ if (value && Z_TYPE_P(value) != IS_NULL && Z_TYPE_P(value) != type) { \ - zval *tmp; \ - MAKE_STD_ZVAL(tmp); \ - ZVAL_STRINGL(tmp, name, sizeof(name)-1, 1); \ - Z_OBJ_HANDLER_P(object, unset_property)(object, tmp, 0 TSRMLS_CC); \ - zval_ptr_dtor(&tmp); \ + zend_unset_property(default_exception_ce, object, name, sizeof(name)-1 TSRMLS_CC); \ } ZEND_METHOD(exception, __wakeup) @@ -241,7 +237,12 @@ CHECK_EXC_TYPE("file", IS_STRING); CHECK_EXC_TYPE("line", IS_LONG); CHECK_EXC_TYPE("trace", IS_ARRAY); - CHECK_EXC_TYPE("previous", IS_OBJECT); + value = zend_read_property(default_exception_ce, object, "previous", sizeof("previous")-1, 1 TSRMLS_CC); + if (value && Z_TYPE_P(value) != IS_NULL && (Z_TYPE_P(value) != IS_OBJECT || + !instanceof_function(Z_OBJCE_P(value), default_exception_ce TSRMLS_CC) || + value == object)) { + zend_unset_property(default_exception_ce, object, "previous", sizeof("previous")-1 TSRMLS_CC); + } } /* }}} */ @@ -663,7 +664,11 @@ zval_dtor(&file); zval_dtor(&line); - exception = zend_read_property(default_exception_ce, exception, "previous", sizeof("previous")-1, 0 TSRMLS_CC); + Z_OBJPROP_P(exception)->nApplyCount++; + exception = zend_read_property(default_exception_ce, exception, "previous", sizeof("previous")-1, 1 TSRMLS_CC); + if (exception && Z_TYPE_P(exception) == IS_OBJECT && Z_OBJPROP_P(exception)->nApplyCount > 0) { + exception = NULL; + } if (trace) { zval_ptr_dtor(&trace); @@ -672,6 +677,17 @@ } zval_dtor(&fname); + /* Reset apply counts */ + exception = getThis(); + while (exception && Z_TYPE_P(exception) == IS_OBJECT && instanceof_function(Z_OBJCE_P(exception), default_exception_ce TSRMLS_CC)) { + if(Z_OBJPROP_P(exception)->nApplyCount) { + Z_OBJPROP_P(exception)->nApplyCount--; + } else { + break; + } + exception = zend_read_property(default_exception_ce, exception, "previous", sizeof("previous")-1, 1 TSRMLS_CC); + } + /* We store the result in the private property string so we can access * the result in uncaught exception handlers without memleaks. */ zend_update_property_string(default_exception_ce, getThis(), "string", sizeof("string")-1, str TSRMLS_CC); Index: php5-5.5.9+dfsg/ext/bcmath/libbcmath/src/init.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/bcmath/libbcmath/src/init.c 2017-02-08 12:36:46.107637874 -0500 +++ php5-5.5.9+dfsg/ext/bcmath/libbcmath/src/init.c 2017-02-08 12:36:46.103637816 -0500 @@ -49,7 +49,10 @@ int length, scale, persistent; { bc_num temp; - + /* PHP Change: add length check */ + if ((size_t)length+(size_t)scale > INT_MAX) { + zend_error(E_ERROR, "Result too long, max is %d", INT_MAX); + } /* PHP Change: malloc() -> pemalloc(), removed free_list code */ temp = (bc_num) safe_pemalloc (1, sizeof(bc_struct)+length, scale, persistent); #if 0 Index: php5-5.5.9+dfsg/ext/bcmath/libbcmath/src/outofmem.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/bcmath/libbcmath/src/outofmem.c 2017-02-08 12:36:46.107637874 -0500 +++ php5-5.5.9+dfsg/ext/bcmath/libbcmath/src/outofmem.c 2017-02-08 12:36:46.103637816 -0500 @@ -41,6 +41,5 @@ void bc_out_of_memory (void) { - (void) fprintf (stderr, "bcmath: out of memory!\n"); - exit (1); + zend_error_noreturn(E_ERROR, "bcmath: out of memory!"); } �����������������������������������������������������������������������������������������������������debian/patches/CVE-2015-4643.patch������������������������������������������������������������������0000664�0000000�0000000�00000001327�12543257316�013253� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 0765623d6991b62ffcd93ddb6be8a5203a2fa7e2 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 31 May 2015 17:23:06 -0700 Subject: [PATCH] improve fix for Bug #69545 --- NEWS | 4 ++++ ext/ftp/ftp.c | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) Index: php5-5.6.4+dfsg/ext/ftp/ftp.c =================================================================== --- php5-5.6.4+dfsg.orig/ext/ftp/ftp.c 2015-06-25 12:09:14.939770962 -0400 +++ php5-5.6.4+dfsg/ext/ftp/ftp.c 2015-06-25 12:09:14.935770913 -0400 @@ -1663,8 +1663,6 @@ for (ptr = data->buf; rcvd; rcvd--, ptr++) { if (*ptr == '\n' && lastch == '\r') { lines++; - } else { - size++; } lastch = *ptr; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2017-11628.patch�����������������������������������������������������������������0000664�0000000�0000000�00000003461�13141101761�013322� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 5f8380d33e648964d2d5140f329cf2d4c443033c Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 20 Jun 2017 00:09:01 -0700 Subject: [PATCH] Fix bug #74603 - use correct buffer size --- Zend/tests/bug74603.ini | 1 + Zend/tests/bug74603.phpt | 15 +++++++++++++++ Zend/zend_ini_parser.y | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 Zend/tests/bug74603.ini create mode 100644 Zend/tests/bug74603.phpt Index: php5-5.5.9+dfsg/Zend/tests/bug74603.ini =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/Zend/tests/bug74603.ini 2017-08-04 10:25:51.618850746 -0400 @@ -0,0 +1 @@ +0=0&~2000000000 Index: php5-5.5.9+dfsg/Zend/tests/bug74603.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/Zend/tests/bug74603.phpt 2017-08-04 10:25:51.618850746 -0400 @@ -0,0 +1,15 @@ +--TEST-- +Bug #74603 (PHP INI Parsing Stack Buffer Overflow Vulnerability) +--SKIPIF-- +<?php +if (PHP_INT_MAX !== 2147483647) + die('skip for 32-bit only'); +--FILE-- +<?php +var_dump(parse_ini_file(__DIR__ . "/bug74603.ini", true, INI_SCANNER_NORMAL)); +?> +--EXPECT-- +array(1) { + [0]=> + string(1) "0" +} Index: php5-5.5.9+dfsg/Zend/zend_ini_parser.y =================================================================== --- php5-5.5.9+dfsg.orig/Zend/zend_ini_parser.y 2017-08-04 10:25:51.622850746 -0400 +++ php5-5.5.9+dfsg/Zend/zend_ini_parser.y 2017-08-04 10:25:51.618850746 -0400 @@ -49,7 +49,7 @@ static void zend_ini_do_op(char type, zv { int i_result; int i_op1, i_op2; - char str_result[MAX_LENGTH_OF_LONG]; + char str_result[MAX_LENGTH_OF_LONG+1]; i_op1 = atoi(Z_STRVAL_P(op1)); free(Z_STRVAL_P(op1)); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2017-9227.patch������������������������������������������������������������������0000664�0000000�0000000�00000001505�13141102003�013227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From bdf7393ddb15d0ac522250a9825b685437e2b966 Mon Sep 17 00:00:00 2001 From: Remi Collet <remi@php.net> Date: Tue, 30 May 2017 15:38:17 +0200 Subject: [PATCH] Patch from the upstream git https://github.com/kkos/oniguruma/issues/58 (CVE-2017-9227) Thanks to Mamoru TASAKA <mtasaka@fedoraproject.org> --- ext/mbstring/oniguruma/regexec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ext/mbstring/oniguruma/regexec.c b/ext/mbstring/oniguruma/regexec.c index 5e26896e365d..97d5f32d28d8 100644 --- a/ext/mbstring/oniguruma/regexec.c +++ b/ext/mbstring/oniguruma/regexec.c @@ -3123,6 +3123,8 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, } else { UChar *q = p + reg->dmin; + + if (q >= end) return 0; /* fail */ while (p < q) p += enclen(reg->enc, p); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/php-5.2.4-embed.patch����������������������������������������������������������������0000664�0000000�0000000�00000001025�12300436054�014140� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- php5.orig/sapi/embed/config.m4 +++ php5/sapi/embed/config.m4 @@ -12,7 +12,7 @@ if test "$PHP_EMBED" != "no"; then case "$PHP_EMBED" in yes|shared) PHP_EMBED_TYPE=shared - INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(prefix)/lib; \$(INSTALL) -m 0755 $SAPI_SHARED \$(INSTALL_ROOT)\$(prefix)/lib" + INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(libdir); \$(LIBTOOL) --mode=install \$(INSTALL) -m 0755 \$(OVERALL_TARGET) \$(INSTALL_ROOT)\$(libdir)" ;; static) PHP_EMBED_TYPE=static �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/100-recode_is_shared.patch�����������������������������������������������������������0000664�0000000�0000000�00000001031�12300436054�015410� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: Turn recode conflicts error message into a warning. The recode extension is packaged as a shared library in Debian. Origin: vendor Forwarded: no Last-Update: 2010-01-18 --- php5.orig/ext/recode/config9.m4 +++ php5/ext/recode/config9.m4 @@ -13,6 +13,6 @@ if test "$PHP_RECODE" != "no"; then fi if test -n "$recode_conflict"; then - AC_MSG_ERROR([recode extension can not be configured together with:$recode_conflict]) + AC_MSG_WARN([recode extension can not be used together with:$recode_conflict]) fi fi �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7412.patch������������������������������������������������������������������0000664�0000000�0000000�00000003221�12773246605�013250� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 28f80baf3c53e267c9ce46a2a0fadbb981585132 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 12 Sep 2016 20:25:08 -0700 Subject: [PATCH] Fix bug #72293 - Heap overflow in mysqlnd related to BIT fields --- ext/mysqlnd/mysqlnd_wireprotocol.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) Index: php5-5.5.9+dfsg/ext/mysqlnd/mysqlnd_wireprotocol.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mysqlnd/mysqlnd_wireprotocol.c 2016-09-29 13:19:46.554866106 -0400 +++ php5-5.5.9+dfsg/ext/mysqlnd/mysqlnd_wireprotocol.c 2016-09-29 13:20:46.315536110 -0400 @@ -1584,6 +1584,7 @@ zend_uchar * p = row_buffer->ptr; size_t data_size = row_buffer->app; zend_uchar * bit_area = (zend_uchar*) row_buffer->ptr + data_size + 1; /* we allocate from here */ + const zend_uchar * const packet_end = (zend_uchar*) row_buffer->ptr + data_size; DBG_ENTER("php_mysqlnd_rowp_read_text_protocol"); @@ -1605,8 +1606,13 @@ /* Don't reverse the order. It is significant!*/ zend_uchar *this_field_len_pos = p; /* php_mysqlnd_net_field_length() call should be after *this_field_len_pos = p; */ - unsigned long len = php_mysqlnd_net_field_length(&p); + const unsigned long len = php_mysqlnd_net_field_length(&p); + if (len != MYSQLND_NULL_LENGTH && ((p + len) > packet_end)) { + php_error_docref(NULL, E_WARNING, "Malformed server packet. Field length pointing "MYSQLND_SZ_T_SPEC + " bytes after end of packet", (p + len) - packet_end - 1); + DBG_RETURN(FAIL); + } if (current_field > start_field && last_field_was_string) { /* Normal queries: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7417-2.patch����������������������������������������������������������������0000664�0000000�0000000�00000001523�12773462355�013421� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 33d0ef0fefed7b8eb958aa4f1b4e2e7602953d30 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 12 Sep 2016 20:12:41 -0700 Subject: [PATCH] Fix test --- ext/spl/tests/bug70068.phpt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ext/spl/tests/bug70068.phpt b/ext/spl/tests/bug70068.phpt index 92a38df..96b2fa8 100644 --- a/ext/spl/tests/bug70068.phpt +++ b/ext/spl/tests/bug70068.phpt @@ -2,8 +2,13 @@ Bug #70068 (Dangling pointer in the unserialization of ArrayObject items) --FILE-- <?php +try { $a = unserialize('a:3:{i:0;C:11:"ArrayObject":20:{x:i:0;r:3;;m:a:0:{};}i:1;d:11;i:2;S:31:"AAAAAAAABBBBCCCC\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00";}'); +} catch(Exception $e) { + print $e->getMessage()."\n"; +} ?> OK --EXPECT-- +Error at offset 10 of 20 bytes OK \ No newline at end of file -- 2.1.4 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-5771.patch������������������������������������������������������������������0000664�0000000�0000000�00000006602�12746377616�013273� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 3f627e580acfdaf0595ae3b115b8bec677f203ee Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 20 Jun 2016 21:26:33 -0700 Subject: [PATCH] Fixed ##72433: Use After Free Vulnerability in PHP's GC algorithm and unserialize --- Zend/tests/gc_024.phpt | 2 +- ext/spl/spl_array.c | 11 +++++++++++ ext/standard/tests/strings/bug72433.phpt | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/strings/bug72433.phpt Index: php5-5.5.9+dfsg/Zend/tests/gc_024.phpt =================================================================== --- php5-5.5.9+dfsg.orig/Zend/tests/gc_024.phpt 2016-07-28 08:50:19.847639047 -0400 +++ php5-5.5.9+dfsg/Zend/tests/gc_024.phpt 2016-07-28 08:50:19.843638999 -0400 @@ -13,5 +13,5 @@ echo "ok\n"; ?> --EXPECT-- -int(1) +int(2) ok Index: php5-5.5.9+dfsg/ext/spl/spl_array.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_array.c 2016-07-28 08:50:19.847639047 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_array.c 2016-07-28 08:50:19.843638999 -0400 @@ -831,6 +831,16 @@ } /* }}} */ +static HashTable *spl_array_get_gc(zval *object, zval ***gc_data, int *gc_data_count TSRMLS_DC) /* {{{ */ +{ + spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC); + + *gc_data = &intern->array; + *gc_data_count = 1; + return zend_std_get_properties(object); +} +/* }}} */ + static zval *spl_array_read_property(zval *object, zval *member, int type, const zend_literal *key TSRMLS_DC) /* {{{ */ { spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC); @@ -1954,6 +1964,7 @@ spl_handler_ArrayObject.get_properties = spl_array_get_properties; spl_handler_ArrayObject.get_debug_info = spl_array_get_debug_info; + spl_handler_ArrayObject.get_gc = spl_array_get_gc; spl_handler_ArrayObject.read_property = spl_array_read_property; spl_handler_ArrayObject.write_property = spl_array_write_property; spl_handler_ArrayObject.get_property_ptr_ptr = spl_array_get_property_ptr_ptr; Index: php5-5.5.9+dfsg/ext/standard/tests/strings/bug72433.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/strings/bug72433.phpt 2016-07-28 08:50:19.843638999 -0400 @@ -0,0 +1,32 @@ +--TEST-- +Bug #72433: Use After Free Vulnerability in PHP's GC algorithm and unserialize +--FILE-- +<?php +// Fill any potential freed spaces until now. +$filler = array(); +for($i = 0; $i < 100; $i++) + $filler[] = ""; +// Create our payload and unserialize it. +$serialized_payload = 'a:3:{i:0;r:1;i:1;r:1;i:2;C:11:"ArrayObject":19:{x:i:0;r:1;;m:a:0:{}}}'; +$free_me = unserialize($serialized_payload); +// We need to increment the reference counter of our ArrayObject s.t. all reference counters of our unserialized array become 0. +$inc_ref_by_one = $free_me[2]; +// The call to gc_collect_cycles will free '$free_me'. +gc_collect_cycles(); +// We now have multiple freed spaces. Fill all of them. +$fill_freed_space_1 = "filler_zval_1"; +$fill_freed_space_2 = "filler_zval_2"; +var_dump($free_me); +?> +--EXPECTF-- +array(3) { + [0]=> + *RECURSION* + [1]=> + *RECURSION* + [2]=> + object(ArrayObject)#%d (1) { + ["storage":"ArrayObject":private]=> + *RECURSION* + } +} ������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-4021.patch������������������������������������������������������������������0000664�0000000�0000000�00000001634�12543257220�013234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From c27f012b7a447e59d4a704688971cbfa7dddaa74 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Wed, 29 Apr 2015 22:04:20 -0700 Subject: [PATCH] Fix bug #69453 - don't try to cut empty string --- ext/phar/tar.c | 2 +- ext/phar/tests/bug69453.phpt | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 ext/phar/tests/bug69453.phpt diff --git a/ext/phar/tar.c b/ext/phar/tar.c index ca8eafc..d6d63e6 100644 --- a/ext/phar/tar.c +++ b/ext/phar/tar.c @@ -425,7 +425,7 @@ bail: entry.filename_len = i; entry.filename = pestrndup(hdr->name, i, myphar->is_persistent); - if (entry.filename[entry.filename_len - 1] == '/') { + if (i > 0 && entry.filename[entry.filename_len - 1] == '/') { /* some tar programs store directories with trailing slash */ entry.filename[entry.filename_len - 1] = '\0'; entry.filename_len--; ����������������������������������������������������������������������������������������������������debian/patches/CVE-2014-3670.patch������������������������������������������������������������������0000664�0000000�0000000�00000002626�12423726137�013253� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From ddb207e7fa2e9adeba021a1303c3781efda5409b Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 28 Sep 2014 16:57:42 -0700 Subject: [PATCH] Fix bug #68113 (Heap corruption in exif_thumbnail()) --- create mode 100755 ext/exif/tests/bug68113.jpg create mode 100644 ext/exif/tests/bug68113.phpt From ddb207e7fa2e9adeba021a1303c3781efda5409b Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 28 Sep 2014 16:57:42 -0700 Subject: [PATCH] Fix bug #68113 (Heap corruption in exif_thumbnail()) --- ext/exif/exif.c | 4 ++-- ext/exif/tests/bug68113.jpg | Bin 0 -> 368 bytes ext/exif/tests/bug68113.phpt | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100755 ext/exif/tests/bug68113.jpg create mode 100644 ext/exif/tests/bug68113.phpt diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 38907b4..637ebf9 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -2426,11 +2426,11 @@ static void* exif_ifd_make_value(image_info_data *info_data, int motorola_intel data_ptr += 8; break; case TAG_FMT_SINGLE: - memmove(data_ptr, &info_data->value.f, byte_count); + memmove(data_ptr, &info_value->f, 4); data_ptr += 4; break; case TAG_FMT_DOUBLE: - memmove(data_ptr, &info_data->value.d, byte_count); + memmove(data_ptr, &info_value->d, 8); data_ptr += 8; break; } ����������������������������������������������������������������������������������������������������������debian/patches/CVE-2017-11144.patch�����������������������������������������������������������������0000664�0000000�0000000�00000010244�13141101607�013307� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 89637c6b41b510c20d262c17483f582f115c66d6 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 19 Jun 2017 23:06:24 -0700 Subject: [PATCH] Fix bug #74651 - check EVP_SealInit as it can return -1 --- ext/openssl/openssl.c | 6 +++--- ext/openssl/tests/74651.pem | 27 +++++++++++++++++++++++++++ ext/openssl/tests/bug74651.phpt | 17 +++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 ext/openssl/tests/74651.pem create mode 100644 ext/openssl/tests/bug74651.phpt Index: php5-5.5.9+dfsg/ext/openssl/openssl.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/openssl/openssl.c 2017-08-04 10:23:13.526856537 -0400 +++ php5-5.5.9+dfsg/ext/openssl/openssl.c 2017-08-04 10:23:22.626856204 -0400 @@ -4382,14 +4382,14 @@ PHP_FUNCTION(openssl_seal) /* allocate one byte extra to make room for \0 */ buf = emalloc(data_len + EVP_CIPHER_CTX_block_size(&ctx)); - if (!EVP_SealInit(&ctx, cipher, eks, eksl, NULL, pkeys, nkeys) || !EVP_SealUpdate(&ctx, buf, &len1, (unsigned char *)data, data_len)) { + if (EVP_SealInit(&ctx, cipher, eks, eksl, NULL, pkeys, nkeys) <= 0 || + !EVP_SealUpdate(&ctx, buf, &len1, (unsigned char *)data, data_len) || + !EVP_SealFinal(&ctx, buf + len1, &len2)) { RETVAL_FALSE; efree(buf); goto clean_exit; } - EVP_SealFinal(&ctx, buf + len1, &len2); - if (len1 + len2 > 0) { zval_dtor(sealdata); buf[len1 + len2] = '\0'; Index: php5-5.5.9+dfsg/ext/openssl/tests/74651.pem =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/openssl/tests/74651.pem 2017-08-04 10:20:34.670862356 -0400 @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEoDCCBAmgAwIBAgIBJzANBgkqhkiG9w0BAQQFADCBkDELMAkGA1UEFhMCUk8x +EDAOBgNVBAgTB1JvbWFuaWExEDAOBgNVBAcTB0NyYWlvdmExDzANBgNVBAoTBlNl +cmdpdTETMBEGA1UECxMKU2VyZ2l1IFNSTDESMBAGA1UEAxMJU2VyZ2l1IENBMSMw +IQYJKoZIhvcNAQkBFhRuX3NlcmdpdUBob3RtYWlsLmNvbTAeFw0wNDA1MTQxMzM0 +NTZaFw0wNTA1MTQxMzM0NTZaMIGaMQswCQYDVQQGEwJSTzEQMA4GA1UECBMHUm9t +YW5pYTEQMA4GA1UEBxMHQ3JhaW92YTETMBEGA1UEChMKU2VyZ2l1IFNSTDETMBEG +A1UECxMKU2VyZ2l1IFNSTDEYMBYGA1UEAxMPU2VyZ2l1IHBlcnNvbmFsMSMwIQYJ +KoZIhvcNAQkBFhRuX3NlcmdpdUBob3RtYWlsLmNvbTCBnzANBgkqhkiG9w0BAQEF +AAOBjQAwgYkCgYEApNj7XXz8T8FcLIWpBniPYom3QcT6T7u0xRPHqtqzj5oboBYp +DJe5d354/y0gJTpiLt8+fTrPgWXnbHm3pOHgXzTcX6Arani0GDU0/xDi4VkCRGcS +YqX2sJpcDzAbmK9UDMt3xf/O1B8AJan3RfO0Bm3ozTEPziLMkmsiYr5b/L4CAwEA +AaOCAfwwggH4MAkGA1UdEwQCMAAwNQYJYIZIAYb4QgENBCgWJkZvciBHcmlkIHVz +ZSBvbmx5OyByZXF1ZXN0IHRhZyB1c2VyVGFnMBEGCWCGSAGG+EIBAQQEAwIF4DA/ +BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vbW9iaWxlLmJsdWUtc29mdHdhcmUucm86 +OTAvY2EvY3JsLnNodG1sMDUGCWCGSAGG+EIBCAQoFiZodHRwOi8vbW9iaWxlLmJs +dWUtc29mdHdhcmUucm86OTAvcHViLzAhBgNVHREEGjAYgRZzZXJnaXVAYmx1ZXNv +ZnR3YXJlLnJvMB0GA1UdDgQWBBSwp//5QRXeIzm93TEPl6CyonTg/DCBpwYDVR0j +BIGfMIGcoYGWpIGTMIGQMQswCQYDVQQGEwJSTzEQMA4GA1UECBMHUm9tYW5pYTEQ +MA4GA1UEBxMHQ3JhaW92YTEPMA0GA1UEChMGU2VyZ2l1MRMwEQYDVQQLEwpTZXJn +aXUgU1JMMRIwEAYDVQQDEwlTZXJnaXUgQ0ExIzAhBgkqhkiG9w0BCQEWFG5fc2Vy +Z2l1QGhvdG1haWwuY29tggEAMAsGA1UdDwQEAwIE8DAjBglghkgBhvhCAQIEFhYU +aHR0cDovLzYyLjIzMS45OC41Mi8wCwYDKgMEBAQ+52I0MA0GCSqGSIb3DQEBBAUA +A4GBAIBIOJ+iiLyQfNJEY+IMefayQea0nmuXYY+F+L1DFjSC7xChytgYoPNnKkhh +3dWPtxbswiqKYUnGi6y3Hi4UhDsOaDW29t2S305hSc2qgjOiNtRYQIVYQ8EHG1k7 +Fl63S7uCOhnVJt+4MnUK1N6/pwgsp+Z2GvEsDG1qCKnvNpf6 +-----END CERTIFICATE----- Index: php5-5.5.9+dfsg/ext/openssl/tests/bug74651.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/openssl/tests/bug74651.phpt 2017-08-04 10:20:34.670862356 -0400 @@ -0,0 +1,17 @@ +--TEST-- +Bug #74651: negative-size-param (-1) in memcpy in zif_openssl_seal() +--SKIPIF-- +<?php +if (!extension_loaded("openssl")) die("skip openssl not loaded"); +?> +--FILE-- +<?php + +$inputstr = file_get_contents(__DIR__ . "/74651.pem"); +$pub_key_id = openssl_get_publickey($inputstr); +var_dump($pub_key_id); +var_dump(openssl_seal($inputstr, $sealed, $ekeys, array($pub_key_id, $pub_key_id), 'AES-128-ECB')); +?> +--EXPECTF-- +resource(%d) of type (OpenSSL key) +bool(false) \ No newline at end of file������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-3478.patch������������������������������������������������������������������0000664�0000000�0000000�00000002525�12355546234�013261� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From e77659a8c87272e5061738a31430d2111482c426 Mon Sep 17 00:00:00 2001 From: Remi Collet <remi@php.net> Date: Tue, 10 Jun 2014 14:02:36 +0200 Subject: [PATCH] Fixed Bug #67410 fileinfo: mconvert incorrect handling of truncated pascal string size Upstream https://github.com/file/file/commit/27a14bc7ba285a0a5ebfdb55e54001aa11932b08 --- ext/fileinfo/libmagic/softmagic.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c index 21fea6b..01e4977 100644 --- a/ext/fileinfo/libmagic/softmagic.c +++ b/ext/fileinfo/libmagic/softmagic.c @@ -881,10 +881,18 @@ mconvert(struct magic_set *ms, struct magic *m, int flip) return 1; } case FILE_PSTRING: { - char *ptr1 = p->s, *ptr2 = ptr1 + file_pstring_length_size(m); + size_t sz = file_pstring_length_size(m); + char *ptr1 = p->s, *ptr2 = ptr1 + sz; size_t len = file_pstring_get_length(m, ptr1); - if (len >= sizeof(p->s)) - len = sizeof(p->s) - 1; + if (len >= sizeof(p->s)) { + /* + * The size of the pascal string length (sz) + * is 1, 2, or 4. We need at least 1 byte for NUL + * termination, but we've already truncated the + * string by p->s, so we need to deduct sz. + */ + len = sizeof(p->s) - sz; + } while (len--) *ptr1++ = *ptr2++; *ptr1 = '\0'; -- 1.9.2 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-6291-regression.patch�������������������������������������������������������0000664�0000000�0000000�00000004650�13237133621�015426� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From c6bd054b86c52948505be7409ad8d6488db062f6 Mon Sep 17 00:00:00 2001 From: Kalle Sommer Nielsen <kalle@php.net> Date: Wed, 3 Aug 2016 17:33:18 +0200 Subject: [PATCH] Fixed bug #72682 (exif_read_data() fails to read all data for some images) This is fixed by adding DJI signatures to the MAKERNOTE and its supported tags, list is credits to ExifTool documentation. --- NEWS | 2 ++ ext/exif/exif.c | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) #diff --git a/NEWS b/NEWS #index 71cc1fb..e7e5307 100644 #--- a/NEWS #+++ b/NEWS #@@ -6,6 +6,8 @@ PHP NEWS # . Changed the way that EXIF processes MAKERNOTE data to not stop parsing # in case of an unknown signature. (Kalle, Remi) # . Fixed bug #72735 (Samsung picture thumb not read (zero size)). (Kalle) #+ . Fixed bug #72682 (exif_read_data() fails to read all data for some #+ images). (Kalle) # . Fixed Redhat bug #1362571 (PHP not returning full results for # exif_read_data function). (Kalle) # Index: php5-5.5.9+dfsg/ext/exif/exif.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/exif/exif.c 2018-02-08 15:46:52.170404693 -0500 +++ php5-5.5.9+dfsg/ext/exif/exif.c 2018-02-08 15:47:49.854418733 -0500 @@ -971,6 +971,20 @@ static tag_info_array tag_table_VND_OLYM TAG_TABLE_END }; +static tag_info_array tag_table_VND_DJI = { + { 0x0001, "Make"}, + { 0x0003, "SpeedX"}, + { 0x0004, "SpeedY"}, + { 0x0005, "SpeedZ"}, + { 0x0006, "Pitch"}, + { 0x0007, "Yaw"}, + { 0x0008, "Roll"}, + { 0x0009, "CameraPitch"}, + { 0x000a, "CameraYaw"}, + { 0x000b, "CameraRoll"}, + TAG_TABLE_END +}; + typedef enum mn_byte_order_t { MN_ORDER_INTEL = 0, MN_ORDER_MOTOROLA = 1, @@ -1002,6 +1016,7 @@ static const maker_note_type maker_note_ { tag_table_VND_NIKON, "NIKON", NULL, "Nikon\x00\x01\x00", 8, 8, MN_ORDER_NORMAL, MN_OFFSET_NORMAL}, { tag_table_VND_NIKON_990, "NIKON", NULL, NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL}, { tag_table_VND_OLYMPUS, "OLYMPUS OPTICAL CO.,LTD", NULL, "OLYMP\x00\x01\x00", 8, 8, MN_ORDER_NORMAL, MN_OFFSET_NORMAL}, + { tag_table_VND_DJI, "DJI", NULL, NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL} }; /* }}} */ ����������������������������������������������������������������������������������������debian/patches/CVE-2016-7413.patch������������������������������������������������������������������0000664�0000000�0000000�00000003414�12773246623�013255� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From b88393f08a558eec14964a55d3c680fe67407712 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 5 Sep 2016 23:42:31 -0700 Subject: [PATCH] Fix bug #72860: wddx_deserialize use-after-free --- ext/wddx/tests/bug72860.phpt | 27 +++++++++++++++++++++++++++ ext/wddx/wddx.c | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 ext/wddx/tests/bug72860.phpt Index: php5-5.5.9+dfsg/ext/wddx/tests/bug72860.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug72860.phpt 2016-09-29 13:21:20.287916987 -0400 @@ -0,0 +1,27 @@ +--TEST-- +Bug #72860: wddx_deserialize use-after-free +--SKIPIF-- +<?php +if (!extension_loaded('wddx')) { + die('skip. wddx not available'); +} +?> +--FILE-- +<?php + +$xml=<<<XML +<?xml version='1.0'?> +<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> +<wddxPacket version='1.0'> + <recordset fieldNames='F'> + <field name='F'> + </recordset> +</wddxPacket> +XML; + +var_dump(wddx_deserialize($xml)); +?> +DONE +--EXPECT-- +NULL +DONE \ No newline at end of file Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2016-09-29 13:21:20.291917032 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2016-09-29 13:21:20.291917032 -0400 @@ -232,7 +232,8 @@ if (stack->elements) { for (i = 0; i < stack->top; i++) { - if (((st_entry *)stack->elements[i])->data) { + if (((st_entry *)stack->elements[i])->data + && ((st_entry *)stack->elements[i])->type != ST_FIELD) { zval_ptr_dtor(&((st_entry *)stack->elements[i])->data); } if (((st_entry *)stack->elements[i])->varname) { ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2019-9641.patch������������������������������������������������������������������0000664�0000000�0000000�00000005370�13444735606�013270� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 5e824a88d073d282c4f358f186cb87ddc284f83d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Fri, 1 Mar 2019 23:25:45 -0800 Subject: [PATCH] Fix integer overflows on 32-bits --- ext/exif/exif.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ext/exif/exif.c b/ext/exif/exif.c index b09af831..8f6a3784 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -3597,10 +3597,10 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse tag_table_type tag_table = exif_get_tag_table(section_index); if (ImageInfo->ifd_nesting_level > MAX_IFD_NESTING_LEVEL) { - return FALSE; - } + return FALSE; + } - if (ImageInfo->FileSize >= dir_offset+2) { + if (ImageInfo->FileSize >= 2 && ImageInfo->FileSize - 2 >= dir_offset) { sn = exif_file_sections_add(ImageInfo, M_PSEUDO, 2, NULL); #ifdef EXIF_DEBUG exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Read from TIFF: filesize(x%04X), IFD dir(x%04X + x%04X)", ImageInfo->FileSize, dir_offset, 2); @@ -3608,8 +3608,8 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse php_stream_seek(ImageInfo->infile, dir_offset, SEEK_SET); /* we do not know the order of sections */ php_stream_read(ImageInfo->infile, (char*)ImageInfo->file.list[sn].data, 2); num_entries = php_ifd_get16u(ImageInfo->file.list[sn].data, ImageInfo->motorola_intel); - dir_size = 2/*num dir entries*/ +12/*length of entry*/*num_entries +4/* offset to next ifd (points to thumbnail or NULL)*/; - if (ImageInfo->FileSize >= dir_offset+dir_size) { + dir_size = 2/*num dir entries*/ +12/*length of entry*/*(size_t)num_entries +4/* offset to next ifd (points to thumbnail or NULL)*/; + if (ImageInfo->FileSize >= dir_size && ImageInfo->FileSize - dir_size >= dir_offset) { #ifdef EXIF_DEBUG exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Read from TIFF: filesize(x%04X), IFD dir(x%04X + x%04X), IFD entries(%d)", ImageInfo->FileSize, dir_offset+2, dir_size-2, num_entries); #endif @@ -3692,9 +3692,9 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse } } } - if (ImageInfo->FileSize >= dir_offset + ImageInfo->file.list[sn].size) { + if (ImageInfo->FileSize >= ImageInfo->file.list[sn].size && ImageInfo->FileSize - ImageInfo->file.list[sn].size >= dir_offset) { if (ifd_size > dir_size) { - if (dir_offset + ifd_size > ImageInfo->FileSize) { + if (ImageInfo->FileSize < ifd_size || dir_offset > ImageInfo->FileSize - ifd_size) { exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_WARNING, "Error in TIFF: filesize(x%04X) less than size of IFD(x%04X + x%04X)", ImageInfo->FileSize, dir_offset, ifd_size); return FALSE; } -- 2.20.1 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-3142.patch������������������������������������������������������������������0000664�0000000�0000000�00000002225�12704222051�013226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From a6fdc5bb27b20d889de0cd29318b3968aabb57bd Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 21 Feb 2016 16:51:05 -0800 Subject: [PATCH] Fix bug #71498: Out-of-Bound Read in phar_parse_zipfile() --- ext/phar/tests/bug71488.phpt | 1 + ext/phar/tests/bug71498.phpt | 17 +++++++++++++++++ ext/phar/tests/bug71498.zip | Bin 0 -> 65677 bytes ext/phar/zip.c | 6 +++--- 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 ext/phar/tests/bug71498.phpt create mode 100644 ext/phar/tests/bug71498.zip diff --git a/ext/phar/zip.c b/ext/phar/zip.c index e4883d3..7f294c2 100644 --- a/ext/phar/zip.c +++ b/ext/phar/zip.c @@ -199,7 +199,7 @@ int phar_parse_zipfile(php_stream *fp, char *fname, int fname_len, char *alias, } while ((p=(char *) memchr(p + 1, 'P', (size_t) (size - (p + 1 - buf)))) != NULL) { - if (!memcmp(p + 1, "K\5\6", 3)) { + if ((p - buf) + sizeof(locator) <= size && !memcmp(p + 1, "K\5\6", 3)) { memcpy((void *)&locator, (void *) p, sizeof(locator)); if (PHAR_GET_16(locator.centraldisk) != 0 || PHAR_GET_16(locator.disknumber) != 0) { /* split archives not handled */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-6289.patch������������������������������������������������������������������0000664�0000000�0000000�00000001357�12746377650�013300� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 0218acb7e756a469099c4ccfb22bce6c2bd1ef87 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 12 Jul 2016 21:48:00 -0700 Subject: [PATCH] Fix for bug #72513 --- TSRM/tsrm_virtual_cwd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c index ba92711..6c22ee8 100644 --- a/TSRM/tsrm_virtual_cwd.c +++ b/TSRM/tsrm_virtual_cwd.c @@ -1159,7 +1159,7 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func int add_slash; void *tmp; - if (path_length == 0 || path_length >= MAXPATHLEN-1) { + if (path_length <= 0 || path_length >= MAXPATHLEN-1) { #ifdef TSRM_WIN32 # if _MSC_VER < 1300 errno = EINVAL; -- 2.1.4 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7411.patch������������������������������������������������������������������0000664�0000000�0000000�00000004647�12773246420�013257� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 6a7cc8ff85827fa9ac715b3a83c2d9147f33cd43 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 11 Sep 2016 21:19:29 -0700 Subject: [PATCH] Fix bug #73052 - Memory Corruption in During Deserialized-object Destruction --- Zend/zend_objects_API.c | 6 +-- ext/standard/tests/serialize/bug73052.phpt | 18 +++++++++ ext/standard/var_unserializer.c | 61 +++++++++++++++--------------- ext/standard/var_unserializer.re | 1 + 4 files changed, 53 insertions(+), 33 deletions(-) create mode 100644 ext/standard/tests/serialize/bug73052.phpt Index: php5-5.5.9+dfsg/ext/standard/tests/serialize/bug73052.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/serialize/bug73052.phpt 2016-09-29 13:19:07.378426881 -0400 @@ -0,0 +1,18 @@ +--TEST-- +Bug #73052: Memory Corruption in During Deserialized-object Destruction +--FILE-- +<?php + +class obj { + var $ryat; + public function __destruct() { + $this->ryat = null; + } +} + +$poc = 'O:3:"obj":1:{'; +var_dump(unserialize($poc)); +?> +--EXPECTF-- +Notice: unserialize(): Error at offset 13 of 13 bytes in %sbug73052.php on line %d +bool(false) Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.c 2016-09-29 13:19:07.382426926 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.c 2016-09-29 13:19:07.378426881 -0400 @@ -417,6 +417,7 @@ /* We've got partially constructed object on our hands here. Wipe it */ if(Z_TYPE_PP(rval) == IS_OBJECT) { zend_hash_clean(Z_OBJPROP_PP(rval)); + zend_object_store_ctor_failed(*rval TSRMLS_CC); } ZVAL_NULL(*rval); return 0; Index: php5-5.5.9+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/var_unserializer.re 2016-09-29 13:19:07.382426926 -0400 +++ php5-5.5.9+dfsg/ext/standard/var_unserializer.re 2016-09-29 13:19:07.382426926 -0400 @@ -423,6 +423,7 @@ /* We've got partially constructed object on our hands here. Wipe it. */ if(Z_TYPE_PP(rval) == IS_OBJECT) { zend_hash_clean(Z_OBJPROP_PP(rval)); + zend_object_store_ctor_failed(*rval TSRMLS_CC); } ZVAL_NULL(*rval); return 0; �����������������������������������������������������������������������������������������debian/patches/fix_exif_tests.patch�����������������������������������������������������������������0000664�0000000�0000000�00000003252�12746433602�014674� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 1364742be9757e594fd1b203d45805106ecd31c7 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 18 Jul 2016 23:30:51 -0700 Subject: [PATCH] Fix tests --- ext/exif/tests/bug54002.phpt | 6 +----- ext/exif/tests/bug62523_2.phpt | 6 ++++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/ext/exif/tests/bug54002.phpt b/ext/exif/tests/bug54002.phpt index c51fa58..8f85339 100644 --- a/ext/exif/tests/bug54002.phpt +++ b/ext/exif/tests/bug54002.phpt @@ -13,8 +13,4 @@ exif_read_data(__DIR__ . '/bug54002_2.jpeg'); --EXPECTF-- Warning: exif_read_data(bug54002_1.jpeg): Process tag(x0205=UndefinedTa): Illegal byte_count in %sbug54002.php on line %d -Warning: exif_read_data(bug54002_1.jpeg): Process tag(xA000=FlashPixVer): Illegal pointer offset(%s) in %sbug54002.php on line %d - -Warning: exif_read_data(bug54002_2.jpeg): Process tag(x0205=UndefinedTa): Illegal byte_count in %sbug54002.php on line %d - -Warning: exif_read_data(bug54002_2.jpeg): Process tag(xA000=FlashPixVer): Illegal pointer offset(%s) in %sbug54002.php on line %d +Warning: exif_read_data(bug54002_2.jpeg): Process tag(x0205=UndefinedTa): Illegal byte_count in %sbug54002.php on line %d \ No newline at end of file diff --git a/ext/exif/tests/bug62523_2.phpt b/ext/exif/tests/bug62523_2.phpt index ddc8ae8..c533d42 100644 --- a/ext/exif/tests/bug62523_2.phpt +++ b/ext/exif/tests/bug62523_2.phpt @@ -10,7 +10,9 @@ echo "Test\n"; var_dump(count(exif_read_data(__DIR__."/bug62523_2.jpg"))); ?> Done ---EXPECT-- +--EXPECTF-- Test -int(76) + +Warning: exif_read_data(bug62523_2.jpg): IFD data bad offset: 0xADB23672 length 0x0D94 in %s/bug62523_2.php on line %d +int(30) Done -- 2.1.4 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/php-5.3.3-macropen.patch�������������������������������������������������������������0000664�0000000�0000000�00000002762�12300436054�014701� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- php5.orig/ext/dba/dba.c +++ php5/ext/dba/dba.c @@ -922,7 +922,7 @@ static void php_dba_open(INTERNAL_FUNCTI } } - if (error || hptr->open(info, &error TSRMLS_CC) != SUCCESS) { + if (error || (hptr->open)(info, &error TSRMLS_CC) != SUCCESS) { dba_close(info TSRMLS_CC); php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Driver initialization failed for handler: %s%s%s", hptr->name, error?": ":"", error?error:""); FREENOW; --- php5.orig/ext/dba/dba_db3.c +++ php5/ext/dba/dba_db3.c @@ -91,7 +91,7 @@ DBA_OPEN_FUNC(db3) if ((err=db_create(&dbp, NULL, 0)) == 0) { dbp->set_errcall(dbp, php_dba_db3_errcall_fcn); - if ((err=dbp->open(dbp, info->path, NULL, type, gmode, filemode)) == 0) { + if ((err=(dbp->open)(dbp, info->path, NULL, type, gmode, filemode)) == 0) { dba_db3_data *data; data = pemalloc(sizeof(*data), info->flags&DBA_PERSISTENT); --- php5.orig/ext/dba/dba_db4.c +++ php5/ext/dba/dba_db4.c @@ -126,9 +126,9 @@ DBA_OPEN_FUNC(db4) dbp->set_errcall(dbp, php_dba_db4_errcall_fcn); if ( #if (DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)) - (err=dbp->open(dbp, 0, info->path, NULL, type, gmode, filemode)) == 0) { + (err=(dbp->open)(dbp, 0, info->path, NULL, type, gmode, filemode)) == 0) { #else - (err=dbp->open(dbp, info->path, NULL, type, gmode, filemode)) == 0) { + (err=(dbp->open)(dbp, info->path, NULL, type, gmode, filemode)) == 0) { #endif dba_db4_data *data; ��������������debian/patches/CVE-2018-10546-1.patch���������������������������������������������������������������0000664�0000000�0000000�00000003443�13275032416�013467� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 06d309fd7a917575d65c7a6f4f57b0e6bb0f9711 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 22 Apr 2018 21:26:06 -0700 Subject: [PATCH] Fix bug #76249 - fail on invalid sequences --- ext/iconv/iconv.c | 3 +++ ext/iconv/tests/bug76249.phpt | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 ext/iconv/tests/bug76249.phpt Index: php5-5.5.9+dfsg/ext/iconv/iconv.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/iconv/iconv.c 2018-05-10 08:03:24.675375338 -0400 +++ php5-5.5.9+dfsg/ext/iconv/iconv.c 2018-05-10 08:03:24.671375338 -0400 @@ -2577,6 +2577,9 @@ static int php_iconv_stream_filter_appen tcnt = 0; break; } + } else { + php_error_docref(NULL, E_WARNING, "iconv stream filter (\"%s\"=>\"%s\"): invalid multibyte sequence", self->from_charset, self->to_charset); + goto out_failure; } break; Index: php5-5.5.9+dfsg/ext/iconv/tests/bug76249.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/iconv/tests/bug76249.phpt 2018-05-10 08:03:24.671375338 -0400 @@ -0,0 +1,16 @@ +--TEST-- +Bug #76249 (stream filter convert.iconv leads to infinite loop on invalid sequence) +--SKIPIF-- +<?php extension_loaded('iconv') or die('skip iconv extension is not available'); ?> +--FILE-- +<?php +$fh = fopen('php://memory', 'rw'); +fwrite($fh, "abc"); +rewind($fh); +stream_filter_append($fh, 'convert.iconv.ucs-2/utf8//IGNORE', STREAM_FILTER_READ, []); +echo stream_get_contents($fh); +?> +DONE +--EXPECTF-- +Warning: stream_get_contents(): iconv stream filter ("ucs-2"=>"utf8//IGNORE"): invalid multibyte sequence in %sbug76249.php on line %d +慢DONE �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/bug71704.patch�����������������������������������������������������������������������0000664�0000000�0000000�00000001625�12704222137�013024� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 9c19a08b9daed6bae3071dd25742f59a59618823 Mon Sep 17 00:00:00 2001 From: Anatol Belski <ab@php.net> Date: Wed, 16 Mar 2016 09:48:40 +0100 Subject: [PATCH] Fixed bug #71704 php_snmp_error() Format String Vulnerability Conflicts: ext/snmp/snmp.c --- ext/snmp/snmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index f7c99c1..6c1da4c 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -533,7 +533,7 @@ static void php_snmp_error(zval *object, const char *docref TSRMLS_DC, int type, } if (object && (snmp_object->exceptions_enabled & type)) { - zend_throw_exception_ex(php_snmp_exception_ce, type TSRMLS_CC, snmp_object->snmp_errstr); + zend_throw_exception_ex(php_snmp_exception_ce, type TSRMLS_CC, "%s", snmp_object->snmp_errstr); } else { va_start(args, format); php_verror(docref, "", E_WARNING, format, args TSRMLS_CC); -- 2.1.4 �����������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-4602.patch������������������������������������������������������������������0000664�0000000�0000000�00000001651�12543257274�013251� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From fb83c76deec58f1fab17c350f04c9f042e5977d1 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 22 Mar 2015 18:17:47 -0700 Subject: [PATCH] Check that the type is correct --- ext/standard/incomplete_class.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/standard/incomplete_class.c b/ext/standard/incomplete_class.c index 1816ac4..30c82e6 100644 --- a/ext/standard/incomplete_class.c +++ b/ext/standard/incomplete_class.c @@ -144,7 +144,7 @@ PHPAPI char *php_lookup_class_name(zval *object, zend_uint *nlen) object_properties = Z_OBJPROP_P(object); - if (zend_hash_find(object_properties, MAGIC_MEMBER, sizeof(MAGIC_MEMBER), (void **) &val) == SUCCESS) { + if (zend_hash_find(object_properties, MAGIC_MEMBER, sizeof(MAGIC_MEMBER), (void **) &val) == SUCCESS && Z_TYPE_PP(val) == IS_STRING) { retval = estrndup(Z_STRVAL_PP(val), Z_STRLEN_PP(val)); if (nlen) { -- 2.1.4 ���������������������������������������������������������������������������������������debian/patches/CVE-2019-9023-4.patch����������������������������������������������������������������0000664�0000000�0000000�00000011703�13437472476�013425� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 9d6c59eeea88a3e9d7039cb4fed5126ef704593a Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 6 Jan 2019 23:31:15 -0800 Subject: [PATCH] Fix bug #77418 - Heap overflow in utf32be_mbc_to_code --- NEWS | 7 ++++--- ext/mbstring/oniguruma/enc/utf16_be.c | 4 +++- ext/mbstring/oniguruma/enc/utf16_le.c | 3 ++- ext/mbstring/oniguruma/enc/utf32_be.c | 1 + ext/mbstring/oniguruma/enc/utf32_le.c | 1 + ext/mbstring/tests/bug77418.phpt | 14 ++++++++++++++ 6 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 ext/mbstring/tests/bug77418.phpt #diff --git a/NEWS b/NEWS #index 245aecc22883..53b26b7c5cf0 100644 #--- a/NEWS #+++ b/NEWS #@@ -3,19 +3,20 @@ PHP NEWS # ?? ??? 2018, PHP 5.6.40 # # - GD: #- . Fixed bug #77269 (efree() on uninitialized Heap data in imagescale leads to #+ . Fixed bug #77269 (efree() on uninitialized Heap data in imagescale leads to # use-after-free). (cmb) # . Fixed bug #77270 (imagecolormatch Out Of Bounds Write on Heap). (cmb) # # - Mbstring: # . Fixed bug #77370 (Buffer overflow on mb regex functions - fetch_token). (Stas) #- . Fixed bug #77371 (heap buffer overflow in mb regex functions #+ . Fixed bug #77371 (heap buffer overflow in mb regex functions # - compile_string_node). (Stas) # . Fixed bug #77381 (heap buffer overflow in multibyte match_at). (Stas) #- . Fixed bug #77382 (heap buffer overflow due to incorrect length in #+ . Fixed bug #77382 (heap buffer overflow due to incorrect length in # expand_case_fold_string). (Stas) # . Fixed bug #77385 (buffer overflow in fetch_token). (Stas) # . Fixed bug #77394 (Buffer overflow in multibyte case folding - unicode). (Stas) #+ . Fixed bug #77418 (Heap overflow in utf32be_mbc_to_code). (Stas) # # - Phar: # . Fixed bug #77247 (heap buffer overflow in phar_detect_phar_fname_ext). (Stas) diff --git a/ext/mbstring/oniguruma/enc/utf16_be.c b/ext/mbstring/oniguruma/enc/utf16_be.c index 1e909ebbf293..9e2f73b0735e 100644 --- a/ext/mbstring/oniguruma/enc/utf16_be.c +++ b/ext/mbstring/oniguruma/enc/utf16_be.c @@ -75,16 +75,18 @@ utf16be_is_mbc_newline(const UChar* p, const UChar* end) } static OnigCodePoint -utf16be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) +utf16be_mbc_to_code(const UChar* p, const UChar* end) { OnigCodePoint code; if (UTF16_IS_SURROGATE_FIRST(*p)) { + if (end - p < 4) return 0; code = ((((p[0] - 0xd8) << 2) + ((p[1] & 0xc0) >> 6) + 1) << 16) + ((((p[1] & 0x3f) << 2) + (p[2] - 0xdc)) << 8) + p[3]; } else { + if (end - p < 2) return 0; code = p[0] * 256 + p[1]; } return code; diff --git a/ext/mbstring/oniguruma/enc/utf16_le.c b/ext/mbstring/oniguruma/enc/utf16_le.c index 5cc07591173a..580f8dffa2f4 100644 --- a/ext/mbstring/oniguruma/enc/utf16_le.c +++ b/ext/mbstring/oniguruma/enc/utf16_le.c @@ -81,13 +81,14 @@ utf16le_is_mbc_newline(const UChar* p, const UChar* end) } static OnigCodePoint -utf16le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) +utf16le_mbc_to_code(const UChar* p, const UChar* end) { OnigCodePoint code; UChar c0 = *p; UChar c1 = *(p+1); if (UTF16_IS_SURROGATE_FIRST(c1)) { + if (end - p < 4) return 0; code = ((((c1 - 0xd8) << 2) + ((c0 & 0xc0) >> 6) + 1) << 16) + ((((c0 & 0x3f) << 2) + (p[3] - 0xdc)) << 8) + p[2]; diff --git a/ext/mbstring/oniguruma/enc/utf32_be.c b/ext/mbstring/oniguruma/enc/utf32_be.c index b4f822607c89..5295f26b1e59 100644 --- a/ext/mbstring/oniguruma/enc/utf32_be.c +++ b/ext/mbstring/oniguruma/enc/utf32_be.c @@ -60,6 +60,7 @@ utf32be_is_mbc_newline(const UChar* p, const UChar* end) static OnigCodePoint utf32be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { + if (end - p < 4) return 0; return (OnigCodePoint )(((p[0] * 256 + p[1]) * 256 + p[2]) * 256 + p[3]); } diff --git a/ext/mbstring/oniguruma/enc/utf32_le.c b/ext/mbstring/oniguruma/enc/utf32_le.c index 8f413bfc74e1..a78c4d0abcc7 100644 --- a/ext/mbstring/oniguruma/enc/utf32_le.c +++ b/ext/mbstring/oniguruma/enc/utf32_le.c @@ -60,6 +60,7 @@ utf32le_is_mbc_newline(const UChar* p, const UChar* end) static OnigCodePoint utf32le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { + if (end - p < 4) return 0; return (OnigCodePoint )(((p[3] * 256 + p[2]) * 256 + p[1]) * 256 + p[0]); } diff --git a/ext/mbstring/tests/bug77418.phpt b/ext/mbstring/tests/bug77418.phpt new file mode 100644 index 000000000000..b4acc45c2117 --- /dev/null +++ b/ext/mbstring/tests/bug77418.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #77371 (Heap overflow in utf32be_mbc_to_code) +--SKIPIF-- +<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?> +--FILE-- +<?php +mb_regex_encoding("UTF-32"); +var_dump(mb_split("\x00\x00\x00\x5c\x00\x00\x00B","000000000000000000000000000000")); +?> +--EXPECT-- +array(1) { + [0]=> + string(30) "000000000000000000000000000000" +} �������������������������������������������������������������debian/patches/CVE-2015-0232.patch������������������������������������������������������������������0000664�0000000�0000000�00000002173�12467421355�013242� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 2fc178cf448d8e1b95d1314e47eeef610729e0df Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 11 Jan 2015 00:51:05 -0800 Subject: [PATCH] Fix bug #68799: Free called on unitialized pointer --- ext/exif/exif.c | 2 +- ext/exif/tests/bug68799.jpg | Bin 0 -> 735 bytes ext/exif/tests/bug68799.phpt | 63 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 ext/exif/tests/bug68799.jpg create mode 100644 ext/exif/tests/bug68799.phpt diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 637ebf9..7f95ff4 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -2702,7 +2702,7 @@ static int exif_process_user_comment(image_info_type *ImageInfo, char **pszInfoP static int exif_process_unicode(image_info_type *ImageInfo, xp_field_type *xp_field, int tag, char *szValuePtr, int ByteCount TSRMLS_DC) { xp_field->tag = tag; - + xp_field->value = NULL; /* XXX this will fail again if encoding_converter returns on error something different than SIZE_MAX */ if (zend_multibyte_encoding_converter( (unsigned char**)&xp_field->value, �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-5773.patch������������������������������������������������������������������0000664�0000000�0000000�00000005443�12746377630�013273� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From f6aef68089221c5ea047d4a74224ee3deead99a6 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 20 Jun 2016 21:35:22 -0700 Subject: [PATCH] Fix bug #72434: ZipArchive class Use After Free Vulnerability in PHP's GC algorithm and unserialize --- ext/standard/tests/strings/bug72434.phpt | 33 ++++++++++++++++++++++++++++++++ ext/zip/php_zip.c | 9 +++++++++ 2 files changed, 42 insertions(+) create mode 100644 ext/standard/tests/strings/bug72434.phpt diff --git a/ext/standard/tests/strings/bug72434.phpt b/ext/standard/tests/strings/bug72434.phpt new file mode 100644 index 0000000..1408b8f --- /dev/null +++ b/ext/standard/tests/strings/bug72434.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #72434: ZipArchive class Use After Free Vulnerability in PHP's GC algorithm and unserialize +--SKIPIF-- +<?php +if(!class_exists('zip')) die('ZipArchive'); +?> +--FILE-- +<?php +// The following array will be serialized and this representation will be freed later on. +$free_me = array(new StdClass()); +// Create our payload and unserialize it. +$serialized_payload = 'a:3:{i:1;N;i:2;O:10:"ZipArchive":1:{s:8:"filename";'.serialize($free_me).'}i:1;R:4;}'; +$unserialized_payload = unserialize($serialized_payload); +gc_collect_cycles(); +// The reference counter for $free_me is at -1 for PHP 7 right now. +// Increment the reference counter by 1 -> rc is 0 +$a = $unserialized_payload[1]; +// Increment the reference counter by 1 again -> rc is 1 +$b = $a; +// Trigger free of $free_me (referenced by $m[1]). +unset($b); +$fill_freed_space_1 = "filler_zval_1"; +$fill_freed_space_2 = "filler_zval_2"; +$fill_freed_space_3 = "filler_zval_3"; +$fill_freed_space_4 = "filler_zval_4"; +debug_zval_dump($unserialized_payload[1]); +?> +--EXPECTF-- +array(1) refcount(1){ + [0]=> + object(stdClass)#%d (0) refcount(3){ + } +} diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index 99c293c..57d060f 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1015,6 +1015,14 @@ static int php_zip_has_property(zval *object, zval *member, int type, const zend } /* }}} */ +static HashTable *php_zip_get_gc(zval *object, zval ***gc_data, int *gc_data_count TSRMLS_DC) /* {{{ */ +{ + *gc_data = NULL; + *gc_data_count = 0; + return zend_std_get_properties(object TSRMLS_CC); +} +/* }}} */ + static HashTable *php_zip_get_properties(zval *object TSRMLS_DC)/* {{{ */ { ze_zip_object *obj; @@ -2777,6 +2785,7 @@ static PHP_MINIT_FUNCTION(zip) zip_object_handlers.clone_obj = NULL; zip_object_handlers.get_property_ptr_ptr = php_zip_get_property_ptr_ptr; + zip_object_handlers.get_gc = php_zip_get_gc; zip_object_handlers.get_properties = php_zip_get_properties; zip_object_handlers.read_property = php_zip_read_property; zip_object_handlers.has_property = php_zip_has_property; -- 2.1.4 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2019-9675.patch������������������������������������������������������������������0000664�0000000�0000000�00000005516�13457356346�013305� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 11dda9a4fb4106bb2f35a717ca0bfb379fa7d1ad Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 3 Mar 2019 22:33:38 -0800 Subject: [PATCH] Fix bug #77586 - phar_tar_writeheaders_int() buffer overflow (cherry picked from commit e0f5d62bd6690169998474b62f92a8c5ddf0e699) --- ext/phar/tar.c | 7 ++++++- ext/phar/tests/bug77586.phpt | 21 +++++++++++++++++++ ...-dne29hvpNWXiVbepwIf8-NRHWM9LITLo3nXZnKVNC | 1 + 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 ext/phar/tests/bug77586.phpt create mode 100644 ext/phar/tests/bug77586/files/link-nktarAMLdJBv7BGYnpzg-ZDycSpWN3Ne3kacltOSE-EqfhStJ1EoBpGuoua6VE-dne29hvpNWXiVbepwIf8-NRHWM9LITLo3nXZnKVNC diff --git a/ext/phar/tar.c b/ext/phar/tar.c index 46957e30..c41927e5 100644 --- a/ext/phar/tar.c +++ b/ext/phar/tar.c @@ -753,7 +753,12 @@ static int phar_tar_writeheaders(void *pDest, void *argument TSRMLS_DC) /* {{{ * header.typeflag = entry->tar_type; if (entry->link) { - strncpy(header.linkname, entry->link, strlen(entry->link)); + if (strlcpy(header.linkname, entry->link, sizeof(header.linkname)) >= sizeof(header.linkname)) { + if (fp->error) { + spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, link \"%s\" is too long for format", entry->phar->fname, entry->link); + } + return ZEND_HASH_APPLY_STOP; + } } strncpy(header.magic, "ustar", sizeof("ustar")-1); diff --git a/ext/phar/tests/bug77586.phpt b/ext/phar/tests/bug77586.phpt new file mode 100644 index 00000000..039cc169 --- /dev/null +++ b/ext/phar/tests/bug77586.phpt @@ -0,0 +1,21 @@ +--TEST-- +Bug #77586 Symbolic link names in tar-formatted phar must be less than 100 bytes. +--SKIPIF-- +<?php if (!extension_loaded("phar") || true /* blocked by bug 65332 */) die("skip"); ?> +--FILE-- +<?php +$dir = __DIR__."/bug77586"; +$phar = new PharData($dir . "/bug77586.tar"); +$phar->buildFromDirectory($dir . "/files"); +?> +--CLEAN-- +<?php +$dir = __DIR__."/bug77586"; +unlink($dir . "/bug77586.tar"); +?> +--EXPECTF-- +Fatal error: Uncaught PharException: tar-based phar "%s/bug77586.tar" cannot be created, link "%s" is too long for format %s +Stack trace: +#0 %s/bug77586.php(%d): PharData->buildFromDirectory('%s') +#1 {main} + thrown in %s/bug77586.php %s on line %d diff --git a/ext/phar/tests/bug77586/files/link-nktarAMLdJBv7BGYnpzg-ZDycSpWN3Ne3kacltOSE-EqfhStJ1EoBpGuoua6VE-dne29hvpNWXiVbepwIf8-NRHWM9LITLo3nXZnKVNC b/ext/phar/tests/bug77586/files/link-nktarAMLdJBv7BGYnpzg-ZDycSpWN3Ne3kacltOSE-EqfhStJ1EoBpGuoua6VE-dne29hvpNWXiVbepwIf8-NRHWM9LITLo3nXZnKVNC new file mode 100644 index 00000000..1de56593 --- /dev/null +++ b/ext/phar/tests/bug77586/files/link-nktarAMLdJBv7BGYnpzg-ZDycSpWN3Ne3kacltOSE-EqfhStJ1EoBpGuoua6VE-dne29hvpNWXiVbepwIf8-NRHWM9LITLo3nXZnKVNC @@ -0,0 +1 @@ +target \ No newline at end of file -- 2.20.1 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/php-fpm-sysconfdir.patch�������������������������������������������������������������0000664�0000000�0000000�00000000613�12300436054�015365� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- php5.orig/sapi/fpm/fpm/fpm_conf.c +++ php5/sapi/fpm/fpm/fpm_conf.c @@ -1638,7 +1638,7 @@ int fpm_conf_init_main(int test_conf, in char *tmp; if (fpm_globals.prefix == NULL) { - spprintf(&tmp, 0, "%s/php-fpm.conf", PHP_SYSCONFDIR); + spprintf(&tmp, 0, "%s/php5/fpm/php-fpm.conf", PHP_SYSCONFDIR); } else { spprintf(&tmp, 0, "%s/etc/php-fpm.conf", fpm_globals.prefix); } ���������������������������������������������������������������������������������������������������������������������debian/patches/bug69441.patch�����������������������������������������������������������������������0000664�0000000�0000000�00000002676�12514151035�013035� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From f59b67ae50064560d7bfcdb0d6a8ab284179053c Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 14 Apr 2015 00:03:50 -0700 Subject: [PATCH] Fix bug #69441 (Buffer Overflow when parsing tar/zip/phar in phar_set_inode) --- ext/phar/phar_internal.h | 9 ++++++--- ext/phar/tests/bug69441.phar | Bin 0 -> 5780 bytes ext/phar/tests/bug69441.phpt | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 ext/phar/tests/bug69441.phar create mode 100644 ext/phar/tests/bug69441.phpt Index: php5-5.5.12+dfsg/ext/phar/phar_internal.h =================================================================== --- php5-5.5.12+dfsg.orig/ext/phar/phar_internal.h 2015-04-17 05:24:32.760202477 -0400 +++ php5-5.5.12+dfsg/ext/phar/phar_internal.h 2015-04-17 05:24:32.760202477 -0400 @@ -559,10 +559,13 @@ { char tmp[MAXPATHLEN]; int tmp_len; + size_t len; - tmp_len = entry->filename_len + entry->phar->fname_len; - memcpy(tmp, entry->phar->fname, entry->phar->fname_len); - memcpy(tmp + entry->phar->fname_len, entry->filename, entry->filename_len); + tmp_len = MIN(MAXPATHLEN, entry->filename_len + entry->phar->fname_len); + len = MIN(entry->phar->fname_len, tmp_len); + memcpy(tmp, entry->phar->fname, len); + len = MIN(tmp_len - len, entry->filename_len); + memcpy(tmp + entry->phar->fname_len, entry->filename, len); entry->inode = (unsigned short)zend_get_hash_value(tmp, tmp_len); } /* }}} */ ������������������������������������������������������������������debian/patches/CVE-2016-5095.patch������������������������������������������������������������������0000664�0000000�0000000�00000002256�12746376503�013265� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 41fc3c76e97a36ff3b505da7d704ca17bb171fdf Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 9 May 2016 22:17:20 -0700 Subject: [PATCH] Add check for string overflow to all string add operations --- Zend/zend_operators.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index e0812fc..2f1394f 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1254,6 +1254,10 @@ ZEND_API int add_char_to_string(zval *result, const zval *op1, const zval *op2) int length = Z_STRLEN_P(op1) + 1; char *buf; + if (UNEXPECTED(length < 0)) { + zend_error(E_ERROR, "String size overflow"); + } + if (IS_INTERNED(Z_STRVAL_P(op1))) { buf = (char *) emalloc(length + 1); memcpy(buf, Z_STRVAL_P(op1), Z_STRLEN_P(op1)); @@ -1273,6 +1277,9 @@ ZEND_API int add_string_to_string(zval *result, const zval *op1, const zval *op2 int length = Z_STRLEN_P(op1) + Z_STRLEN_P(op2); char *buf; + if (UNEXPECTED(length < 0)) { + zend_error(E_ERROR, "String size overflow"); + } if (IS_INTERNED(Z_STRVAL_P(op1))) { buf = (char *) emalloc(length+1); memcpy(buf, Z_STRVAL_P(op1), Z_STRLEN_P(op1)); -- 2.1.4 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7125-2.patch����������������������������������������������������������������0000664�0000000�0000000�00000001202�12773524325�013403� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From b172f43caa048861899e78eb56607cb5b60e5cfb Mon Sep 17 00:00:00 2001 From: Xinchen Hui <laruence@gmail.com> Date: Wed, 17 Aug 2016 16:56:20 +0800 Subject: [PATCH] Unused label --- ext/session/session.c | 1 - 1 file changed, 1 deletion(-) Index: php5-5.5.9+dfsg/ext/session/session.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/session/session.c 2016-09-30 14:02:25.484224659 -0400 +++ php5-5.5.9+dfsg/ext/session/session.c 2016-09-30 14:02:43.164422879 -0400 @@ -1065,7 +1065,6 @@ if (!skip) { PS_ADD_VARL(name, namelen); } -skip: efree(name); p = q; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-2348.patch������������������������������������������������������������������0000664�0000000�0000000�00000001701�12514151005�013231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 1291d6bbee93b6109eb07e8f7916ff1b7fcc13e1 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 17 Mar 2015 12:47:58 -0700 Subject: [PATCH] Fix bug #69207 - move_uploaded_file allows nulls in path --- NEWS | 3 +++ ext/standard/basic_functions.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) Index: php5-5.5.12+dfsg/ext/standard/basic_functions.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/basic_functions.c 2015-04-17 05:23:52.811874829 -0400 +++ php5-5.5.12+dfsg/ext/standard/basic_functions.c 2015-04-17 05:23:52.811874829 -0400 @@ -5827,7 +5827,7 @@ RETURN_FALSE; } - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &path, &path_len, &new_path, &new_path_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sp", &path, &path_len, &new_path, &new_path_len) == FAILURE) { return; } ���������������������������������������������������������������debian/patches/CVE-2017-9229.patch������������������������������������������������������������������0000664�0000000�0000000�00000002704�13141102017�013240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 27a743b82b0b8d7e8e8154f3cc402204fea0ebd3 Mon Sep 17 00:00:00 2001 From: Remi Collet <remi@php.net> Date: Tue, 30 May 2017 15:39:21 +0200 Subject: [PATCH] Patch from the upstream git https://github.com/kkos/oniguruma/issues/59 (CVE-2017-9229) b690371bbf97794b4a1d3f295d4fb9a8b05d402d Modified for onig 5.9.6 Thanks to Mamoru TASAKA <mtasaka@fedoraproject.org> --- ext/mbstring/oniguruma/regexec.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ext/mbstring/oniguruma/regexec.c b/ext/mbstring/oniguruma/regexec.c index 97d5f32d28d8..42a31bd12b1a 100644 --- a/ext/mbstring/oniguruma/regexec.c +++ b/ext/mbstring/oniguruma/regexec.c @@ -3205,7 +3205,13 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, else { if (reg->dmax != ONIG_INFINITE_DISTANCE) { *low = p - reg->dmax; - if (*low > s) { + if (p - str < reg->dmax) { + *low = (UChar* )str; + if (low_prev) + *low_prev = onigenc_get_prev_char_head(reg->enc, str, *low); + } + else { + if (*low > s) { *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s, *low, (const UChar** )low_prev); if (low_prev && IS_NULL(*low_prev)) @@ -3218,6 +3224,7 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, (pprev ? pprev : str), *low); } } + } } /* no needs to adjust *high, *high is used as range check only */ *high = p - reg->dmin; ������������������������������������������������������������debian/patches/CVE-2015-1352.patch������������������������������������������������������������������0000664�0000000�0000000�00000001647�12467421372�013252� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Part of: From 124fb22a13fafa3648e4e15b4f207c7096d8155e Mon Sep 17 00:00:00 2001 From: Xinchen Hui <laruence@php.net> Date: Thu, 8 Jan 2015 16:09:02 +0800 Subject: [PATCH] Fixed bug #68739 #68740 #68741 --- ext/curl/interface.c | 1 + ext/ereg/regex/regcomp.c | 4 ++++ ext/pgsql/pgsql.c | 3 +++ 3 files changed, 8 insertions(+) Index: php5-5.5.9+dfsg/ext/pgsql/pgsql.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/pgsql/pgsql.c 2015-02-13 11:14:47.974948503 -0500 +++ php5-5.5.9+dfsg/ext/pgsql/pgsql.c 2015-02-13 11:14:47.970948469 -0500 @@ -6136,6 +6136,9 @@ /* schame.table should be "schame"."table" */ table_copy = estrdup(table); token = php_strtok_r(table_copy, ".", &tmp); + if (token == NULL) { + token = table; + } len = strlen(token); if (_php_pgsql_detect_identifier_escape(token, len) == SUCCESS) { escaped = _php_pgsql_strndup(token, len); �����������������������������������������������������������������������������������������debian/patches/CVE-2014-9767.patch������������������������������������������������������������������0000664�0000000�0000000�00000004306�12704220776�013265� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From f9c2bf73adb2ede0a486b0db466c264f2b27e0bb Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 30 Aug 2015 00:38:08 -0700 Subject: [PATCH] Fixed bug #70350: ZipArchive::extractTo allows for directory traversal when creating directories --- ext/zip/php_zip.c | 78 ++++++++++++++++++++++----------------------- ext/zip/tests/bug70350.phpt | 33 +++++++++++++++++++ 2 files changed, 72 insertions(+), 39 deletions(-) create mode 100644 ext/zip/tests/bug70350.phpt Note: Also includes http://git.php.net/?p=php-src.git;a=commit;h=906f19f1365488f90f7473e833a7a13f2c1387ac Index: php5-5.5.9+dfsg/ext/zip/php_zip.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/zip/php_zip.c 2016-04-15 13:16:44.070440450 -0400 +++ php5-5.5.9+dfsg/ext/zip/php_zip.c 2016-04-15 13:16:44.066440399 -0400 @@ -174,7 +174,7 @@ /* it is a directory only, see #40228 */ if (path_cleaned_len > 1 && IS_SLASH(path_cleaned[path_cleaned_len - 1])) { - len = spprintf(&file_dirname_fullpath, 0, "%s/%s", dest, file); + len = spprintf(&file_dirname_fullpath, 0, "%s/%s", dest, path_cleaned); is_dir_only = 1; } else { memcpy(file_dirname, path_cleaned, path_cleaned_len); Index: php5-5.5.9+dfsg/ext/zip/tests/bug70350.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/zip/tests/bug70350.phpt 2016-04-15 13:16:44.066440399 -0400 @@ -0,0 +1,33 @@ +--TEST-- +Bug #70350 (ZipArchive::extractTo allows for directory traversal when creating directories) +--SKIPIF-- +<?php +if(!extension_loaded('zip')) die('skip'); +?> +--FILE-- +<?php + +$dir = dirname(__FILE__)."/bug70350"; +mkdir($dir); +$archive = new ZipArchive(); +$archive->open("$dir/a.zip",ZipArchive::CREATE); +$archive->addEmptyDir("../down2/"); +$archive->close(); + +$archive2 = new ZipArchive(); +$archive2->open("$dir/a.zip"); +$archive2->extractTo($dir); +$archive2->close(); +var_dump(file_exists("$dir/down2/")); +var_dump(file_exists("../down2/")); +?> +--CLEAN-- +<?php +$dir = dirname(__FILE__)."/bug70350"; +rmdir("$dir/down2"); +unlink("$dir/a.zip"); +rmdir($dir); +?> +--EXPECT-- +bool(true) +bool(false) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-6834-2.patch����������������������������������������������������������������0000664�0000000�0000000�00000004511�12602473407�013411� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From f06a069c462d37c2e009f6d1d93b8c8e7b713393 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 1 Sep 2015 00:14:15 -0700 Subject: [PATCH] Fix bug #70365 - use-after-free vulnerability in unserialize() with SplObjectStorage --- ext/spl/spl_observer.c | 2 ++ ext/spl/tests/bug70365.phpt | 50 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 ext/spl/tests/bug70365.phpt Index: php5-5.5.9+dfsg/ext/spl/spl_observer.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/spl/spl_observer.c 2015-09-29 07:33:23.399201554 -0400 +++ php5-5.5.9+dfsg/ext/spl/spl_observer.c 2015-09-29 07:33:23.395201508 -0400 @@ -853,6 +853,7 @@ zval_ptr_dtor(&pentry); goto outexcept; } + var_push_dtor(&var_hash, &pentry); if(Z_TYPE_P(pentry) != IS_OBJECT) { zval_ptr_dtor(&pentry); goto outexcept; @@ -864,6 +865,7 @@ zval_ptr_dtor(&pinf); goto outexcept; } + var_push_dtor(&var_hash, &pinf); } hash = spl_object_storage_get_hash(intern, getThis(), pentry, &hash_len TSRMLS_CC); Index: php5-5.5.9+dfsg/ext/spl/tests/bug70365.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/spl/tests/bug70365.phpt 2015-09-29 07:33:23.395201508 -0400 @@ -0,0 +1,50 @@ +--TEST-- +SPL: Bug #70365 yet another use-after-free vulnerability in unserialize() with SplObjectStorage +--FILE-- +<?php +class obj { + var $ryat; + function __wakeup() { + $this->ryat = 1; + } +} + +$fakezval = ptr2str(1122334455); +$fakezval .= ptr2str(0); +$fakezval .= "\x00\x00\x00\x00"; +$fakezval .= "\x01"; +$fakezval .= "\x00"; +$fakezval .= "\x00\x00"; + +$inner = 'x:i:1;O:8:"stdClass":0:{},i:1;;m:a:0:{}'; +$exploit = 'a:5:{i:0;i:1;i:1;C:16:"SplObjectStorage":'.strlen($inner).':{'.$inner.'}i:2;O:3:"obj":1:{s:4:"ryat";R:3;}i:3;R:6;i:4;s:'.strlen($fakezval).':"'.$fakezval.'";}'; + +$data = unserialize($exploit); + +var_dump($data); + +function ptr2str($ptr) +{ + $out = ''; + for ($i = 0; $i < 8; $i++) { + $out .= chr($ptr & 0xff); + $ptr >>= 8; + } + return $out; +} +--EXPECTF-- +array(5) { + [0]=> + int(1) + [1]=> + &int(1) + [2]=> + object(obj)#%d (1) { + ["ryat"]=> + &int(1) + } + [3]=> + int(1) + [4]=> + string(24) "%s" +} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-0185.patch������������������������������������������������������������������0000664�0000000�0000000�00000003206�12350616775�013251� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 35ceea928b12373a3b1e3eecdc32ed323223a40d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Tue, 15 Apr 2014 10:43:24 -0700 Subject: [PATCH] Fix bug #67060: use default mode of 660 --- NEWS | 4 +++- sapi/fpm/fpm/fpm_unix.c | 2 +- sapi/fpm/php-fpm.conf.in | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) Index: php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_unix.c =================================================================== --- php5-5.5.9+dfsg.orig/sapi/fpm/fpm/fpm_unix.c 2014-06-19 13:29:29.741413197 -0400 +++ php5-5.5.9+dfsg/sapi/fpm/fpm/fpm_unix.c 2014-06-19 13:29:29.737413197 -0400 @@ -35,7 +35,7 @@ /* uninitialized */ wp->socket_uid = -1; wp->socket_gid = -1; - wp->socket_mode = 0666; + wp->socket_mode = 0660; if (!c) { return 0; Index: php5-5.5.9+dfsg/sapi/fpm/php-fpm.conf.in =================================================================== --- php5-5.5.9+dfsg.orig/sapi/fpm/php-fpm.conf.in 2014-06-19 13:29:29.741413197 -0400 +++ php5-5.5.9+dfsg/sapi/fpm/php-fpm.conf.in 2014-06-19 13:29:29.737413197 -0400 @@ -170,10 +170,10 @@ ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. ; Default Values: user and group are set as the running user -; mode is set to 0666 +; mode is set to 0660 ;listen.owner = @php_fpm_user@ ;listen.group = @php_fpm_group@ -;listen.mode = 0666 +;listen.mode = 0660 ; List of ipv4 addresses of FastCGI clients which are allowed to connect. ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2019-9023-1.patch����������������������������������������������������������������0000664�0000000�0000000�00000003672�13437472441�013420� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: From 20407d06ca3cb5eeb10f876a812b40c381574bcc Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 29 Dec 2018 19:51:24 -0800 Subject: [PATCH] Fix bug #77370 - check that we do not read past buffer end when parsing multibytes --- ext/mbstring/oniguruma/regparse.c | 9 +++++++++ ext/mbstring/tests/bug77370.phpt | 13 +++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 ext/mbstring/tests/bug77370.phpt Index: php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mbstring/oniguruma/regparse.c 2019-03-05 08:05:52.816212333 -0500 +++ php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.c 2019-03-05 08:09:28.380755437 -0500 @@ -246,6 +246,12 @@ strdup_with_null(OnigEncoding enc, UChar } #endif +#if (defined (__GNUC__) && __GNUC__ > 2 ) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX) +# define UNEXPECTED(condition) __builtin_expect(condition, 0) +#else +# define UNEXPECTED(condition) (condition) +#endif + /* scan pattern methods */ #define PEND_VALUE 0 @@ -260,6 +266,7 @@ strdup_with_null(OnigEncoding enc, UChar c = ONIGENC_MBC_TO_CODE(enc, p, end); \ pfetch_prev = p; \ p += ONIGENC_MBC_ENC_LEN(enc, p); \ + if(UNEXPECTED(p > end)) p = end; \ } while (0) #define PPEEK (p < end ? ONIGENC_MBC_TO_CODE(enc, p, end) : PEND_VALUE) Index: php5-5.5.9+dfsg/ext/mbstring/tests/bug77370.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/mbstring/tests/bug77370.phpt 2019-03-05 08:05:52.808212312 -0500 @@ -0,0 +1,13 @@ +--TEST-- +Bug #77370 (Buffer overflow on mb regex functions - fetch_token) +--SKIPIF-- +<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?> +--FILE-- +<?php +var_dump(mb_split(" \xfd","")); +?> +--EXPECT-- +array(1) { + [0]=> + string(0) "" +} ����������������������������������������������������������������������debian/patches/CVE-2015-4025.patch������������������������������������������������������������������0000664�0000000�0000000�00000041242�12543257237�013247� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: fix more missing file path null byte checks Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=be9b2a95adb504abd5acdc092d770444ad6f6854 Origin: upstream, http://git.php.net/?p=php-src.git;a=commit;h=634aa0a2dbf8ec5e6fabb4ee01c6d1355ba7ee67 Bug: https://bugs.php.net/bug.php?id=69418 Index: php5-5.5.12+dfsg/ext/pcntl/pcntl.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/pcntl/pcntl.c 2015-06-26 08:43:15.589818924 -0400 +++ php5-5.5.12+dfsg/ext/pcntl/pcntl.c 2015-06-26 08:43:15.585818883 -0400 @@ -198,7 +198,7 @@ static void pcntl_signal_handler(int); static void pcntl_signal_dispatch(); - + void php_register_signal_constants(INIT_FUNC_ARGS) { @@ -234,7 +234,7 @@ REGISTER_LONG_CONSTANT("SIGTERM", (long) SIGTERM, CONST_CS | CONST_PERSISTENT); #ifdef SIGSTKFLT REGISTER_LONG_CONSTANT("SIGSTKFLT",(long) SIGSTKFLT, CONST_CS | CONST_PERSISTENT); -#endif +#endif #ifdef SIGCLD REGISTER_LONG_CONSTANT("SIGCLD", (long) SIGCLD, CONST_CS | CONST_PERSISTENT); #endif @@ -484,7 +484,7 @@ } static PHP_GINIT_FUNCTION(pcntl) -{ +{ memset(pcntl_globals, 0, sizeof(*pcntl_globals)); } @@ -547,7 +547,7 @@ PCNTL_G(last_error) = errno; php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error %d", errno); } - + RETURN_LONG((long) id); } /* }}} */ @@ -560,7 +560,7 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) return; - + RETURN_LONG ((long) alarm(seconds)); } /* }}} */ @@ -576,7 +576,7 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz|l", &pid, &z_status, &options) == FAILURE) return; - + convert_to_long_ex(&z_status); status = Z_LVAL_P(z_status); @@ -604,7 +604,7 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|l", &z_status, &options) == FAILURE) return; - + convert_to_long_ex(&z_status); status = Z_LVAL_P(z_status); @@ -628,7 +628,7 @@ } /* }}} */ -/* {{{ proto bool pcntl_wifexited(int status) +/* {{{ proto bool pcntl_wifexited(int status) Returns true if the child status code represents a successful exit */ PHP_FUNCTION(pcntl_wifexited) { @@ -646,7 +646,7 @@ } /* }}} */ -/* {{{ proto bool pcntl_wifstopped(int status) +/* {{{ proto bool pcntl_wifstopped(int status) Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid) */ PHP_FUNCTION(pcntl_wifstopped) { @@ -664,7 +664,7 @@ } /* }}} */ -/* {{{ proto bool pcntl_wifsignaled(int status) +/* {{{ proto bool pcntl_wifsignaled(int status) Returns true if the child status code represents a process that was terminated due to a signal */ PHP_FUNCTION(pcntl_wifsignaled) { @@ -682,7 +682,7 @@ } /* }}} */ -/* {{{ proto int pcntl_wexitstatus(int status) +/* {{{ proto int pcntl_wexitstatus(int status) Returns the status code of a child's exit */ PHP_FUNCTION(pcntl_wexitstatus) { @@ -700,7 +700,7 @@ } /* }}} */ -/* {{{ proto int pcntl_wtermsig(int status) +/* {{{ proto int pcntl_wtermsig(int status) Returns the number of the signal that terminated the process who's status code is passed */ PHP_FUNCTION(pcntl_wtermsig) { @@ -718,7 +718,7 @@ } /* }}} */ -/* {{{ proto int pcntl_wstopsig(int status) +/* {{{ proto int pcntl_wstopsig(int status) Returns the number of the signal that caused the process to stop who's status code is passed */ PHP_FUNCTION(pcntl_wstopsig) { @@ -754,19 +754,19 @@ char *path; int path_len; ulong key_num; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|aa", &path, &path_len, &args, &envs) == FAILURE) { + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|aa", &path, &path_len, &args, &envs) == FAILURE) { return; } - + if (ZEND_NUM_ARGS() > 1) { /* Build argument list */ args_hash = HASH_OF(args); argc = zend_hash_num_elements(args_hash); - + argv = safe_emalloc((argc + 2), sizeof(char *), 0); *argv = path; - for ( zend_hash_internal_pointer_reset(args_hash), current_arg = argv+1; + for ( zend_hash_internal_pointer_reset(args_hash), current_arg = argv+1; (argi < argc && (zend_hash_get_current_data(args_hash, (void **) &element) == SUCCESS)); (argi++, current_arg++, zend_hash_move_forward(args_hash)) ) { @@ -784,9 +784,9 @@ /* Build environment pair list */ envs_hash = HASH_OF(envs); envc = zend_hash_num_elements(envs_hash); - + envp = safe_emalloc((envc + 1), sizeof(char *), 0); - for ( zend_hash_internal_pointer_reset(envs_hash), pair = envp; + for ( zend_hash_internal_pointer_reset(envs_hash), pair = envp; (envi < envc && (zend_hash_get_current_data(envs_hash, (void **) &element) == SUCCESS)); (envi++, pair++, zend_hash_move_forward(envs_hash)) ) { switch (return_val = zend_hash_get_current_key_ex(envs_hash, &key, &key_length, &key_num, 0, NULL)) { @@ -802,13 +802,13 @@ convert_to_string_ex(element); - /* Length of element + equal sign + length of key + null */ + /* Length of element + equal sign + length of key + null */ pair_length = Z_STRLEN_PP(element) + key_length + 2; *pair = emalloc(pair_length); - strlcpy(*pair, key, key_length); + strlcpy(*pair, key, key_length); strlcat(*pair, "=", pair_length); strlcat(*pair, Z_STRVAL_PP(element), pair_length); - + /* Cleanup */ if (return_val == HASH_KEY_IS_LONG) efree(key); } @@ -818,7 +818,7 @@ PCNTL_G(last_error) = errno; php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occurred: (errno %d) %s", errno, strerror(errno)); } - + /* Cleanup */ for (pair = envp; *pair != NULL; pair++) efree(*pair); efree(envp); @@ -831,7 +831,7 @@ } efree(argv); - + RETURN_FALSE; } /* }}} */ @@ -880,7 +880,7 @@ } RETURN_TRUE; } - + if (!zend_is_callable(handle, 0, &func_name TSRMLS_CC)) { PCNTL_G(last_error) = EINVAL; php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s is not a callable function name error", func_name); @@ -888,11 +888,11 @@ RETURN_FALSE; } efree(func_name); - + /* Add the function name to our signal table */ zend_hash_index_update(&PCNTL_G(php_signal_table), signo, (void **) &handle, sizeof(zval *), (void **) &dest_handle); if (dest_handle) zval_add_ref(dest_handle); - + if (php_signal4(signo, pcntl_signal_handler, (int) restart_syscalls, 1) == SIG_ERR) { PCNTL_G(last_error) = errno; php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error assigning signal"); @@ -1029,7 +1029,7 @@ } /* - * sigtimedwait and sigwaitinfo can return 0 on success on some + * sigtimedwait and sigwaitinfo can return 0 on success on some * platforms, e.g. NetBSD */ if (!signo && siginfo.si_signo) { @@ -1077,7 +1077,7 @@ EMPTY_SWITCH_DEFAULT_CASE(); } } - + RETURN_LONG(signo); } /* }}} */ @@ -1107,12 +1107,12 @@ long who = PRIO_PROCESS; long pid = getpid(); int pri; - + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|ll", &pid, &who) == FAILURE) { RETURN_FALSE; } - /* needs to be cleared, since any returned value is valid */ + /* needs to be cleared, since any returned value is valid */ errno = 0; pri = getpriority(who, pid); @@ -1172,7 +1172,7 @@ } RETURN_FALSE; } - + RETURN_TRUE; } /* }}} */ @@ -1205,7 +1205,7 @@ { struct php_pcntl_pending_signal *psig; TSRMLS_FETCH(); - + psig = PCNTL_G(spares); if (!psig) { /* oops, too many signals for us to track, so we'll forget about this one */ @@ -1233,7 +1233,7 @@ sigset_t mask; sigset_t old_mask; TSRMLS_FETCH(); - + /* Mask all signals */ sigfillset(&mask); sigprocmask(SIG_BLOCK, &mask, &old_mask); @@ -1249,7 +1249,7 @@ queue = PCNTL_G(head); PCNTL_G(head) = NULL; /* simple stores are atomic */ - + /* Allocate */ while (queue) { @@ -1274,7 +1274,7 @@ /* Re-enable queue */ PCNTL_G(processing_signal_queue) = 0; - + /* return signal mask to previous state */ sigprocmask(SIG_SETMASK, &old_mask, NULL); } Index: php5-5.5.12+dfsg/ext/standard/basic_functions.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/basic_functions.c 2015-06-26 08:43:15.589818924 -0400 +++ php5-5.5.12+dfsg/ext/standard/basic_functions.c 2015-06-26 08:43:15.585818883 -0400 @@ -2128,7 +2128,7 @@ ZEND_ARG_INFO(0, fp) ZEND_ARG_INFO(0, buffer) ZEND_END_ARG_INFO() - + ZEND_BEGIN_ARG_INFO(arginfo_stream_set_chunk_size, 0) ZEND_ARG_INFO(0, fp) ZEND_ARG_INFO(0, chunk_size) @@ -3472,7 +3472,7 @@ BG(user_tick_functions) = NULL; BG(user_filter_map) = NULL; BG(serialize_lock) = 0; - + memset(&BG(serialize), 0, sizeof(BG(serialize))); memset(&BG(unserialize), 0, sizeof(BG(unserialize))); @@ -4031,8 +4031,8 @@ int size; SetLastError(0); - /*If the given bugger is not large enough to hold the data, the return value is - the buffer size, in characters, required to hold the string and its terminating + /*If the given bugger is not large enough to hold the data, the return value is + the buffer size, in characters, required to hold the string and its terminating null character. We use this return value to alloc the final buffer. */ size = GetEnvironmentVariableA(str, &dummybuf, 0); if (GetLastError() == ERROR_ENVVAR_NOT_FOUND) { @@ -4628,7 +4628,7 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &new_setting) == FAILURE) { return; } - + if (new_setting) { php_error_docref(NULL TSRMLS_CC, E_CORE_ERROR, "magic_quotes_runtime is not supported anymore"); } @@ -4916,7 +4916,7 @@ instanceof_function(EG(called_scope), fci_cache.calling_scope TSRMLS_CC)) { fci_cache.called_scope = EG(called_scope); } - + if (zend_call_function(&fci, &fci_cache TSRMLS_CC) == SUCCESS && fci.retval_ptr_ptr && *fci.retval_ptr_ptr) { COPY_PZVAL_TO_ZVAL(*return_value, *fci.retval_ptr_ptr); } @@ -5489,7 +5489,7 @@ int new_value_len; char *old_value; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &new_value, &new_value_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &new_value, &new_value_len) == FAILURE) { return; } @@ -5617,7 +5617,7 @@ } -/* empty string behaves like NULL on windows implementation of +/* empty string behaves like NULL on windows implementation of getservbyname. Let be portable instead. */ #ifdef PHP_WIN32 if (proto_len == 0) { @@ -6045,7 +6045,7 @@ /* }}} */ #if ZEND_DEBUG -/* This function returns an array of ALL valid ini options with values and +/* This function returns an array of ALL valid ini options with values and * is not the same as ini_get_all() which returns only registered ini options. Only useful for devs to debug php.ini scanner/parser! */ PHP_FUNCTION(config_get_hash) /* {{{ */ { Index: php5-5.5.12+dfsg/ext/standard/dir.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/dir.c 2015-06-26 08:43:15.589818924 -0400 +++ php5-5.5.12+dfsg/ext/standard/dir.c 2015-06-26 08:43:15.585818883 -0400 @@ -93,8 +93,8 @@ dirp = (php_stream *) zend_fetch_resource(&id TSRMLS_CC, -1, "Directory", NULL, 1, php_file_le_stream()); \ if (!dirp) \ RETURN_FALSE; \ - } - + } + /* {{{ arginfo */ ZEND_BEGIN_ARG_INFO_EX(arginfo_dir, 0, 0, 0) ZEND_ARG_INFO(0, dir_handle) @@ -118,7 +118,7 @@ if (id != -1) { zend_list_addref(id); } - + DIRG(default_dir) = id; } @@ -168,25 +168,25 @@ #ifdef GLOB_NOSORT REGISTER_LONG_CONSTANT("GLOB_NOSORT", GLOB_NOSORT, CONST_CS | CONST_PERSISTENT); -#else +#else # define GLOB_NOSORT 0 #endif #ifdef GLOB_NOCHECK REGISTER_LONG_CONSTANT("GLOB_NOCHECK", GLOB_NOCHECK, CONST_CS | CONST_PERSISTENT); -#else +#else # define GLOB_NOCHECK 0 #endif #ifdef GLOB_NOESCAPE REGISTER_LONG_CONSTANT("GLOB_NOESCAPE", GLOB_NOESCAPE, CONST_CS | CONST_PERSISTENT); -#else +#else # define GLOB_NOESCAPE 0 #endif #ifdef GLOB_ERR REGISTER_LONG_CONSTANT("GLOB_ERR", GLOB_ERR, CONST_CS | CONST_PERSISTENT); -#else +#else # define GLOB_ERR 0 #endif @@ -219,12 +219,12 @@ php_stream_context *context = NULL; php_stream *dirp; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|r", &dirname, &dir_len, &zcontext) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|r", &dirname, &dir_len, &zcontext) == FAILURE) { RETURN_NULL(); } context = php_stream_context_from_zval(zcontext, 0); - + dirp = php_stream_opendir(dirname, REPORT_ERRORS, context); if (dirp == NULL) { @@ -232,7 +232,7 @@ } dirp->flags |= PHP_STREAM_FLAG_NO_FCLOSE; - + php_set_default_dir(dirp->rsrc_id TSRMLS_CC); if (createobject) { @@ -293,11 +293,11 @@ { char *str; int ret, str_len; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &str, &str_len) == FAILURE) { RETURN_FALSE; } - + ret = chroot(str); if (ret != 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s (errno %d)", strerror(errno), errno); @@ -305,9 +305,9 @@ } php_clear_stat_cache(1, NULL, 0 TSRMLS_CC); - + ret = chdir("/"); - + if (ret != 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s (errno %d)", strerror(errno), errno); RETURN_FALSE; @@ -324,7 +324,7 @@ { char *str; int ret, str_len; - + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &str, &str_len) == FAILURE) { RETURN_FALSE; } @@ -333,7 +333,7 @@ RETURN_FALSE; } ret = VCWD_CHDIR(str); - + if (ret != 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s (errno %d)", strerror(errno), errno); RETURN_FALSE; @@ -358,7 +358,7 @@ { char path[MAXPATHLEN]; char *ret=NULL; - + if (zend_parse_parameters_none() == FAILURE) { return; } @@ -383,7 +383,7 @@ { zval *id = NULL, **tmp, *myself; php_stream *dirp; - + FETCH_DIRP(); if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) { @@ -450,9 +450,9 @@ RETURN_FALSE; } -#ifdef ZTS +#ifdef ZTS if (!IS_ABSOLUTE_PATH(pattern, pattern_len)) { - result = VCWD_GETCWD(cwd, MAXPATHLEN); + result = VCWD_GETCWD(cwd, MAXPATHLEN); if (!result) { cwd[0] = '\0'; } @@ -465,10 +465,10 @@ snprintf(work_pattern, MAXPATHLEN, "%s%c%s", cwd, DEFAULT_SLASH, pattern); pattern = work_pattern; - } + } #endif - + memset(&globbuf, 0, sizeof(glob_t)); globbuf.gl_offs = 0; if (0 != (ret = glob(pattern, flags & GLOB_FLAGMASK, NULL, &globbuf))) { @@ -477,7 +477,7 @@ /* Some glob implementation simply return no data if no matches were found, others return the GLOB_NOMATCH error code. We don't want to treat GLOB_NOMATCH as an error condition - so that PHP glob() behaves the same on both types of + so that PHP glob() behaves the same on both types of implementations and so that 'foreach (glob() as ...' can be used for simple glob() calls without further error checking. @@ -512,11 +512,11 @@ } /* we need to do this everytime since GLOB_ONLYDIR does not guarantee that * all directories will be filtered. GNU libc documentation states the - * following: - * If the information about the type of the file is easily available - * non-directories will be rejected but no extra work will be done to - * determine the information for each file. I.e., the caller must still be - * able to filter directories out. + * following: + * If the information about the type of the file is easily available + * non-directories will be rejected but no extra work will be done to + * determine the information for each file. I.e., the caller must still be + * able to filter directories out. */ if (flags & GLOB_ONLYDIR) { struct stat s; @@ -540,7 +540,7 @@ } } /* }}} */ -#endif +#endif /* {{{ proto array scandir(string dir [, int sorting_order [, resource context]]) List files & directories inside the specified path */ @@ -578,7 +578,7 @@ php_error_docref(NULL TSRMLS_CC, E_WARNING, "(errno %d): %s", errno, strerror(errno)); RETURN_FALSE; } - + array_init(return_value); for (i = 0; i < n; i++) { Index: php5-5.5.12+dfsg/ext/standard/file.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/file.c 2015-06-26 08:43:15.589818924 -0400 +++ php5-5.5.12+dfsg/ext/standard/file.c 2015-06-26 08:43:15.585818883 -0400 @@ -803,7 +803,7 @@ char *p; int fd; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ps", &dir, &dir_len, &prefix, &prefix_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "pp", &dir, &dir_len, &prefix, &prefix_len) == FAILURE) { return; } @@ -1332,7 +1332,7 @@ zval *zcontext = NULL; php_stream_context *context; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|r", &dir, &dir_len, &zcontext) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|r", &dir, &dir_len, &zcontext) == FAILURE) { RETURN_FALSE; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-1943.patch������������������������������������������������������������������0000664�0000000�0000000�00000011546�12305146413�013245� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: fix denial of service via crafted indirect offset value in fileinfo Origin: upstream, http://git.php.net/?p=php-src.git;a=commitdiff;h=89f864c Origin: upstream, http://git.php.net/?p=php-src.git;a=commitdiff;h=10eb007 Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739012 Index: php5-5.5.3+dfsg/ext/fileinfo/libmagic/ascmagic.c =================================================================== --- php5-5.5.3+dfsg.orig/ext/fileinfo/libmagic/ascmagic.c 2013-08-20 00:46:43.000000000 -0400 +++ php5-5.5.3+dfsg/ext/fileinfo/libmagic/ascmagic.c 2014-02-28 11:14:00.363405044 -0500 @@ -147,7 +147,7 @@ == NULL) goto done; if ((rv = file_softmagic(ms, utf8_buf, - (size_t)(utf8_end - utf8_buf), TEXTTEST, text)) == 0) + (size_t)(utf8_end - utf8_buf), 0, TEXTTEST, text)) == 0) rv = -1; } Index: php5-5.5.3+dfsg/ext/fileinfo/libmagic/file.h =================================================================== --- php5-5.5.3+dfsg.orig/ext/fileinfo/libmagic/file.h 2013-08-20 00:46:43.000000000 -0400 +++ php5-5.5.3+dfsg/ext/fileinfo/libmagic/file.h 2014-02-28 11:14:00.363405044 -0500 @@ -437,7 +437,7 @@ unichar **, size_t *, const char **, const char **, const char **); protected int file_is_tar(struct magic_set *, const unsigned char *, size_t); protected int file_softmagic(struct magic_set *, const unsigned char *, size_t, - int, int); + size_t, int, int); protected int file_apprentice(struct magic_set *, const char *, int); protected int file_magicfind(struct magic_set *, const char *, struct mlist *); protected uint64_t file_signextend(struct magic_set *, struct magic *, Index: php5-5.5.3+dfsg/ext/fileinfo/libmagic/funcs.c =================================================================== --- php5-5.5.3+dfsg.orig/ext/fileinfo/libmagic/funcs.c 2013-08-20 00:46:43.000000000 -0400 +++ php5-5.5.3+dfsg/ext/fileinfo/libmagic/funcs.c 2014-02-28 11:14:00.363405044 -0500 @@ -235,7 +235,7 @@ /* try soft magic tests */ if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0) - if ((m = file_softmagic(ms, ubuf, nb, BINTEST, + if ((m = file_softmagic(ms, ubuf, nb, 0, BINTEST, looks_text)) != 0) { if ((ms->flags & MAGIC_DEBUG) != 0) (void)fprintf(stderr, "softmagic %d\n", m); Index: php5-5.5.3+dfsg/ext/fileinfo/libmagic/softmagic.c =================================================================== --- php5-5.5.3+dfsg.orig/ext/fileinfo/libmagic/softmagic.c 2013-08-20 00:46:43.000000000 -0400 +++ php5-5.5.3+dfsg/ext/fileinfo/libmagic/softmagic.c 2014-02-28 11:14:04.307405150 -0500 @@ -74,13 +74,13 @@ /*ARGSUSED1*/ /* nbytes passed for regularity, maybe need later */ protected int file_softmagic(struct magic_set *ms, const unsigned char *buf, size_t nbytes, - int mode, int text) + size_t level, int mode, int text) { struct mlist *ml; int rv, printed_something = 0, need_separator = 0; for (ml = ms->mlist[0]->next; ml != ms->mlist[0]; ml = ml->next) if ((rv = match(ms, ml->magic, ml->nmagic, buf, nbytes, 0, mode, - text, 0, 0, &printed_something, &need_separator, + text, 0, level, &printed_something, &need_separator, NULL)) != 0) return rv; @@ -1680,6 +1680,8 @@ break; case FILE_INDIRECT: + if (offset == 0) + return 0; if (nbytes < offset) return 0; sbuf = ms->o.buf; @@ -1687,7 +1689,7 @@ ms->o.buf = NULL; ms->offset = 0; rv = file_softmagic(ms, s + offset, nbytes - offset, - BINTEST, text); + recursion_level, BINTEST, text); if ((ms->flags & MAGIC_DEBUG) != 0) fprintf(stderr, "indirect @offs=%u[%d]\n", offset, rv); rbuf = ms->o.buf; @@ -1699,6 +1701,8 @@ return -1; if (file_printf(ms, "%s", rbuf) == -1) return -1; + } + if (rbuf) { efree(rbuf); } return rv; Index: php5-5.5.3+dfsg/ext/fileinfo/tests/cve-2014-1943.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.3+dfsg/ext/fileinfo/tests/cve-2014-1943.phpt 2014-02-28 11:14:00.363405044 -0500 @@ -0,0 +1,39 @@ +--TEST-- +Bug #66731: file: infinite recursion +--SKIPIF-- +<?php +if (!class_exists('finfo')) + die('skip no fileinfo extension'); +--FILE-- +<?php +$fd = __DIR__.'/cve-2014-1943.data'; +$fm = __DIR__.'/cve-2014-1943.magic'; + +$a = "\105\122\000\000\000\000\000"; +$b = str_repeat("\001", 250000); +$m = "0 byte x\n". + ">(1.b) indirect x\n"; + +file_put_contents($fd, $a); +$fi = finfo_open(FILEINFO_NONE); +var_dump(finfo_file($fi, $fd)); +finfo_close($fi); + +file_put_contents($fd, $b); +file_put_contents($fm, $m); +$fi = finfo_open(FILEINFO_NONE, $fm); +var_dump(finfo_file($fi, $fd)); +finfo_close($fi); +?> +Done +--CLEAN-- +<?php +@unlink(__DIR__.'/cve-2014-1943.data'); +@unlink(__DIR__.'/cve-2014-1943.magic'); +?> +--EXPECTF-- +string(%d) "%s" + +Warning: finfo_file(): Failed identify data 0:(null) in %s on line %d +bool(false) +Done ����������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-2783-memleak.patch����������������������������������������������������������0000664�0000000�0000000�00000001474�12543257044�014670� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From cee97220285fd7b955a58617b3e0300ec104ed87 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov <dmitry@zend.com> Date: Tue, 14 Apr 2015 15:47:26 +0300 Subject: [PATCH] Fixed recently introduced memory leak --- ext/phar/phar.c | 1 + 1 file changed, 1 insertion(+) Index: php5-5.6.4+dfsg/ext/phar/phar.c =================================================================== --- php5-5.6.4+dfsg.orig/ext/phar/phar.c 2015-06-25 11:53:12.816385683 -0400 +++ php5-5.6.4+dfsg/ext/phar/phar.c 2015-06-25 11:53:12.812385637 -0400 @@ -1111,6 +1111,7 @@ entry.metadata_len = 0; } if (len > endbuffer - buffer) { + pefree(entry.filename, entry.is_persistent); MAPPHAR_FAIL("internal corruption of phar \"%s\" (truncated manifest entry)"); } if (phar_parse_metadata(&buffer, &entry.metadata, len TSRMLS_CC) == FAILURE) { ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2019-9021.patch������������������������������������������������������������������0000664�0000000�0000000�00000003036�13437472046�013253� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 78bd3477745f1ada9578a79f61edb41886bec1cb Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 29 Dec 2018 18:25:37 -0800 Subject: [PATCH] Fix bug #77247 (heap buffer overflow in phar_detect_phar_fname_ext) --- ext/phar/phar.c | 2 +- ext/phar/tests/bug77247.phpt | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 ext/phar/tests/bug77247.phpt Index: php5-5.5.9+dfsg/ext/phar/phar.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/phar/phar.c 2019-03-05 08:05:39.776178795 -0500 +++ php5-5.5.9+dfsg/ext/phar/phar.c 2019-03-05 08:05:39.768178773 -0500 @@ -2023,7 +2023,7 @@ next_extension: } while (pos != filename && (*(pos - 1) == '/' || *(pos - 1) == '\0')) { - pos = memchr(pos + 1, '.', filename_len - (pos - filename) + 1); + pos = memchr(pos + 1, '.', filename_len - (pos - filename) - 1); if (!pos) { return FAILURE; } Index: php5-5.5.9+dfsg/ext/phar/tests/bug77247.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/phar/tests/bug77247.phpt 2019-03-05 08:05:39.768178773 -0500 @@ -0,0 +1,14 @@ +--TEST-- +PHP bug #77247 (heap buffer overflow in phar_detect_phar_fname_ext) +--SKIPIF-- +<?php if (!extension_loaded("phar")) die("skip"); ?> +--FILE-- +<?php +try { +var_dump(new Phar('a/.b', 0,'test.phar')); +} catch(UnexpectedValueException $e) { + echo "OK"; +} +?> +--EXPECT-- +OK \ No newline at end of file ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/113-php.ini_securitynotes.patch������������������������������������������������������0000664�0000000�0000000�00000001354�12300436054�016507� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: Adds security notices to php.ini settings Origin: vendor Forwarded: not-needed Last-Update: 2010-01-18 --- php5.orig/php.ini-development +++ php5/php.ini-development @@ -306,6 +306,12 @@ serialize_precision = 17 ; or per-virtualhost web server configuration file. This directive is ; *NOT* affected by whether Safe Mode is turned On or Off. ; http://php.net/open-basedir + +; NOTE: this is considered a "broken" security measure. +; Applications relying on this feature will not receive full +; support by the security team. For more information please +; see /usr/share/doc/php5-common/README.Debian.security +; ;open_basedir = ; This directive allows you to disable certain functions for security reasons. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-6836.patch������������������������������������������������������������������0000664�0000000�0000000�00000005552�12602473453�013263� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From e201f01ac17243a1e5fb6a3911ed8e21b1619ac1 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 31 Aug 2015 21:06:03 -0700 Subject: [PATCH] Fix bug #70388 - SOAP serialize_function_call() type confusion --- ext/soap/soap.c | 96 ++++++++++++++++++++++++-------------------- ext/soap/tests/bug70388.phpt | 17 ++++++++ 2 files changed, 69 insertions(+), 44 deletions(-) create mode 100644 ext/soap/tests/bug70388.phpt Index: php5-5.5.9+dfsg/ext/soap/soap.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/soap/soap.c 2015-09-29 07:34:01.347639679 -0400 +++ php5-5.5.9+dfsg/ext/soap/soap.c 2015-09-29 07:34:01.347639679 -0400 @@ -2919,8 +2919,10 @@ } zend_hash_internal_pointer_reset(default_headers); while (zend_hash_get_current_data(default_headers, (void**)&tmp) == SUCCESS) { - Z_ADDREF_PP(tmp); - zend_hash_next_index_insert(soap_headers, tmp, sizeof(zval *), NULL); + if(Z_TYPE_PP(tmp) == IS_OBJECT) { + Z_ADDREF_PP(tmp); + zend_hash_next_index_insert(soap_headers, tmp, sizeof(zval *), NULL); + } zend_hash_move_forward(default_headers); } } else { @@ -4325,11 +4327,18 @@ if (head) { zval** header; - zend_hash_internal_pointer_reset(soap_headers); - while (zend_hash_get_current_data(soap_headers,(void**)&header) == SUCCESS) { - HashTable *ht = Z_OBJPROP_PP(header); + for(zend_hash_internal_pointer_reset(soap_headers); + zend_hash_get_current_data(soap_headers,(void**)&header) == SUCCESS; + zend_hash_move_forward(soap_headers) + ) { + HashTable *ht; zval **name, **ns, **tmp; + if (Z_TYPE_PP(header) != IS_OBJECT) { + continue; + } + + ht = Z_OBJPROP_PP(header); if (zend_hash_find(ht, "name", sizeof("name"), (void**)&name) == SUCCESS && Z_TYPE_PP(name) == IS_STRING && zend_hash_find(ht, "namespace", sizeof("namespace"), (void**)&ns) == SUCCESS && @@ -4368,7 +4377,6 @@ xmlSetNs(h, nsptr); set_soap_header_attributes(h, ht, version); } - zend_hash_move_forward(soap_headers); } } Index: php5-5.5.9+dfsg/ext/soap/tests/bug70388.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/soap/tests/bug70388.phpt 2015-09-29 07:34:01.347639679 -0400 @@ -0,0 +1,17 @@ +--TEST-- +Bug #70388 (SOAP serialize_function_call() type confusion / RCE) +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +$dummy = unserialize('O:10:"SoapClient":3:{s:3:"uri";s:1:"X";s:8:"location";s:22:"http://localhost/a.xml";s:17:"__default_headers";a:1:{i:1;s:1337:"'.str_repeat("X", 1337).'";}}'); +try { + var_dump($dummy->notexisting()); +} catch(Exception $e) { + var_dump($e->getMessage()); + var_dump(get_class($e)); +} +?> +--EXPECTF-- +string(%d) "%s" +string(9) "SoapFault" \ No newline at end of file ������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-5096.patch������������������������������������������������������������������0000664�0000000�0000000�00000003233�12746376514�013264� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From abd159cce48f3e34f08e4751c568e09677d5ec9c Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 9 May 2016 21:55:29 -0700 Subject: [PATCH] Fix bug #72114 - int/size_t confusion in fread --- ext/standard/file.c | 6 ++++++ ext/standard/tests/file/bug72114.phpt | 12 ++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 ext/standard/tests/file/bug72114.phpt Index: php5-5.5.9+dfsg/ext/standard/file.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/file.c 2016-07-28 08:40:41.836764150 -0400 +++ php5-5.5.9+dfsg/ext/standard/file.c 2016-07-28 08:40:41.836764150 -0400 @@ -1747,6 +1747,12 @@ RETURN_FALSE; } + if (len > INT_MAX) { + /* string length is int in 5.x so we can not read more than int */ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length parameter must be no more than %d", INT_MAX); + RETURN_FALSE; + } + Z_STRVAL_P(return_value) = emalloc(len + 1); Z_STRLEN_P(return_value) = php_stream_read(stream, Z_STRVAL_P(return_value), len); Index: php5-5.5.9+dfsg/ext/standard/tests/file/bug72114.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/file/bug72114.phpt 2016-07-28 08:40:41.836764150 -0400 @@ -0,0 +1,12 @@ +--TEST-- +Bug #72114 (Integer underflow / arbitrary null write in fread/gzread) +--FILE-- +<?php +ini_set('memory_limit', "2500M"); +$fp = fopen("/dev/zero", "r"); +fread($fp, 2147483648); +?> +Done +--EXPECTF-- +Warning: fread(): Length parameter must be no more than 2147483647 in %s/bug72114.php on line %d +Done ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2019-9022.patch������������������������������������������������������������������0000664�0000000�0000000�00000000750�13457376143�013257� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Index: php5-5.5.9+dfsg/ext/standard/dns.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/dns.c +++ php5-5.5.9+dfsg/ext/standard/dns.c @@ -443,6 +443,10 @@ static u_char *php_parserr(u_char *cp, u GETLONG(ttl, cp); GETSHORT(dlen, cp); CHECKCP(dlen); + if (dlen == 0) { + /* No data in the response - nothing to do */ + return NULL; + } if (type_to_fetch != T_ANY && type != type_to_fetch) { cp += dlen; return cp; ������������������������debian/patches/CVE-2016-7128.patch������������������������������������������������������������������0000664�0000000�0000000�00000002426�12773246324�013260� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 6dbb1ee46b5f4725cc6519abf91e512a2a10dfed Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 8 Aug 2016 00:49:34 -0700 Subject: [PATCH] Fixed bug #72627: Memory Leakage In exif_process_IFD_in_TIFF --- ext/exif/exif.c | 5 ++- ext/exif/tests/bug72627.phpt | 71 +++++++++++++++++++++++++++++++++++++++++++ ext/exif/tests/bug72627.tiff | Bin 0 -> 1250 bytes 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 ext/exif/tests/bug72627.phpt create mode 100644 ext/exif/tests/bug72627.tiff diff --git a/ext/exif/exif.c b/ext/exif/exif.c index f95de3a..657a2cc 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -3768,8 +3768,11 @@ static int exif_process_IFD_in_TIFF(image_info_type *ImageInfo, size_t dir_offse fgot = php_stream_read(ImageInfo->infile, ImageInfo->Thumbnail.data, ImageInfo->Thumbnail.size); if (fgot < ImageInfo->Thumbnail.size) { EXIF_ERRLOG_THUMBEOF(ImageInfo) + efree(ImageInfo->Thumbnail.data); + ImageInfo->Thumbnail.data = NULL; + } else { + exif_thumbnail_build(ImageInfo TSRMLS_CC); } - exif_thumbnail_build(ImageInfo TSRMLS_CC); } #ifdef EXIF_DEBUG exif_error_docref(NULL EXIFERR_CC, ImageInfo, E_NOTICE, "Read next IFD (THUMBNAIL) done"); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-0238.patch������������������������������������������������������������������0000664�0000000�0000000�00000002520�12350617031�013230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 22736b7c56d678f142d5dd21f4996e5819507a2b Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Mon, 26 May 2014 17:42:18 -0700 Subject: [PATCH] Fix bug #67327: fileinfo: CDF infinite loop in nelements DoS Upstream fix: https://github.com/file/file/commit/f97486ef5dc3e8735440edc4fc8808c63e1a3ef0 --- ext/fileinfo/libmagic/cdf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index 8dacd2f..4712e84 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -823,6 +823,10 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h, i, inp[i].pi_id, inp[i].pi_type, q - p, offs)); if (inp[i].pi_type & CDF_VECTOR) { nelements = CDF_GETUINT32(q, 1); + if (nelements == 0) { + DPRINTF(("CDF_VECTOR with nelements == 0\n")); + goto out; + } o = 2; } else { nelements = 1; @@ -897,7 +901,9 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h, } DPRINTF(("nelements = %" SIZE_T_FORMAT "u\n", nelements)); - for (j = 0; j < nelements; j++, i++) { + for (j = 0; j < nelements && i < sh.sh_properties; + j++, i++) + { uint32_t l = CDF_GETUINT32(q, o); inp[i].pi_str.s_len = l; inp[i].pi_str.s_buf = (const char *) -- 1.9.2 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2017-16642.patch�����������������������������������������������������������������0000664�0000000�0000000�00000224031�13237125014�013324� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Backport of: (and regenerated with re2c -i -o parse_date.c parse_date.re) From a7815e63bdab95f7b9b0e32c52c81a4b6ad3a8f6 Mon Sep 17 00:00:00 2001 From: Anatol Belski <ab@php.net> Date: Tue, 24 Oct 2017 11:28:17 +0200 Subject: [PATCH] Fixed bug #75055 Out-Of-Bounds Read in timelib_meridian() --- ext/date/lib/parse_date.c | 3013 ++++++++++++++++++++++++++++--------- ext/date/lib/parse_date.re | 4 +- ext/date/tests/bug53437_var3.phpt | 2 +- ext/wddx/tests/bug75055.phpt | 20 + ext/wddx/tests/bug75055.wddx | 13 + 5 files changed, 2336 insertions(+), 716 deletions(-) create mode 100644 ext/wddx/tests/bug75055.phpt create mode 100644 ext/wddx/tests/bug75055.wddx Index: php5-5.5.9+dfsg/ext/date/lib/parse_date.re =================================================================== --- php5-5.5.9+dfsg.orig/ext/date/lib/parse_date.re 2018-02-08 08:19:45.015428482 -0500 +++ php5-5.5.9+dfsg/ext/date/lib/parse_date.re 2018-02-08 08:20:24.815448819 -0500 @@ -930,8 +930,8 @@ isoweek = year4 "-"? "W" weekof exif = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" secondlz; firstdayof = 'first day of'?; lastdayof = 'last day of'?; -backof = 'back of ' hour24 space? meridian?; -frontof = 'front of ' hour24 space? meridian?; +backof = 'back of ' hour24 (space? meridian)?; +frontof = 'front of ' hour24 (space? meridian)?; /* Common Log Format: 10/Oct/2000:13:55:36 -0700 */ clf = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection; Index: php5-5.5.9+dfsg/ext/date/tests/bug53437_var3.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/date/tests/bug53437_var3.phpt 2018-02-08 08:19:45.015428482 -0500 +++ php5-5.5.9+dfsg/ext/date/tests/bug53437_var3.phpt 2018-02-08 08:19:45.015428482 -0500 @@ -40,7 +40,7 @@ object(DateInterval)#%d (15) { ["special_amount"]=> int(-1) ["have_weekday_relative"]=> - int(9) + int(0) ["have_special_relative"]=> int(0) } Index: php5-5.5.9+dfsg/ext/wddx/tests/bug75055.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug75055.phpt 2018-02-08 08:19:45.015428482 -0500 @@ -0,0 +1,20 @@ +--TEST-- +Bug #75055 Out-Of-Bounds Read in timelib_meridian() +--SKIPIF-- +<?php if (!extension_loaded("wddx")) print "skip"; ?> +--FILE-- +<?php + +$file_str = dirname(__FILE__) . "/bug75055.wddx"; + +$wddx_str = file_get_contents($file_str); +print strlen($wddx_str) . " bytes read.\n"; + +var_dump(wddx_deserialize($wddx_str)); +?> +--EXPECT-- +310 bytes read. +array(1) { + ["aDateTime"]=> + string(12) "frONt of 0 0" +} Index: php5-5.5.9+dfsg/ext/wddx/tests/bug75055.wddx =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug75055.wddx 2018-02-08 08:19:45.015428482 -0500 @@ -0,0 +1,13 @@ +<?xml version='1.0'?> +<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> +<wddxPacket version='1.0'> +<header/> + <data> + <struct> + <var name='aDateTime'> + <dateTime>frONt of 0 0</dateTime> + </var> + </struct> + </data> +</wddxPacket> + Index: php5-5.5.9+dfsg/ext/date/lib/parse_date.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/date/lib/parse_date.c 2018-02-08 08:19:41.871426862 -0500 +++ php5-5.5.9+dfsg/ext/date/lib/parse_date.c 2018-02-08 08:22:49.860115708 -0500 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Fri Aug 4 14:16:40 2017 */ +/* Generated by re2c 0.13.5 on Thu Feb 8 08:22:49 2018 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | @@ -965,7 +965,7 @@ yy3: case 'X': case 'Y': case 'Z': goto yy141; - case 'E': goto yy1463; + case 'E': goto yy1465; case 'a': case 'b': case 'c': @@ -991,7 +991,7 @@ yy3: case 'x': case 'y': case 'z': goto yy146; - case 'e': goto yy1472; + case 'e': goto yy1474; default: goto yy4; } yy4: @@ -1062,7 +1062,7 @@ yy5: case 'y': case 'z': goto yy141; case 'E': - case 'e': goto yy1463; + case 'e': goto yy1465; default: goto yy4; } yy6: @@ -1092,9 +1092,9 @@ yy6: case 'X': case 'Y': case 'Z': goto yy141; - case 'E': goto yy1434; - case 'I': goto yy1435; - case 'O': goto yy1433; + case 'E': goto yy1436; + case 'I': goto yy1437; + case 'O': goto yy1435; case 'a': case 'b': case 'c': @@ -1118,9 +1118,9 @@ yy6: case 'x': case 'y': case 'z': goto yy146; - case 'e': goto yy1450; - case 'i': goto yy1451; - case 'o': goto yy1449; + case 'e': goto yy1452; + case 'i': goto yy1453; + case 'o': goto yy1451; default: goto yy4; } yy7: @@ -1174,18 +1174,18 @@ yy7: case 'y': case 'z': goto yy141; case 'E': - case 'e': goto yy1434; + case 'e': goto yy1436; case 'I': - case 'i': goto yy1435; + case 'i': goto yy1437; case 'O': - case 'o': goto yy1433; + case 'o': goto yy1435; default: goto yy4; } yy8: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; - case 'A': goto yy1403; + case 'A': goto yy1405; case 'B': case 'C': case 'D': @@ -1209,9 +1209,9 @@ yy8: case 'X': case 'Y': case 'Z': goto yy141; - case 'I': goto yy1404; - case 'O': goto yy1405; - case 'a': goto yy1418; + case 'I': goto yy1406; + case 'O': goto yy1407; + case 'a': goto yy1420; case 'b': case 'c': case 'd': @@ -1235,8 +1235,8 @@ yy8: case 'x': case 'y': case 'z': goto yy146; - case 'i': goto yy1419; - case 'o': goto yy1420; + case 'i': goto yy1421; + case 'o': goto yy1422; default: goto yy4; } yy9: @@ -1244,7 +1244,7 @@ yy9: switch (yych) { case ')': goto yy140; case 'A': - case 'a': goto yy1403; + case 'a': goto yy1405; case 'B': case 'C': case 'D': @@ -1292,9 +1292,9 @@ yy9: case 'y': case 'z': goto yy141; case 'I': - case 'i': goto yy1404; + case 'i': goto yy1406; case 'O': - case 'o': goto yy1405; + case 'o': goto yy1407; default: goto yy4; } yy10: @@ -1303,15 +1303,15 @@ yy10: switch (yych) { case ')': goto yy140; case '0': - case '1': goto yy1333; - case '2': goto yy1334; + case '1': goto yy1335; + case '2': goto yy1336; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy1335; + case '9': goto yy1337; case 'A': case 'B': case 'C': @@ -1333,11 +1333,11 @@ yy10: case 'X': case 'Y': case 'Z': goto yy141; - case 'E': goto yy1328; - case 'H': goto yy1329; - case 'O': goto yy1330; - case 'U': goto yy1331; - case 'W': goto yy1332; + case 'E': goto yy1330; + case 'H': goto yy1331; + case 'O': goto yy1332; + case 'U': goto yy1333; + case 'W': goto yy1334; case 'a': case 'b': case 'c': @@ -1359,11 +1359,11 @@ yy10: case 'x': case 'y': case 'z': goto yy146; - case 'e': goto yy1371; - case 'h': goto yy1372; - case 'o': goto yy1373; - case 'u': goto yy1374; - case 'w': goto yy1375; + case 'e': goto yy1373; + case 'h': goto yy1374; + case 'o': goto yy1375; + case 'u': goto yy1376; + case 'w': goto yy1377; default: goto yy4; } yy11: @@ -1372,15 +1372,15 @@ yy11: switch (yych) { case ')': goto yy140; case '0': - case '1': goto yy1333; - case '2': goto yy1334; + case '1': goto yy1335; + case '2': goto yy1336; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy1335; + case '9': goto yy1337; case 'A': case 'B': case 'C': @@ -1424,22 +1424,22 @@ yy11: case 'y': case 'z': goto yy141; case 'E': - case 'e': goto yy1328; + case 'e': goto yy1330; case 'H': - case 'h': goto yy1329; + case 'h': goto yy1331; case 'O': - case 'o': goto yy1330; + case 'o': goto yy1332; case 'U': - case 'u': goto yy1331; + case 'u': goto yy1333; case 'W': - case 'w': goto yy1332; + case 'w': goto yy1334; default: goto yy4; } yy12: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '-': goto yy1324; + case '-': goto yy1326; case '0': case '1': case '2': @@ -1449,7 +1449,7 @@ yy12: case '6': case '7': case '8': - case '9': goto yy1325; + case '9': goto yy1327; default: goto yy13; } yy13: @@ -1483,10 +1483,10 @@ yy14: case 'X': case 'Y': case 'Z': goto yy141; - case 'E': goto yy1260; - case 'I': goto yy1261; - case 'O': goto yy1262; - case 'R': goto yy1263; + case 'E': goto yy1261; + case 'I': goto yy1262; + case 'O': goto yy1263; + case 'R': goto yy1264; case 'a': case 'b': case 'c': @@ -1509,10 +1509,10 @@ yy14: case 'x': case 'y': case 'z': goto yy146; - case 'e': goto yy1301; - case 'i': goto yy1302; - case 'o': goto yy1303; - case 'r': goto yy1304; + case 'e': goto yy1303; + case 'i': goto yy1304; + case 'o': goto yy1305; + case 'r': goto yy1306; default: goto yy4; } yy15: @@ -1564,20 +1564,20 @@ yy15: case 'y': case 'z': goto yy141; case 'E': - case 'e': goto yy1260; + case 'e': goto yy1261; case 'I': - case 'i': goto yy1261; + case 'i': goto yy1262; case 'O': - case 'o': goto yy1262; + case 'o': goto yy1263; case 'R': - case 'r': goto yy1263; + case 'r': goto yy1264; default: goto yy4; } yy16: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; - case 'A': goto yy1247; + case 'A': goto yy1248; case 'B': case 'C': case 'D': @@ -1603,7 +1603,7 @@ yy16: case 'X': case 'Y': case 'Z': goto yy141; - case 'a': goto yy1257; + case 'a': goto yy1258; case 'b': case 'c': case 'd': @@ -1636,7 +1636,7 @@ yy17: switch (yych) { case ')': goto yy140; case 'A': - case 'a': goto yy1247; + case 'a': goto yy1248; case 'B': case 'C': case 'D': @@ -1719,7 +1719,7 @@ yy18: case 'X': case 'Y': case 'Z': goto yy141; - case 'a': goto yy1244; + case 'a': goto yy1245; case 'b': case 'c': case 'd': @@ -3561,11 +3561,11 @@ yy57: case 25: goto yy1058; case 26: goto yy1082; case 27: goto yy1235; - case 28: goto yy1357; - case 29: goto yy1360; - case 30: goto yy1440; - case 31: goto yy1448; - case 32: goto yy1471; + case 28: goto yy1359; + case 29: goto yy1362; + case 30: goto yy1442; + case 31: goto yy1450; + case 32: goto yy1473; } yy58: ++YYCURSOR; @@ -26917,6 +26917,8 @@ yy1234: yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { + case '\t': + case ' ': goto yy1238; case '0': case '1': case '2': @@ -26927,7 +26929,11 @@ yy1234: case '7': case '8': case '9': goto yy1237; - default: goto yy1238; + case 'A': + case 'P': + case 'a': + case 'p': goto yy1240; + default: goto yy1235; } yy1235: { @@ -26955,64 +26961,80 @@ yy1236: yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { + case '\t': + case ' ': goto yy1238; case '0': case '1': case '2': case '3': case '4': goto yy1237; - default: goto yy1238; + case 'A': + case 'P': + case 'a': + case 'p': goto yy1240; + default: goto yy1235; } yy1237: yyaccept = 27; - YYMARKER = ++YYCURSOR; + yych = *(YYMARKER = ++YYCURSOR); + switch (yych) { + case '\t': + case ' ': goto yy1238; + case 'A': + case 'P': + case 'a': + case 'p': goto yy1240; + default: goto yy1235; + } +yy1238: + ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; -yy1238: switch (yych) { case '\t': - case ' ': goto yy1237; + case ' ': goto yy1238; case 'A': case 'P': case 'a': - case 'p': goto yy1239; - default: goto yy1235; + case 'p': goto yy1240; + default: goto yy57; } -yy1239: +yy1240: yych = *++YYCURSOR; switch (yych) { - case '.': goto yy1240; + case '.': goto yy1241; case 'M': - case 'm': goto yy1241; + case 'm': goto yy1242; default: goto yy57; } -yy1240: +yy1241: yych = *++YYCURSOR; switch (yych) { case 'M': - case 'm': goto yy1241; + case 'm': goto yy1242; default: goto yy57; } -yy1241: +yy1242: yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': - case ' ': goto yy1243; - case '.': goto yy1242; + case ' ': goto yy1244; + case '.': goto yy1243; default: goto yy57; } -yy1242: +yy1243: yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': - case ' ': goto yy1243; + case ' ': goto yy1244; default: goto yy57; } -yy1243: +yy1244: yych = *++YYCURSOR; goto yy1235; -yy1244: +yy1245: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -27071,10 +27093,10 @@ yy1244: case 'x': case 'y': case 'z': goto yy147; - case 'c': goto yy1245; + case 'c': goto yy1246; default: goto yy4; } -yy1245: +yy1246: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -27133,10 +27155,10 @@ yy1245: case 'x': case 'y': case 'z': goto yy151; - case 'k': goto yy1246; + case 'k': goto yy1247; default: goto yy4; } -yy1246: +yy1247: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -27199,7 +27221,7 @@ yy1246: case 'z': goto yy152; default: goto yy4; } -yy1247: +yy1248: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -27254,10 +27276,10 @@ yy1247: case 'y': case 'z': goto yy142; case 'S': - case 's': goto yy1248; + case 's': goto yy1249; default: goto yy4; } -yy1248: +yy1249: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -27312,15 +27334,15 @@ yy1248: case 'y': case 'z': goto yy143; case 'T': - case 't': goto yy1249; + case 't': goto yy1250; default: goto yy4; } -yy1249: +yy1250: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': goto yy1045; - case ' ': goto yy1250; + case ' ': goto yy1251; case ')': goto yy140; case 'A': case 'B': @@ -27376,54 +27398,54 @@ yy1249: case 'z': goto yy144; default: goto yy4; } -yy1250: +yy1251: yych = *++YYCURSOR; switch (yych) { case 'D': - case 'd': goto yy1251; + case 'd': goto yy1252; default: goto yy1046; } -yy1251: +yy1252: yych = *++YYCURSOR; switch (yych) { case 'A': - case 'a': goto yy1252; + case 'a': goto yy1253; default: goto yy57; } -yy1252: +yy1253: yych = *++YYCURSOR; switch (yych) { case 'Y': - case 'y': goto yy1253; + case 'y': goto yy1254; default: goto yy57; } -yy1253: +yy1254: yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case ' ': goto yy1254; + case ' ': goto yy1255; case 'S': case 's': goto yy1083; default: goto yy1058; } -yy1254: +yy1255: yych = *++YYCURSOR; switch (yych) { case 'O': - case 'o': goto yy1255; + case 'o': goto yy1256; default: goto yy57; } -yy1255: +yy1256: yych = *++YYCURSOR; switch (yych) { case 'F': - case 'f': goto yy1256; + case 'f': goto yy1257; default: goto yy57; } -yy1256: +yy1257: yych = *++YYCURSOR; goto yy2; -yy1257: +yy1258: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -27456,7 +27478,7 @@ yy1257: case 'X': case 'Y': case 'Z': goto yy142; - case 'S': goto yy1248; + case 'S': goto yy1249; case 'a': case 'b': case 'c': @@ -27482,10 +27504,10 @@ yy1257: case 'x': case 'y': case 'z': goto yy147; - case 's': goto yy1258; + case 's': goto yy1259; default: goto yy4; } -yy1258: +yy1259: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -27518,7 +27540,7 @@ yy1258: case 'X': case 'Y': case 'Z': goto yy143; - case 'T': goto yy1249; + case 'T': goto yy1250; case 'a': case 'b': case 'c': @@ -27544,15 +27566,15 @@ yy1258: case 'x': case 'y': case 'z': goto yy151; - case 't': goto yy1259; + case 't': goto yy1260; default: goto yy4; } -yy1259: +yy1260: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': goto yy1045; - case ' ': goto yy1250; + case ' ': goto yy1251; case ')': goto yy140; case '-': case '/': @@ -27611,7 +27633,7 @@ yy1259: case 'z': goto yy152; default: goto yy4; } -yy1260: +yy1261: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -27666,10 +27688,10 @@ yy1260: case 'y': case 'z': goto yy142; case 'B': - case 'b': goto yy1296; + case 'b': goto yy1298; default: goto yy4; } -yy1261: +yy1262: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -27722,12 +27744,12 @@ yy1261: case 'y': case 'z': goto yy142; case 'F': - case 'f': goto yy1286; + case 'f': goto yy1288; case 'R': - case 'r': goto yy1285; + case 'r': goto yy1287; default: goto yy4; } -yy1262: +yy1263: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -27782,10 +27804,10 @@ yy1262: case 'y': case 'z': goto yy142; case 'U': - case 'u': goto yy1282; + case 'u': goto yy1284; default: goto yy4; } -yy1263: +yy1264: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -27838,12 +27860,12 @@ yy1263: case 'y': case 'z': goto yy142; case 'I': - case 'i': goto yy1265; + case 'i': goto yy1266; case 'O': - case 'o': goto yy1264; + case 'o': goto yy1265; default: goto yy4; } -yy1264: +yy1265: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -27898,10 +27920,10 @@ yy1264: case 'y': case 'z': goto yy143; case 'N': - case 'n': goto yy1268; + case 'n': goto yy1269; default: goto yy4; } -yy1265: +yy1266: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -27956,15 +27978,15 @@ yy1265: case 'y': case 'z': goto yy143; case 'D': - case 'd': goto yy1266; + case 'd': goto yy1267; default: goto yy167; } -yy1266: +yy1267: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; case 'A': - case 'a': goto yy1267; + case 'a': goto yy1268; case 'B': case 'C': case 'D': @@ -28017,7 +28039,7 @@ yy1266: case 'z': goto yy144; default: goto yy4; } -yy1267: +yy1268: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28075,7 +28097,7 @@ yy1267: case 'y': goto yy1176; default: goto yy4; } -yy1268: +yy1269: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28130,14 +28152,14 @@ yy1268: case 'y': case 'z': goto yy144; case 'T': - case 't': goto yy1269; + case 't': goto yy1270; default: goto yy4; } -yy1269: +yy1270: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case ' ': goto yy1270; + case ' ': goto yy1271; case ')': goto yy140; case 'A': case 'B': @@ -28193,45 +28215,47 @@ yy1269: case 'z': goto yy145; default: goto yy4; } -yy1270: +yy1271: yych = *++YYCURSOR; switch (yych) { case 'O': - case 'o': goto yy1271; + case 'o': goto yy1272; default: goto yy57; } -yy1271: +yy1272: yych = *++YYCURSOR; switch (yych) { case 'F': - case 'f': goto yy1272; + case 'f': goto yy1273; default: goto yy57; } -yy1272: +yy1273: yych = *++YYCURSOR; switch (yych) { - case ' ': goto yy1273; + case ' ': goto yy1274; default: goto yy57; } -yy1273: +yy1274: yych = *++YYCURSOR; switch (yych) { case '0': - case '1': goto yy1274; - case '2': goto yy1275; + case '1': goto yy1275; + case '2': goto yy1276; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy1276; + case '9': goto yy1277; default: goto yy57; } -yy1274: +yy1275: yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { + case '\t': + case ' ': goto yy1278; case '0': case '1': case '2': @@ -28241,68 +28265,88 @@ yy1274: case '6': case '7': case '8': - case '9': goto yy1276; - default: goto yy1277; + case '9': goto yy1277; + case 'A': + case 'P': + case 'a': + case 'p': goto yy1280; + default: goto yy1235; } -yy1275: +yy1276: yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { + case '\t': + case ' ': goto yy1278; case '0': case '1': case '2': case '3': - case '4': goto yy1276; - default: goto yy1277; + case '4': goto yy1277; + case 'A': + case 'P': + case 'a': + case 'p': goto yy1280; + default: goto yy1235; } -yy1276: - yyaccept = 27; - YYMARKER = ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; yy1277: + yyaccept = 27; + yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': - case ' ': goto yy1276; + case ' ': goto yy1278; case 'A': case 'P': case 'a': - case 'p': goto yy1278; + case 'p': goto yy1280; default: goto yy1235; } yy1278: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + switch (yych) { + case '\t': + case ' ': goto yy1278; + case 'A': + case 'P': + case 'a': + case 'p': goto yy1280; + default: goto yy57; + } +yy1280: yych = *++YYCURSOR; switch (yych) { - case '.': goto yy1279; + case '.': goto yy1281; case 'M': - case 'm': goto yy1280; + case 'm': goto yy1282; default: goto yy57; } -yy1279: +yy1281: yych = *++YYCURSOR; switch (yych) { case 'M': - case 'm': goto yy1280; + case 'm': goto yy1282; default: goto yy57; } -yy1280: +yy1282: yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': - case ' ': goto yy1243; - case '.': goto yy1281; + case ' ': goto yy1244; + case '.': goto yy1283; default: goto yy57; } -yy1281: +yy1283: yych = *++YYCURSOR; switch (yych) { case 0x00: case '\t': - case ' ': goto yy1243; + case ' ': goto yy1244; default: goto yy57; } -yy1282: +yy1284: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28357,10 +28401,10 @@ yy1282: case 'y': case 'z': goto yy143; case 'R': - case 'r': goto yy1283; + case 'r': goto yy1285; default: goto yy4; } -yy1283: +yy1285: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28415,10 +28459,10 @@ yy1283: case 'y': case 'z': goto yy144; case 'T': - case 't': goto yy1284; + case 't': goto yy1286; default: goto yy4; } -yy1284: +yy1286: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28476,7 +28520,7 @@ yy1284: case 'h': goto yy1156; default: goto yy4; } -yy1285: +yy1287: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28531,10 +28575,10 @@ yy1285: case 'y': case 'z': goto yy143; case 'S': - case 's': goto yy1288; + case 's': goto yy1290; default: goto yy4; } -yy1286: +yy1288: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28589,10 +28633,10 @@ yy1286: case 'y': case 'z': goto yy143; case 'T': - case 't': goto yy1287; + case 't': goto yy1289; default: goto yy4; } -yy1287: +yy1289: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28650,7 +28694,7 @@ yy1287: case 'h': goto yy1179; default: goto yy4; } -yy1288: +yy1290: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28705,15 +28749,15 @@ yy1288: case 'y': case 'z': goto yy144; case 'T': - case 't': goto yy1289; + case 't': goto yy1291; default: goto yy4; } -yy1289: +yy1291: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': goto yy1147; - case ' ': goto yy1290; + case ' ': goto yy1292; case ')': goto yy140; case 'A': case 'B': @@ -28769,51 +28813,51 @@ yy1289: case 'z': goto yy145; default: goto yy4; } -yy1290: +yy1292: yych = *++YYCURSOR; switch (yych) { case 'D': - case 'd': goto yy1291; + case 'd': goto yy1293; default: goto yy1148; } -yy1291: +yy1293: yych = *++YYCURSOR; switch (yych) { case 'A': - case 'a': goto yy1292; + case 'a': goto yy1294; default: goto yy57; } -yy1292: +yy1294: yych = *++YYCURSOR; switch (yych) { case 'Y': - case 'y': goto yy1293; + case 'y': goto yy1295; default: goto yy57; } -yy1293: +yy1295: yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case ' ': goto yy1294; + case ' ': goto yy1296; case 'S': case 's': goto yy1083; default: goto yy1058; } -yy1294: +yy1296: yych = *++YYCURSOR; switch (yych) { case 'O': - case 'o': goto yy1295; + case 'o': goto yy1297; default: goto yy57; } -yy1295: +yy1297: yych = *++YYCURSOR; switch (yych) { case 'F': - case 'f': goto yy1256; + case 'f': goto yy1257; default: goto yy57; } -yy1296: +yy1298: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -28883,10 +28927,10 @@ yy1296: case 'y': case 'z': goto yy143; case 'R': - case 'r': goto yy1297; + case 'r': goto yy1299; default: goto yy194; } -yy1297: +yy1299: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -28941,15 +28985,15 @@ yy1297: case 'y': case 'z': goto yy144; case 'U': - case 'u': goto yy1298; + case 'u': goto yy1300; default: goto yy4; } -yy1298: +yy1300: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; case 'A': - case 'a': goto yy1299; + case 'a': goto yy1301; case 'B': case 'C': case 'D': @@ -29002,23 +29046,23 @@ yy1298: case 'z': goto yy145; default: goto yy4; } -yy1299: +yy1301: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ')': goto yy140; case 'R': - case 'r': goto yy1300; + case 'r': goto yy1302; default: goto yy4; } -yy1300: +yy1302: yych = *++YYCURSOR; switch (yych) { case 'Y': case 'y': goto yy205; default: goto yy57; } -yy1301: +yy1303: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29051,7 +29095,7 @@ yy1301: case 'X': case 'Y': case 'Z': goto yy142; - case 'B': goto yy1296; + case 'B': goto yy1298; case 'a': case 'c': case 'd': @@ -29077,10 +29121,10 @@ yy1301: case 'x': case 'y': case 'z': goto yy147; - case 'b': goto yy1319; + case 'b': goto yy1321; default: goto yy4; } -yy1302: +yy1304: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29112,8 +29156,8 @@ yy1302: case 'X': case 'Y': case 'Z': goto yy142; - case 'F': goto yy1286; - case 'R': goto yy1285; + case 'F': goto yy1288; + case 'R': goto yy1287; case 'a': case 'b': case 'c': @@ -29138,11 +29182,11 @@ yy1302: case 'x': case 'y': case 'z': goto yy147; - case 'f': goto yy1315; - case 'r': goto yy1314; + case 'f': goto yy1317; + case 'r': goto yy1316; default: goto yy4; } -yy1303: +yy1305: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29175,7 +29219,7 @@ yy1303: case 'X': case 'Y': case 'Z': goto yy142; - case 'U': goto yy1282; + case 'U': goto yy1284; case 'a': case 'b': case 'c': @@ -29201,10 +29245,10 @@ yy1303: case 'x': case 'y': case 'z': goto yy147; - case 'u': goto yy1311; + case 'u': goto yy1313; default: goto yy4; } -yy1304: +yy1306: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29236,8 +29280,8 @@ yy1304: case 'X': case 'Y': case 'Z': goto yy142; - case 'I': goto yy1265; - case 'O': goto yy1264; + case 'I': goto yy1266; + case 'O': goto yy1265; case 'a': case 'b': case 'c': @@ -29262,11 +29306,11 @@ yy1304: case 'x': case 'y': case 'z': goto yy147; - case 'i': goto yy1306; - case 'o': goto yy1305; + case 'i': goto yy1308; + case 'o': goto yy1307; default: goto yy4; } -yy1305: +yy1307: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29299,7 +29343,7 @@ yy1305: case 'X': case 'Y': case 'Z': goto yy143; - case 'N': goto yy1268; + case 'N': goto yy1269; case 'a': case 'b': case 'c': @@ -29325,10 +29369,10 @@ yy1305: case 'x': case 'y': case 'z': goto yy151; - case 'n': goto yy1309; + case 'n': goto yy1311; default: goto yy4; } -yy1306: +yy1308: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29361,7 +29405,7 @@ yy1306: case 'X': case 'Y': case 'Z': goto yy143; - case 'D': goto yy1266; + case 'D': goto yy1267; case 'a': case 'b': case 'c': @@ -29387,10 +29431,10 @@ yy1306: case 'x': case 'y': case 'z': goto yy151; - case 'd': goto yy1307; + case 'd': goto yy1309; default: goto yy167; } -yy1307: +yy1309: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29398,7 +29442,7 @@ yy1307: case '-': case '/': case '_': goto yy148; - case 'A': goto yy1267; + case 'A': goto yy1268; case 'B': case 'C': case 'D': @@ -29424,7 +29468,7 @@ yy1307: case 'X': case 'Y': case 'Z': goto yy144; - case 'a': goto yy1308; + case 'a': goto yy1310; case 'b': case 'c': case 'd': @@ -29452,7 +29496,7 @@ yy1307: case 'z': goto yy152; default: goto yy4; } -yy1308: +yy1310: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29514,7 +29558,7 @@ yy1308: case 'y': goto yy1205; default: goto yy4; } -yy1309: +yy1311: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29547,7 +29591,7 @@ yy1309: case 'X': case 'Y': case 'Z': goto yy144; - case 'T': goto yy1269; + case 'T': goto yy1270; case 'a': case 'b': case 'c': @@ -29573,14 +29617,14 @@ yy1309: case 'x': case 'y': case 'z': goto yy152; - case 't': goto yy1310; + case 't': goto yy1312; default: goto yy4; } -yy1310: +yy1312: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case ' ': goto yy1270; + case ' ': goto yy1271; case ')': goto yy140; case '-': case '/': @@ -29639,7 +29683,7 @@ yy1310: case 'z': goto yy153; default: goto yy4; } -yy1311: +yy1313: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29672,7 +29716,7 @@ yy1311: case 'X': case 'Y': case 'Z': goto yy143; - case 'R': goto yy1283; + case 'R': goto yy1285; case 'a': case 'b': case 'c': @@ -29698,10 +29742,10 @@ yy1311: case 'x': case 'y': case 'z': goto yy151; - case 'r': goto yy1312; + case 'r': goto yy1314; default: goto yy4; } -yy1312: +yy1314: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29734,7 +29778,7 @@ yy1312: case 'X': case 'Y': case 'Z': goto yy144; - case 'T': goto yy1284; + case 'T': goto yy1286; case 'a': case 'b': case 'c': @@ -29760,10 +29804,10 @@ yy1312: case 'x': case 'y': case 'z': goto yy152; - case 't': goto yy1313; + case 't': goto yy1315; default: goto yy4; } -yy1313: +yy1315: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29825,7 +29869,7 @@ yy1313: case 'h': goto yy1168; default: goto yy4; } -yy1314: +yy1316: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29858,7 +29902,7 @@ yy1314: case 'X': case 'Y': case 'Z': goto yy143; - case 'S': goto yy1288; + case 'S': goto yy1290; case 'a': case 'b': case 'c': @@ -29884,10 +29928,10 @@ yy1314: case 'x': case 'y': case 'z': goto yy151; - case 's': goto yy1317; + case 's': goto yy1319; default: goto yy4; } -yy1315: +yy1317: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -29920,7 +29964,7 @@ yy1315: case 'X': case 'Y': case 'Z': goto yy143; - case 'T': goto yy1287; + case 'T': goto yy1289; case 'a': case 'b': case 'c': @@ -29946,10 +29990,10 @@ yy1315: case 'x': case 'y': case 'z': goto yy151; - case 't': goto yy1316; + case 't': goto yy1318; default: goto yy4; } -yy1316: +yy1318: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -30011,7 +30055,7 @@ yy1316: case 'h': goto yy1208; default: goto yy4; } -yy1317: +yy1319: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -30044,7 +30088,7 @@ yy1317: case 'X': case 'Y': case 'Z': goto yy144; - case 'T': goto yy1289; + case 'T': goto yy1291; case 'a': case 'b': case 'c': @@ -30070,15 +30114,15 @@ yy1317: case 'x': case 'y': case 'z': goto yy152; - case 't': goto yy1318; + case 't': goto yy1320; default: goto yy4; } -yy1318: +yy1320: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': goto yy1147; - case ' ': goto yy1290; + case ' ': goto yy1292; case ')': goto yy140; case '-': case '/': @@ -30137,7 +30181,7 @@ yy1318: case 'z': goto yy153; default: goto yy4; } -yy1319: +yy1321: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -30183,7 +30227,7 @@ yy1319: case 'X': case 'Y': case 'Z': goto yy143; - case 'R': goto yy1297; + case 'R': goto yy1299; case 'a': case 'b': case 'c': @@ -30209,10 +30253,10 @@ yy1319: case 'x': case 'y': case 'z': goto yy151; - case 'r': goto yy1320; + case 'r': goto yy1322; default: goto yy194; } -yy1320: +yy1322: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -30245,7 +30289,7 @@ yy1320: case 'X': case 'Y': case 'Z': goto yy144; - case 'U': goto yy1298; + case 'U': goto yy1300; case 'a': case 'b': case 'c': @@ -30271,10 +30315,10 @@ yy1320: case 'x': case 'y': case 'z': goto yy152; - case 'u': goto yy1321; + case 'u': goto yy1323; default: goto yy4; } -yy1321: +yy1323: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -30282,7 +30326,7 @@ yy1321: case '-': case '/': case '_': goto yy148; - case 'A': goto yy1299; + case 'A': goto yy1301; case 'B': case 'C': case 'D': @@ -30308,7 +30352,7 @@ yy1321: case 'X': case 'Y': case 'Z': goto yy145; - case 'a': goto yy1322; + case 'a': goto yy1324; case 'b': case 'c': case 'd': @@ -30336,7 +30380,7 @@ yy1321: case 'z': goto yy153; default: goto yy4; } -yy1322: +yy1324: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -30344,7 +30388,7 @@ yy1322: case '-': case '/': case '_': goto yy148; - case 'R': goto yy1300; + case 'R': goto yy1302; case 'a': case 'b': case 'c': @@ -30370,17 +30414,17 @@ yy1322: case 'x': case 'y': case 'z': goto yy154; - case 'r': goto yy1323; + case 'r': goto yy1325; default: goto yy4; } -yy1323: +yy1325: yych = *++YYCURSOR; switch (yych) { case 'Y': goto yy205; case 'y': goto yy317; default: goto yy155; } -yy1324: +yy1326: yych = *++YYCURSOR; switch (yych) { case '0': @@ -30392,10 +30436,10 @@ yy1324: case '6': case '7': case '8': - case '9': goto yy1325; + case '9': goto yy1327; default: goto yy57; } -yy1325: +yy1327: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; @@ -30409,10 +30453,10 @@ yy1325: case '6': case '7': case '8': - case '9': goto yy1325; - default: goto yy1327; + case '9': goto yy1327; + default: goto yy1329; } -yy1327: +yy1329: { timelib_ull i; @@ -30437,7 +30481,7 @@ yy1327: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1328: +yy1330: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -30492,10 +30536,10 @@ yy1328: case 'y': case 'z': goto yy142; case 'N': - case 'n': goto yy1369; + case 'n': goto yy1371; default: goto yy4; } -yy1329: +yy1331: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -30548,12 +30592,12 @@ yy1329: case 'y': case 'z': goto yy142; case 'I': - case 'i': goto yy1361; + case 'i': goto yy1363; case 'U': - case 'u': goto yy1362; + case 'u': goto yy1364; default: goto yy4; } -yy1330: +yy1332: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -30606,12 +30650,12 @@ yy1330: case 'y': case 'z': goto yy142; case 'D': - case 'd': goto yy1350; + case 'd': goto yy1352; case 'M': - case 'm': goto yy1351; + case 'm': goto yy1353; default: goto yy4; } -yy1331: +yy1333: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -30666,10 +30710,10 @@ yy1331: case 'y': case 'z': goto yy142; case 'E': - case 'e': goto yy1346; + case 'e': goto yy1348; default: goto yy4; } -yy1332: +yy1334: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -30724,10 +30768,10 @@ yy1332: case 'y': case 'z': goto yy142; case 'E': - case 'e': goto yy1342; + case 'e': goto yy1344; default: goto yy4; } -yy1333: +yy1335: yych = *++YYCURSOR; switch (yych) { case '.': @@ -30741,10 +30785,10 @@ yy1333: case '6': case '7': case '8': - case '9': goto yy1336; + case '9': goto yy1338; default: goto yy57; } -yy1334: +yy1336: yych = *++YYCURSOR; switch (yych) { case '.': @@ -30753,17 +30797,17 @@ yy1334: case '1': case '2': case '3': - case '4': goto yy1336; + case '4': goto yy1338; default: goto yy57; } -yy1335: +yy1337: yych = *++YYCURSOR; switch (yych) { case '.': case ':': goto yy1005; default: goto yy57; } -yy1336: +yy1338: yych = *++YYCURSOR; switch (yych) { case '.': @@ -30773,10 +30817,10 @@ yy1336: case '2': case '3': case '4': - case '5': goto yy1337; + case '5': goto yy1339; default: goto yy57; } -yy1337: +yy1339: yych = *++YYCURSOR; switch (yych) { case '0': @@ -30788,10 +30832,10 @@ yy1337: case '6': case '7': case '8': - case '9': goto yy1338; + case '9': goto yy1340; default: goto yy57; } -yy1338: +yy1340: yyaccept = 23; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -30800,11 +30844,11 @@ yy1338: case '2': case '3': case '4': - case '5': goto yy1339; - case '6': goto yy1340; + case '5': goto yy1341; + case '6': goto yy1342; default: goto yy1008; } -yy1339: +yy1341: yych = *++YYCURSOR; switch (yych) { case '0': @@ -30816,19 +30860,19 @@ yy1339: case '6': case '7': case '8': - case '9': goto yy1341; + case '9': goto yy1343; default: goto yy57; } -yy1340: +yy1342: yych = *++YYCURSOR; switch (yych) { - case '0': goto yy1341; + case '0': goto yy1343; default: goto yy57; } -yy1341: +yy1343: yych = *++YYCURSOR; goto yy1016; -yy1342: +yy1344: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -30883,10 +30927,10 @@ yy1342: case 'y': case 'z': goto yy143; case 'L': - case 'l': goto yy1343; + case 'l': goto yy1345; default: goto yy4; } -yy1343: +yy1345: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -30941,10 +30985,10 @@ yy1343: case 'y': case 'z': goto yy144; case 'F': - case 'f': goto yy1344; + case 'f': goto yy1346; default: goto yy4; } -yy1344: +yy1346: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -30999,10 +31043,10 @@ yy1344: case 'y': case 'z': goto yy145; case 'T': - case 't': goto yy1345; + case 't': goto yy1347; default: goto yy4; } -yy1345: +yy1347: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -31011,7 +31055,7 @@ yy1345: case 'h': goto yy1146; default: goto yy4; } -yy1346: +yy1348: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31066,10 +31110,10 @@ yy1346: case 'y': case 'z': goto yy143; case 'S': - case 's': goto yy1347; + case 's': goto yy1349; default: goto yy167; } -yy1347: +yy1349: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31124,15 +31168,15 @@ yy1347: case 'y': case 'z': goto yy144; case 'D': - case 'd': goto yy1348; + case 'd': goto yy1350; default: goto yy4; } -yy1348: +yy1350: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; case 'A': - case 'a': goto yy1349; + case 'a': goto yy1351; case 'B': case 'C': case 'D': @@ -31185,7 +31229,7 @@ yy1348: case 'z': goto yy145; default: goto yy4; } -yy1349: +yy1351: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31193,12 +31237,12 @@ yy1349: case 'y': goto yy173; default: goto yy4; } -yy1350: +yy1352: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; case 'A': - case 'a': goto yy1358; + case 'a': goto yy1360; case 'B': case 'C': case 'D': @@ -31251,7 +31295,7 @@ yy1350: case 'z': goto yy143; default: goto yy4; } -yy1351: +yy1353: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31306,10 +31350,10 @@ yy1351: case 'y': case 'z': goto yy143; case 'O': - case 'o': goto yy1352; + case 'o': goto yy1354; default: goto yy4; } -yy1352: +yy1354: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31364,10 +31408,10 @@ yy1352: case 'y': case 'z': goto yy144; case 'R': - case 'r': goto yy1353; + case 'r': goto yy1355; default: goto yy4; } -yy1353: +yy1355: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31422,28 +31466,28 @@ yy1353: case 'y': case 'z': goto yy145; case 'R': - case 'r': goto yy1354; + case 'r': goto yy1356; default: goto yy4; } -yy1354: +yy1356: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ')': goto yy140; case 'O': - case 'o': goto yy1355; + case 'o': goto yy1357; default: goto yy4; } -yy1355: +yy1357: yych = *++YYCURSOR; switch (yych) { case 'W': - case 'w': goto yy1356; + case 'w': goto yy1358; default: goto yy57; } -yy1356: +yy1358: ++YYCURSOR; -yy1357: +yy1359: { DEBUG_OUTPUT("tomorrow"); TIMELIB_INIT; @@ -31454,7 +31498,7 @@ yy1357: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1358: +yy1360: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31509,10 +31553,10 @@ yy1358: case 'x': case 'z': goto yy144; case 'Y': - case 'y': goto yy1359; + case 'y': goto yy1361; default: goto yy4; } -yy1359: +yy1361: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case ')': goto yy140; @@ -31568,9 +31612,9 @@ yy1359: case 'x': case 'y': case 'z': goto yy145; - default: goto yy1360; + default: goto yy1362; } -yy1360: +yy1362: { DEBUG_OUTPUT("midnight | today"); TIMELIB_INIT; @@ -31579,7 +31623,7 @@ yy1360: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1361: +yy1363: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31632,12 +31676,12 @@ yy1361: case 'y': case 'z': goto yy143; case 'R': - case 'r': goto yy1367; + case 'r': goto yy1369; case 'S': - case 's': goto yy1368; + case 's': goto yy1370; default: goto yy4; } -yy1362: +yy1364: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31692,10 +31736,10 @@ yy1362: case 'y': case 'z': goto yy143; case 'R': - case 'r': goto yy1363; + case 'r': goto yy1365; default: goto yy167; } -yy1363: +yy1365: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31750,10 +31794,10 @@ yy1363: case 'y': case 'z': goto yy144; case 'S': - case 's': goto yy1364; + case 's': goto yy1366; default: goto yy4; } -yy1364: +yy1366: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31808,26 +31852,26 @@ yy1364: case 'y': case 'z': goto yy145; case 'D': - case 'd': goto yy1365; + case 'd': goto yy1367; default: goto yy4; } -yy1365: +yy1367: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ')': goto yy140; case 'A': - case 'a': goto yy1366; + case 'a': goto yy1368; default: goto yy4; } -yy1366: +yy1368: yych = *++YYCURSOR; switch (yych) { case 'Y': case 'y': goto yy173; default: goto yy57; } -yy1367: +yy1369: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -31885,7 +31929,7 @@ yy1367: case 'd': goto yy1179; default: goto yy4; } -yy1368: +yy1370: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -31946,7 +31990,7 @@ yy1368: case 'z': goto yy144; default: goto yy4; } -yy1369: +yy1371: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -32001,10 +32045,10 @@ yy1369: case 'y': case 'z': goto yy143; case 'T': - case 't': goto yy1370; + case 't': goto yy1372; default: goto yy4; } -yy1370: +yy1372: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -32062,7 +32106,7 @@ yy1370: case 'h': goto yy1179; default: goto yy4; } -yy1371: +yy1373: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32095,7 +32139,7 @@ yy1371: case 'X': case 'Y': case 'Z': goto yy142; - case 'N': goto yy1369; + case 'N': goto yy1371; case 'a': case 'b': case 'c': @@ -32121,10 +32165,10 @@ yy1371: case 'x': case 'y': case 'z': goto yy147; - case 'n': goto yy1401; + case 'n': goto yy1403; default: goto yy4; } -yy1372: +yy1374: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32156,8 +32200,8 @@ yy1372: case 'X': case 'Y': case 'Z': goto yy142; - case 'I': goto yy1361; - case 'U': goto yy1362; + case 'I': goto yy1363; + case 'U': goto yy1364; case 'a': case 'b': case 'c': @@ -32182,11 +32226,11 @@ yy1372: case 'x': case 'y': case 'z': goto yy147; - case 'i': goto yy1393; - case 'u': goto yy1394; + case 'i': goto yy1395; + case 'u': goto yy1396; default: goto yy4; } -yy1373: +yy1375: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32218,8 +32262,8 @@ yy1373: case 'X': case 'Y': case 'Z': goto yy142; - case 'D': goto yy1350; - case 'M': goto yy1351; + case 'D': goto yy1352; + case 'M': goto yy1353; case 'a': case 'b': case 'c': @@ -32244,11 +32288,11 @@ yy1373: case 'x': case 'y': case 'z': goto yy147; - case 'd': goto yy1384; - case 'm': goto yy1385; + case 'd': goto yy1386; + case 'm': goto yy1387; default: goto yy4; } -yy1374: +yy1376: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32281,7 +32325,7 @@ yy1374: case 'X': case 'Y': case 'Z': goto yy142; - case 'E': goto yy1346; + case 'E': goto yy1348; case 'a': case 'b': case 'c': @@ -32307,10 +32351,10 @@ yy1374: case 'x': case 'y': case 'z': goto yy147; - case 'e': goto yy1380; + case 'e': goto yy1382; default: goto yy4; } -yy1375: +yy1377: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32343,7 +32387,7 @@ yy1375: case 'X': case 'Y': case 'Z': goto yy142; - case 'E': goto yy1342; + case 'E': goto yy1344; case 'a': case 'b': case 'c': @@ -32369,10 +32413,10 @@ yy1375: case 'x': case 'y': case 'z': goto yy147; - case 'e': goto yy1376; + case 'e': goto yy1378; default: goto yy4; } -yy1376: +yy1378: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32405,7 +32449,7 @@ yy1376: case 'X': case 'Y': case 'Z': goto yy143; - case 'L': goto yy1343; + case 'L': goto yy1345; case 'a': case 'b': case 'c': @@ -32431,10 +32475,10 @@ yy1376: case 'x': case 'y': case 'z': goto yy151; - case 'l': goto yy1377; + case 'l': goto yy1379; default: goto yy4; } -yy1377: +yy1379: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32467,7 +32511,7 @@ yy1377: case 'X': case 'Y': case 'Z': goto yy144; - case 'F': goto yy1344; + case 'F': goto yy1346; case 'a': case 'b': case 'c': @@ -32493,10 +32537,10 @@ yy1377: case 'x': case 'y': case 'z': goto yy152; - case 'f': goto yy1378; + case 'f': goto yy1380; default: goto yy4; } -yy1378: +yy1380: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32529,7 +32573,7 @@ yy1378: case 'X': case 'Y': case 'Z': goto yy145; - case 'T': goto yy1345; + case 'T': goto yy1347; case 'a': case 'b': case 'c': @@ -32555,10 +32599,10 @@ yy1378: case 'x': case 'y': case 'z': goto yy153; - case 't': goto yy1379; + case 't': goto yy1381; default: goto yy4; } -yy1379: +yy1381: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32595,7 +32639,7 @@ yy1379: case 'h': goto yy1164; default: goto yy4; } -yy1380: +yy1382: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32628,7 +32672,7 @@ yy1380: case 'X': case 'Y': case 'Z': goto yy143; - case 'S': goto yy1347; + case 'S': goto yy1349; case 'a': case 'b': case 'c': @@ -32654,10 +32698,10 @@ yy1380: case 'x': case 'y': case 'z': goto yy151; - case 's': goto yy1381; + case 's': goto yy1383; default: goto yy167; } -yy1381: +yy1383: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32690,7 +32734,7 @@ yy1381: case 'X': case 'Y': case 'Z': goto yy144; - case 'D': goto yy1348; + case 'D': goto yy1350; case 'a': case 'b': case 'c': @@ -32716,10 +32760,10 @@ yy1381: case 'x': case 'y': case 'z': goto yy152; - case 'd': goto yy1382; + case 'd': goto yy1384; default: goto yy4; } -yy1382: +yy1384: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32727,7 +32771,7 @@ yy1382: case '-': case '/': case '_': goto yy148; - case 'A': goto yy1349; + case 'A': goto yy1351; case 'B': case 'C': case 'D': @@ -32753,7 +32797,7 @@ yy1382: case 'X': case 'Y': case 'Z': goto yy145; - case 'a': goto yy1383; + case 'a': goto yy1385; case 'b': case 'c': case 'd': @@ -32781,7 +32825,7 @@ yy1382: case 'z': goto yy153; default: goto yy4; } -yy1383: +yy1385: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32818,7 +32862,7 @@ yy1383: case 'y': goto yy186; default: goto yy4; } -yy1384: +yy1386: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32826,7 +32870,7 @@ yy1384: case '-': case '/': case '_': goto yy148; - case 'A': goto yy1358; + case 'A': goto yy1360; case 'B': case 'C': case 'D': @@ -32852,7 +32896,7 @@ yy1384: case 'X': case 'Y': case 'Z': goto yy143; - case 'a': goto yy1391; + case 'a': goto yy1393; case 'b': case 'c': case 'd': @@ -32880,7 +32924,7 @@ yy1384: case 'z': goto yy151; default: goto yy4; } -yy1385: +yy1387: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32913,7 +32957,7 @@ yy1385: case 'X': case 'Y': case 'Z': goto yy143; - case 'O': goto yy1352; + case 'O': goto yy1354; case 'a': case 'b': case 'c': @@ -32939,10 +32983,10 @@ yy1385: case 'x': case 'y': case 'z': goto yy151; - case 'o': goto yy1386; + case 'o': goto yy1388; default: goto yy4; } -yy1386: +yy1388: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -32975,7 +33019,7 @@ yy1386: case 'X': case 'Y': case 'Z': goto yy144; - case 'R': goto yy1353; + case 'R': goto yy1355; case 'a': case 'b': case 'c': @@ -33001,10 +33045,10 @@ yy1386: case 'x': case 'y': case 'z': goto yy152; - case 'r': goto yy1387; + case 'r': goto yy1389; default: goto yy4; } -yy1387: +yy1389: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33037,7 +33081,7 @@ yy1387: case 'X': case 'Y': case 'Z': goto yy145; - case 'R': goto yy1354; + case 'R': goto yy1356; case 'a': case 'b': case 'c': @@ -33063,10 +33107,10 @@ yy1387: case 'x': case 'y': case 'z': goto yy153; - case 'r': goto yy1388; + case 'r': goto yy1390; default: goto yy4; } -yy1388: +yy1390: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33074,7 +33118,7 @@ yy1388: case '-': case '/': case '_': goto yy148; - case 'O': goto yy1355; + case 'O': goto yy1357; case 'a': case 'b': case 'c': @@ -33100,17 +33144,17 @@ yy1388: case 'x': case 'y': case 'z': goto yy154; - case 'o': goto yy1389; + case 'o': goto yy1391; default: goto yy4; } -yy1389: +yy1391: yych = *++YYCURSOR; switch (yych) { - case 'W': goto yy1356; - case 'w': goto yy1390; + case 'W': goto yy1358; + case 'w': goto yy1392; default: goto yy155; } -yy1390: +yy1392: yyaccept = 28; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33143,9 +33187,9 @@ yy1390: case 'x': case 'y': case 'z': goto yy154; - default: goto yy1357; + default: goto yy1359; } -yy1391: +yy1393: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33178,7 +33222,7 @@ yy1391: case 'W': case 'X': case 'Z': goto yy144; - case 'Y': goto yy1359; + case 'Y': goto yy1361; case 'a': case 'b': case 'c': @@ -33204,10 +33248,10 @@ yy1391: case 'w': case 'x': case 'z': goto yy152; - case 'y': goto yy1392; + case 'y': goto yy1394; default: goto yy4; } -yy1392: +yy1394: yyaccept = 29; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33267,9 +33311,9 @@ yy1392: case 'x': case 'y': case 'z': goto yy153; - default: goto yy1360; + default: goto yy1362; } -yy1393: +yy1395: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33301,8 +33345,8 @@ yy1393: case 'X': case 'Y': case 'Z': goto yy143; - case 'R': goto yy1367; - case 'S': goto yy1368; + case 'R': goto yy1369; + case 'S': goto yy1370; case 'a': case 'b': case 'c': @@ -33327,11 +33371,11 @@ yy1393: case 'x': case 'y': case 'z': goto yy151; - case 'r': goto yy1399; - case 's': goto yy1400; + case 'r': goto yy1401; + case 's': goto yy1402; default: goto yy4; } -yy1394: +yy1396: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33364,7 +33408,7 @@ yy1394: case 'X': case 'Y': case 'Z': goto yy143; - case 'R': goto yy1363; + case 'R': goto yy1365; case 'a': case 'b': case 'c': @@ -33390,10 +33434,10 @@ yy1394: case 'x': case 'y': case 'z': goto yy151; - case 'r': goto yy1395; + case 'r': goto yy1397; default: goto yy167; } -yy1395: +yy1397: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33426,7 +33470,7 @@ yy1395: case 'X': case 'Y': case 'Z': goto yy144; - case 'S': goto yy1364; + case 'S': goto yy1366; case 'a': case 'b': case 'c': @@ -33452,10 +33496,10 @@ yy1395: case 'x': case 'y': case 'z': goto yy152; - case 's': goto yy1396; + case 's': goto yy1398; default: goto yy4; } -yy1396: +yy1398: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33488,7 +33532,7 @@ yy1396: case 'X': case 'Y': case 'Z': goto yy145; - case 'D': goto yy1365; + case 'D': goto yy1367; case 'a': case 'b': case 'c': @@ -33514,10 +33558,10 @@ yy1396: case 'x': case 'y': case 'z': goto yy153; - case 'd': goto yy1397; + case 'd': goto yy1399; default: goto yy4; } -yy1397: +yy1399: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33525,8 +33569,8 @@ yy1397: case '-': case '/': case '_': goto yy148; - case 'A': goto yy1366; - case 'a': goto yy1398; + case 'A': goto yy1368; + case 'a': goto yy1400; case 'b': case 'c': case 'd': @@ -33554,14 +33598,14 @@ yy1397: case 'z': goto yy154; default: goto yy4; } -yy1398: +yy1400: yych = *++YYCURSOR; switch (yych) { case 'Y': goto yy173; case 'y': goto yy186; default: goto yy155; } -yy1399: +yy1401: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33623,7 +33667,7 @@ yy1399: case 'd': goto yy1208; default: goto yy4; } -yy1400: +yy1402: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33687,7 +33731,7 @@ yy1400: case 'z': goto yy152; default: goto yy4; } -yy1401: +yy1403: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33720,7 +33764,7 @@ yy1401: case 'X': case 'Y': case 'Z': goto yy143; - case 'T': goto yy1370; + case 'T': goto yy1372; case 'a': case 'b': case 'c': @@ -33746,10 +33790,10 @@ yy1401: case 'x': case 'y': case 'z': goto yy151; - case 't': goto yy1402; + case 't': goto yy1404; default: goto yy4; } -yy1402: +yy1404: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -33811,7 +33855,7 @@ yy1402: case 'h': goto yy1208; default: goto yy4; } -yy1403: +yy1405: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -33864,12 +33908,12 @@ yy1403: case 'x': case 'z': goto yy142; case 'R': - case 'r': goto yy1415; + case 'r': goto yy1417; case 'Y': - case 'y': goto yy1416; + case 'y': goto yy1418; default: goto yy4; } -yy1404: +yy1406: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -33924,10 +33968,10 @@ yy1404: case 'y': case 'z': goto yy142; case 'D': - case 'd': goto yy1409; + case 'd': goto yy1411; default: goto yy4; } -yy1405: +yy1407: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -33982,10 +34026,10 @@ yy1405: case 'y': case 'z': goto yy142; case 'N': - case 'n': goto yy1406; + case 'n': goto yy1408; default: goto yy4; } -yy1406: +yy1408: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -34040,15 +34084,15 @@ yy1406: case 'y': case 'z': goto yy143; case 'D': - case 'd': goto yy1407; + case 'd': goto yy1409; default: goto yy167; } -yy1407: +yy1409: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; case 'A': - case 'a': goto yy1408; + case 'a': goto yy1410; case 'B': case 'C': case 'D': @@ -34101,7 +34145,7 @@ yy1407: case 'z': goto yy144; default: goto yy4; } -yy1408: +yy1410: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -34159,7 +34203,7 @@ yy1408: case 'y': goto yy1176; default: goto yy4; } -yy1409: +yy1411: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -34214,10 +34258,10 @@ yy1409: case 'y': case 'z': goto yy143; case 'N': - case 'n': goto yy1410; + case 'n': goto yy1412; default: goto yy4; } -yy1410: +yy1412: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -34272,10 +34316,10 @@ yy1410: case 'y': case 'z': goto yy144; case 'I': - case 'i': goto yy1411; + case 'i': goto yy1413; default: goto yy4; } -yy1411: +yy1413: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -34330,29 +34374,29 @@ yy1411: case 'y': case 'z': goto yy145; case 'G': - case 'g': goto yy1412; + case 'g': goto yy1414; default: goto yy4; } -yy1412: +yy1414: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ')': goto yy140; case 'H': - case 'h': goto yy1413; + case 'h': goto yy1415; default: goto yy4; } -yy1413: +yy1415: yych = *++YYCURSOR; switch (yych) { case 'T': - case 't': goto yy1414; + case 't': goto yy1416; default: goto yy57; } -yy1414: +yy1416: yych = *++YYCURSOR; - goto yy1360; -yy1415: + goto yy1362; +yy1417: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34422,10 +34466,10 @@ yy1415: case 'y': case 'z': goto yy143; case 'C': - case 'c': goto yy1417; + case 'c': goto yy1419; default: goto yy194; } -yy1416: +yy1418: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34498,7 +34542,7 @@ yy1416: case 'z': goto yy143; default: goto yy194; } -yy1417: +yy1419: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -34556,7 +34600,7 @@ yy1417: case 'h': goto yy336; default: goto yy4; } -yy1418: +yy1420: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34588,8 +34632,8 @@ yy1418: case 'W': case 'X': case 'Z': goto yy142; - case 'R': goto yy1415; - case 'Y': goto yy1416; + case 'R': goto yy1417; + case 'Y': goto yy1418; case 'a': case 'b': case 'c': @@ -34614,11 +34658,11 @@ yy1418: case 'w': case 'x': case 'z': goto yy147; - case 'r': goto yy1430; - case 'y': goto yy1431; + case 'r': goto yy1432; + case 'y': goto yy1433; default: goto yy4; } -yy1419: +yy1421: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34651,7 +34695,7 @@ yy1419: case 'X': case 'Y': case 'Z': goto yy142; - case 'D': goto yy1409; + case 'D': goto yy1411; case 'a': case 'b': case 'c': @@ -34677,10 +34721,10 @@ yy1419: case 'x': case 'y': case 'z': goto yy147; - case 'd': goto yy1424; + case 'd': goto yy1426; default: goto yy4; } -yy1420: +yy1422: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34713,7 +34757,7 @@ yy1420: case 'X': case 'Y': case 'Z': goto yy142; - case 'N': goto yy1406; + case 'N': goto yy1408; case 'a': case 'b': case 'c': @@ -34739,10 +34783,10 @@ yy1420: case 'x': case 'y': case 'z': goto yy147; - case 'n': goto yy1421; + case 'n': goto yy1423; default: goto yy4; } -yy1421: +yy1423: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34775,7 +34819,7 @@ yy1421: case 'X': case 'Y': case 'Z': goto yy143; - case 'D': goto yy1407; + case 'D': goto yy1409; case 'a': case 'b': case 'c': @@ -34801,10 +34845,10 @@ yy1421: case 'x': case 'y': case 'z': goto yy151; - case 'd': goto yy1422; + case 'd': goto yy1424; default: goto yy167; } -yy1422: +yy1424: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34812,7 +34856,7 @@ yy1422: case '-': case '/': case '_': goto yy148; - case 'A': goto yy1408; + case 'A': goto yy1410; case 'B': case 'C': case 'D': @@ -34838,7 +34882,7 @@ yy1422: case 'X': case 'Y': case 'Z': goto yy144; - case 'a': goto yy1423; + case 'a': goto yy1425; case 'b': case 'c': case 'd': @@ -34866,7 +34910,7 @@ yy1422: case 'z': goto yy152; default: goto yy4; } -yy1423: +yy1425: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34928,7 +34972,7 @@ yy1423: case 'y': goto yy1205; default: goto yy4; } -yy1424: +yy1426: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -34961,7 +35005,7 @@ yy1424: case 'X': case 'Y': case 'Z': goto yy143; - case 'N': goto yy1410; + case 'N': goto yy1412; case 'a': case 'b': case 'c': @@ -34987,10 +35031,10 @@ yy1424: case 'x': case 'y': case 'z': goto yy151; - case 'n': goto yy1425; + case 'n': goto yy1427; default: goto yy4; } -yy1425: +yy1427: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -35023,7 +35067,7 @@ yy1425: case 'X': case 'Y': case 'Z': goto yy144; - case 'I': goto yy1411; + case 'I': goto yy1413; case 'a': case 'b': case 'c': @@ -35049,10 +35093,10 @@ yy1425: case 'x': case 'y': case 'z': goto yy152; - case 'i': goto yy1426; + case 'i': goto yy1428; default: goto yy4; } -yy1426: +yy1428: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -35085,7 +35129,7 @@ yy1426: case 'X': case 'Y': case 'Z': goto yy145; - case 'G': goto yy1412; + case 'G': goto yy1414; case 'a': case 'b': case 'c': @@ -35111,10 +35155,10 @@ yy1426: case 'x': case 'y': case 'z': goto yy153; - case 'g': goto yy1427; + case 'g': goto yy1429; default: goto yy4; } -yy1427: +yy1429: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -35122,7 +35166,7 @@ yy1427: case '-': case '/': case '_': goto yy148; - case 'H': goto yy1413; + case 'H': goto yy1415; case 'a': case 'b': case 'c': @@ -35148,17 +35192,17 @@ yy1427: case 'x': case 'y': case 'z': goto yy154; - case 'h': goto yy1428; + case 'h': goto yy1430; default: goto yy4; } -yy1428: +yy1430: yych = *++YYCURSOR; switch (yych) { - case 'T': goto yy1414; - case 't': goto yy1429; + case 'T': goto yy1416; + case 't': goto yy1431; default: goto yy155; } -yy1429: +yy1431: yyaccept = 29; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -35191,9 +35235,9 @@ yy1429: case 'x': case 'y': case 'z': goto yy154; - default: goto yy1360; + default: goto yy1362; } -yy1430: +yy1432: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -35239,7 +35283,7 @@ yy1430: case 'X': case 'Y': case 'Z': goto yy143; - case 'C': goto yy1417; + case 'C': goto yy1419; case 'a': case 'b': case 'd': @@ -35265,10 +35309,10 @@ yy1430: case 'x': case 'y': case 'z': goto yy151; - case 'c': goto yy1432; + case 'c': goto yy1434; default: goto yy194; } -yy1431: +yy1433: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -35343,7 +35387,7 @@ yy1431: case 'z': goto yy151; default: goto yy194; } -yy1432: +yy1434: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -35405,7 +35449,7 @@ yy1432: case 'h': goto yy347; default: goto yy4; } -yy1433: +yy1435: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -35456,14 +35500,14 @@ yy1433: case 'y': case 'z': goto yy142; case 'O': - case 'o': goto yy1441; + case 'o': goto yy1443; case 'V': - case 'v': goto yy1442; + case 'v': goto yy1444; case 'W': - case 'w': goto yy1439; + case 'w': goto yy1441; default: goto yy4; } -yy1434: +yy1436: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -35518,10 +35562,10 @@ yy1434: case 'y': case 'z': goto yy142; case 'X': - case 'x': goto yy1438; + case 'x': goto yy1440; default: goto yy4; } -yy1435: +yy1437: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -35576,10 +35620,10 @@ yy1435: case 'y': case 'z': goto yy142; case 'N': - case 'n': goto yy1436; + case 'n': goto yy1438; default: goto yy4; } -yy1436: +yy1438: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -35634,10 +35678,10 @@ yy1436: case 'y': case 'z': goto yy143; case 'T': - case 't': goto yy1437; + case 't': goto yy1439; default: goto yy4; } -yy1437: +yy1439: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -35695,7 +35739,7 @@ yy1437: case 'h': goto yy1179; default: goto yy4; } -yy1438: +yy1440: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -35750,10 +35794,10 @@ yy1438: case 'y': case 'z': goto yy143; case 'T': - case 't': goto yy1368; + case 't': goto yy1370; default: goto yy4; } -yy1439: +yy1441: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case ')': goto yy140; @@ -35809,9 +35853,9 @@ yy1439: case 'x': case 'y': case 'z': goto yy143; - default: goto yy1440; + default: goto yy1442; } -yy1440: +yy1442: { DEBUG_OUTPUT("now"); TIMELIB_INIT; @@ -35819,7 +35863,7 @@ yy1440: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1441: +yy1443: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -35874,10 +35918,10 @@ yy1441: case 'y': case 'z': goto yy143; case 'N': - case 'n': goto yy1447; + case 'n': goto yy1449; default: goto yy4; } -yy1442: +yy1444: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -35947,10 +35991,10 @@ yy1442: case 'y': case 'z': goto yy143; case 'E': - case 'e': goto yy1443; + case 'e': goto yy1445; default: goto yy194; } -yy1443: +yy1445: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -36005,10 +36049,10 @@ yy1443: case 'y': case 'z': goto yy144; case 'M': - case 'm': goto yy1444; + case 'm': goto yy1446; default: goto yy4; } -yy1444: +yy1446: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -36063,26 +36107,26 @@ yy1444: case 'y': case 'z': goto yy145; case 'B': - case 'b': goto yy1445; + case 'b': goto yy1447; default: goto yy4; } -yy1445: +yy1447: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ')': goto yy140; case 'E': - case 'e': goto yy1446; + case 'e': goto yy1448; default: goto yy4; } -yy1446: +yy1448: yych = *++YYCURSOR; switch (yych) { case 'R': case 'r': goto yy205; default: goto yy57; } -yy1447: +yy1449: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case ')': goto yy140; @@ -36138,9 +36182,9 @@ yy1447: case 'x': case 'y': case 'z': goto yy144; - default: goto yy1448; + default: goto yy1450; } -yy1448: +yy1450: { DEBUG_OUTPUT("noon"); TIMELIB_INIT; @@ -36151,7 +36195,7 @@ yy1448: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1449: +yy1451: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36182,9 +36226,9 @@ yy1449: case 'X': case 'Y': case 'Z': goto yy142; - case 'O': goto yy1441; - case 'V': goto yy1442; - case 'W': goto yy1439; + case 'O': goto yy1443; + case 'V': goto yy1444; + case 'W': goto yy1441; case 'a': case 'b': case 'c': @@ -36208,12 +36252,12 @@ yy1449: case 'x': case 'y': case 'z': goto yy147; - case 'o': goto yy1456; - case 'v': goto yy1457; - case 'w': goto yy1455; + case 'o': goto yy1458; + case 'v': goto yy1459; + case 'w': goto yy1457; default: goto yy4; } -yy1450: +yy1452: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36246,7 +36290,7 @@ yy1450: case 'W': case 'Y': case 'Z': goto yy142; - case 'X': goto yy1438; + case 'X': goto yy1440; case 'a': case 'b': case 'c': @@ -36272,10 +36316,10 @@ yy1450: case 'w': case 'y': case 'z': goto yy147; - case 'x': goto yy1454; + case 'x': goto yy1456; default: goto yy4; } -yy1451: +yy1453: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36308,7 +36352,7 @@ yy1451: case 'X': case 'Y': case 'Z': goto yy142; - case 'N': goto yy1436; + case 'N': goto yy1438; case 'a': case 'b': case 'c': @@ -36334,10 +36378,10 @@ yy1451: case 'x': case 'y': case 'z': goto yy147; - case 'n': goto yy1452; + case 'n': goto yy1454; default: goto yy4; } -yy1452: +yy1454: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36370,7 +36414,7 @@ yy1452: case 'X': case 'Y': case 'Z': goto yy143; - case 'T': goto yy1437; + case 'T': goto yy1439; case 'a': case 'b': case 'c': @@ -36396,10 +36440,10 @@ yy1452: case 'x': case 'y': case 'z': goto yy151; - case 't': goto yy1453; + case 't': goto yy1455; default: goto yy4; } -yy1453: +yy1455: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36461,7 +36505,7 @@ yy1453: case 'h': goto yy1208; default: goto yy4; } -yy1454: +yy1456: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36494,7 +36538,7 @@ yy1454: case 'X': case 'Y': case 'Z': goto yy143; - case 'T': goto yy1368; + case 'T': goto yy1370; case 'a': case 'b': case 'c': @@ -36520,10 +36564,10 @@ yy1454: case 'x': case 'y': case 'z': goto yy151; - case 't': goto yy1400; + case 't': goto yy1402; default: goto yy4; } -yy1455: +yy1457: yyaccept = 30; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36583,9 +36627,9 @@ yy1455: case 'x': case 'y': case 'z': goto yy151; - default: goto yy1440; + default: goto yy1442; } -yy1456: +yy1458: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36618,7 +36662,7 @@ yy1456: case 'X': case 'Y': case 'Z': goto yy143; - case 'N': goto yy1447; + case 'N': goto yy1449; case 'a': case 'b': case 'c': @@ -36644,10 +36688,10 @@ yy1456: case 'x': case 'y': case 'z': goto yy151; - case 'n': goto yy1462; + case 'n': goto yy1464; default: goto yy4; } -yy1457: +yy1459: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36693,7 +36737,7 @@ yy1457: case 'X': case 'Y': case 'Z': goto yy143; - case 'E': goto yy1443; + case 'E': goto yy1445; case 'a': case 'b': case 'c': @@ -36719,10 +36763,10 @@ yy1457: case 'x': case 'y': case 'z': goto yy151; - case 'e': goto yy1458; + case 'e': goto yy1460; default: goto yy194; } -yy1458: +yy1460: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36755,7 +36799,7 @@ yy1458: case 'X': case 'Y': case 'Z': goto yy144; - case 'M': goto yy1444; + case 'M': goto yy1446; case 'a': case 'b': case 'c': @@ -36781,10 +36825,10 @@ yy1458: case 'x': case 'y': case 'z': goto yy152; - case 'm': goto yy1459; + case 'm': goto yy1461; default: goto yy4; } -yy1459: +yy1461: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36817,7 +36861,7 @@ yy1459: case 'X': case 'Y': case 'Z': goto yy145; - case 'B': goto yy1445; + case 'B': goto yy1447; case 'a': case 'c': case 'd': @@ -36843,10 +36887,10 @@ yy1459: case 'x': case 'y': case 'z': goto yy153; - case 'b': goto yy1460; + case 'b': goto yy1462; default: goto yy4; } -yy1460: +yy1462: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36854,7 +36898,7 @@ yy1460: case '-': case '/': case '_': goto yy148; - case 'E': goto yy1446; + case 'E': goto yy1448; case 'a': case 'b': case 'c': @@ -36880,17 +36924,17 @@ yy1460: case 'x': case 'y': case 'z': goto yy154; - case 'e': goto yy1461; + case 'e': goto yy1463; default: goto yy4; } -yy1461: +yy1463: yych = *++YYCURSOR; switch (yych) { case 'R': goto yy205; case 'r': goto yy317; default: goto yy155; } -yy1462: +yy1464: yyaccept = 31; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -36950,9 +36994,9 @@ yy1462: case 'x': case 'y': case 'z': goto yy152; - default: goto yy1448; + default: goto yy1450; } -yy1463: +yy1465: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -37007,10 +37051,10 @@ yy1463: case 'y': case 'z': goto yy142; case 'S': - case 's': goto yy1464; + case 's': goto yy1466; default: goto yy4; } -yy1464: +yy1466: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -37065,10 +37109,10 @@ yy1464: case 'y': case 'z': goto yy143; case 'T': - case 't': goto yy1465; + case 't': goto yy1467; default: goto yy4; } -yy1465: +yy1467: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -37123,10 +37167,10 @@ yy1465: case 'y': case 'z': goto yy144; case 'E': - case 'e': goto yy1466; + case 'e': goto yy1468; default: goto yy4; } -yy1466: +yy1468: yych = *++YYCURSOR; switch (yych) { case ')': goto yy140; @@ -37181,35 +37225,35 @@ yy1466: case 'y': case 'z': goto yy145; case 'R': - case 'r': goto yy1467; + case 'r': goto yy1469; default: goto yy4; } -yy1467: +yy1469: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ')': goto yy140; case 'D': - case 'd': goto yy1468; + case 'd': goto yy1470; default: goto yy4; } -yy1468: +yy1470: yych = *++YYCURSOR; switch (yych) { case 'A': - case 'a': goto yy1469; + case 'a': goto yy1471; default: goto yy57; } -yy1469: +yy1471: yych = *++YYCURSOR; switch (yych) { case 'Y': - case 'y': goto yy1470; + case 'y': goto yy1472; default: goto yy57; } -yy1470: +yy1472: ++YYCURSOR; -yy1471: +yy1473: { DEBUG_OUTPUT("yesterday"); TIMELIB_INIT; @@ -37220,7 +37264,7 @@ yy1471: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1472: +yy1474: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -37253,7 +37297,7 @@ yy1472: case 'X': case 'Y': case 'Z': goto yy142; - case 'S': goto yy1464; + case 'S': goto yy1466; case 'a': case 'b': case 'c': @@ -37279,10 +37323,10 @@ yy1472: case 'x': case 'y': case 'z': goto yy147; - case 's': goto yy1473; + case 's': goto yy1475; default: goto yy4; } -yy1473: +yy1475: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -37315,7 +37359,7 @@ yy1473: case 'X': case 'Y': case 'Z': goto yy143; - case 'T': goto yy1465; + case 'T': goto yy1467; case 'a': case 'b': case 'c': @@ -37341,10 +37385,10 @@ yy1473: case 'x': case 'y': case 'z': goto yy151; - case 't': goto yy1474; + case 't': goto yy1476; default: goto yy4; } -yy1474: +yy1476: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -37377,7 +37421,7 @@ yy1474: case 'X': case 'Y': case 'Z': goto yy144; - case 'E': goto yy1466; + case 'E': goto yy1468; case 'a': case 'b': case 'c': @@ -37403,10 +37447,10 @@ yy1474: case 'x': case 'y': case 'z': goto yy152; - case 'e': goto yy1475; + case 'e': goto yy1477; default: goto yy4; } -yy1475: +yy1477: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -37439,7 +37483,7 @@ yy1475: case 'X': case 'Y': case 'Z': goto yy145; - case 'R': goto yy1467; + case 'R': goto yy1469; case 'a': case 'b': case 'c': @@ -37465,10 +37509,10 @@ yy1475: case 'x': case 'y': case 'z': goto yy153; - case 'r': goto yy1476; + case 'r': goto yy1478; default: goto yy4; } -yy1476: +yy1478: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -37476,7 +37520,7 @@ yy1476: case '-': case '/': case '_': goto yy148; - case 'D': goto yy1468; + case 'D': goto yy1470; case 'a': case 'b': case 'c': @@ -37502,24 +37546,24 @@ yy1476: case 'x': case 'y': case 'z': goto yy154; - case 'd': goto yy1477; + case 'd': goto yy1479; default: goto yy4; } -yy1477: +yy1479: yych = *++YYCURSOR; switch (yych) { - case 'A': goto yy1469; - case 'a': goto yy1478; + case 'A': goto yy1471; + case 'a': goto yy1480; default: goto yy155; } -yy1478: +yy1480: yych = *++YYCURSOR; switch (yych) { - case 'Y': goto yy1470; - case 'y': goto yy1479; + case 'Y': goto yy1472; + case 'y': goto yy1481; default: goto yy155; } -yy1479: +yy1481: yyaccept = 32; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -37552,7 +37596,7 @@ yy1479: case 'x': case 'y': case 'z': goto yy154; - default: goto yy1471; + default: goto yy1473; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-10712.patch�����������������������������������������������������������������0000664�0000000�0000000�00000073346�13252477432�013341� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 6297a117d77fa3a0df2e21ca926a92c231819cd5 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 16 Jan 2016 22:10:54 -0800 Subject: [PATCH] Fixed bug #71323 - Output of stream_get_meta_data can be falsified by its input --- ext/standard/streamsfuncs.c | 20 ++-- ext/standard/tests/streams/bug71323.phpt | 31 ++++++ .../streams/stream_get_meta_data_dir_basic.phpt | 16 ++-- .../streams/stream_get_meta_data_file_basic.phpt | 12 +-- .../stream_get_meta_data_file_variation1.phpt | 104 ++++++++++----------- .../stream_get_meta_data_file_variation2.phpt | 46 ++++----- .../stream_get_meta_data_file_variation4.phpt | 20 ++-- .../stream_get_meta_data_file_variation5.phpt | 24 ++--- .../stream_get_meta_data_process_basic.phpt | 12 +-- .../streams/stream_get_meta_data_socket_basic.phpt | 12 +-- .../stream_get_meta_data_socket_variation1.phpt | 44 ++++----- .../stream_get_meta_data_socket_variation2.phpt | 46 ++++----- .../stream_get_meta_data_socket_variation3.phpt | 36 +++---- .../stream_get_meta_data_socket_variation4.phpt | 34 +++---- main/streams/memory.c | 30 +++--- 15 files changed, 260 insertions(+), 227 deletions(-) create mode 100644 ext/standard/tests/streams/bug71323.phpt Index: php5-5.5.9+dfsg/ext/standard/streamsfuncs.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/streamsfuncs.c 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/streamsfuncs.c 2018-03-15 10:11:30.505236526 -0400 @@ -492,6 +492,12 @@ PHP_FUNCTION(stream_get_meta_data) array_init(return_value); + if (!php_stream_populate_meta_data(stream, return_value)) { + add_assoc_bool(return_value, "timed_out", 0); + add_assoc_bool(return_value, "blocked", 1); + add_assoc_bool(return_value, "eof", php_stream_eof(stream)); + } + if (stream->wrapperdata) { MAKE_STD_ZVAL(newval); MAKE_COPY_ZVAL(&stream->wrapperdata, newval); @@ -527,12 +533,6 @@ PHP_FUNCTION(stream_get_meta_data) add_assoc_string(return_value, "uri", stream->orig_path, 1); } - if (!php_stream_populate_meta_data(stream, return_value)) { - add_assoc_bool(return_value, "timed_out", 0); - add_assoc_bool(return_value, "blocked", 1); - add_assoc_bool(return_value, "eof", php_stream_eof(stream)); - } - } /* }}} */ @@ -692,7 +692,7 @@ static int stream_array_from_fd_set(zval } else { /* HASH_KEY_IS_STRING */ zend_hash_update(new_hash, key, key_len, (void *)elem, sizeof(zval *), (void **)&dest_elem); } - + if (dest_elem) { zval_add_ref(dest_elem); } @@ -1449,7 +1449,7 @@ PHP_FUNCTION(stream_set_chunk_size) php_error_docref(NULL TSRMLS_CC, E_WARNING, "The chunk size must be a positive integer, given %ld", csize); RETURN_FALSE; } - /* stream.chunk_size is actually a size_t, but php_stream_set_option + /* stream.chunk_size is actually a size_t, but php_stream_set_option * can only use an int to accept the new value and return the old one. * In any case, values larger than INT_MAX for a chunk size make no sense. */ @@ -1457,11 +1457,11 @@ PHP_FUNCTION(stream_set_chunk_size) php_error_docref(NULL TSRMLS_CC, E_WARNING, "The chunk size cannot be larger than %d", INT_MAX); RETURN_FALSE; } - + php_stream_from_zval(stream, &zstream); ret = php_stream_set_option(stream, PHP_STREAM_OPTION_SET_CHUNK_SIZE, (int)csize, NULL); - + RETURN_LONG(ret > 0 ? (long)ret : (long)EOF); } /* }}} */ Index: php5-5.5.9+dfsg/ext/standard/tests/streams/bug71323.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/bug71323.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -0,0 +1,31 @@ +--TEST-- +Bug #71323: Output of stream_get_meta_data can be falsified by its input +--FILE-- +<?php +$file = 'data:text/plain;z=y;uri=eviluri;mediatype=wut?;mediatype2=hello,somedata'; +$meta = stream_get_meta_data(fopen($file, "r")); +var_dump($meta); +?> +--EXPECTF-- +array(10) { + ["mediatype"]=> + string(10) "text/plain" + ["z"]=> + string(1) "y" + ["uri"]=> + string(72) "data:text/plain;z=y;uri=eviluri;mediatype=wut?;mediatype2=hello,somedata" + ["mediatype2"]=> + string(5) "hello" + ["base64"]=> + bool(false) + ["wrapper_type"]=> + string(7) "RFC2397" + ["stream_type"]=> + string(7) "RFC2397" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) +} Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_dir_basic.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_dir_basic.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_dir_basic.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -13,6 +13,12 @@ var_dump(stream_get_meta_data($dirObject ?> --EXPECT-- array(8) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -23,14 +29,14 @@ array(8) { int(0) ["seekable"]=> bool(true) +} +array(8) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(8) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -41,10 +47,4 @@ array(8) { int(0) ["seekable"]=> bool(true) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_basic.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_file_basic.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_basic.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -12,6 +12,12 @@ fclose($fp); ?> --EXPECTF-- array(9) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -24,10 +30,4 @@ array(9) { bool(true) ["uri"]=> string(%i) "%sstream_get_meta_data_file_basic.php" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_variation1.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_file_variation1.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_variation1.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -29,6 +29,12 @@ unlink($filename); ?> --EXPECTF-- array(9) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -41,14 +47,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -61,14 +67,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -81,14 +87,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -101,14 +107,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -121,14 +127,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -141,14 +147,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -161,14 +167,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -181,14 +187,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -201,14 +207,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -221,14 +227,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -241,14 +247,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -261,14 +267,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -281,14 +287,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -301,14 +307,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -321,14 +327,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -341,14 +347,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -361,14 +367,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -381,14 +387,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -401,14 +407,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -421,14 +427,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -441,14 +447,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -461,14 +467,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -481,14 +487,14 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -501,10 +507,4 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_variation2.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_file_variation2.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_variation2.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -43,6 +43,12 @@ unlink($filename); --EXPECTF-- Write some data to the file: array(9) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -55,12 +61,6 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } @@ -68,6 +68,12 @@ Read a line of the file, causing data to string(15) "a line of data " array(9) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -80,17 +86,17 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" +} + + +Read 20 bytes from the file: +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - - -Read 20 bytes from the file: -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -103,17 +109,17 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Read entire file: array(9) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(true) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -126,10 +132,4 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s.tmp" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(true) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_variation4.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_file_variation4.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_variation4.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -28,6 +28,12 @@ unlink($filename); --EXPECTF-- Create a file: array(9) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -40,16 +46,16 @@ array(9) { bool(true) ["uri"]=> string(%i) "File://%sstream_get_meta_data_file_variation4.php.tmp" +} + +Change to file's directory and open with a relative path: +array(9) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - -Change to file's directory and open with a relative path: -array(9) { ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -62,10 +68,4 @@ array(9) { bool(true) ["uri"]=> string(%i) "stream_get_meta_data_file_variation4.php.tmp" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_variation5.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_file_variation5.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_file_variation5.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -33,6 +33,12 @@ unlink($filename); --EXPECTF-- Write some data to the file: array(9) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -45,17 +51,17 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Read entire file: array(9) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(true) ["wrapper_type"]=> string(9) "plainfile" ["stream_type"]=> @@ -68,10 +74,4 @@ array(9) { bool(true) ["uri"]=> string(%i) "%s" - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(true) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_process_basic.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_process_basic.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_process_basic.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -18,6 +18,12 @@ echo "Done"; ?> --EXPECT-- array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(5) "STDIO" ["mode"]=> @@ -26,11 +32,5 @@ array(7) { int(0) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Done Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_basic.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_socket_basic.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_basic.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -10,6 +10,12 @@ fclose($tcp_socket); ?> --EXPECTF-- array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -18,10 +24,4 @@ array(7) { int(0) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_variation1.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_socket_variation1.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_variation1.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -39,6 +39,12 @@ var_dump(stream_get_meta_data($client)); --EXPECTF-- Write some data: array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -47,17 +53,17 @@ array(7) { int(0) ["seekable"]=> bool(false) +} + + +Read a line from the client, causing data to be buffered: +array(7) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - - -Read a line from the client, causing data to be buffered: -array(7) { ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -66,17 +72,17 @@ array(7) { int(15) ["seekable"]=> bool(false) +} + + +Read 3 bytes of data from the client: +array(7) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - - -Read 3 bytes of data from the client: -array(7) { ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -85,17 +91,17 @@ array(7) { int(12) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Close the server side socket and read the remaining data from the client: array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(true) ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -104,10 +110,4 @@ array(7) { int(0) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(true) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_variation2.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_socket_variation2.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_variation2.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -37,25 +37,12 @@ fclose($server); ?> --EXPECTF-- array(7) { - ["stream_type"]=> - string(%d) "tcp_socke%s" - ["mode"]=> - string(2) "r+" - ["unread_bytes"]=> - int(0) - ["seekable"]=> - bool(false) ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - - -Set a timeout on the client and attempt a read: -array(7) { ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -64,17 +51,17 @@ array(7) { int(0) ["seekable"]=> bool(false) +} + + +Set a timeout on the client and attempt a read: +array(7) { ["timed_out"]=> bool(true) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - - -Write some data from the server: -array(7) { ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -83,17 +70,17 @@ array(7) { int(0) ["seekable"]=> bool(false) +} + + +Write some data from the server: +array(7) { ["timed_out"]=> bool(true) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - - -Read some data from the client: -array(7) { ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -102,10 +89,23 @@ array(7) { int(0) ["seekable"]=> bool(false) +} + + +Read some data from the client: +array(7) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) + ["stream_type"]=> + string(%d) "tcp_socke%s" + ["mode"]=> + string(2) "r+" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(false) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_variation3.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_socket_variation3.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_variation3.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -32,6 +32,12 @@ fclose($server); ?> --EXPECTF-- array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -40,18 +46,18 @@ array(7) { int(0) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Set blocking to false: bool(true) array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(false) + ["eof"]=> + bool(false) ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -60,18 +66,18 @@ array(7) { int(0) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(false) - ["eof"]=> - bool(false) } Set blocking to true: bool(true) array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -80,10 +86,4 @@ array(7) { int(0) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Index: php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_variation4.phpt =================================================================== --- php5-5.5.9+dfsg.orig/ext/standard/tests/streams/stream_get_meta_data_socket_variation4.phpt 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/ext/standard/tests/streams/stream_get_meta_data_socket_variation4.phpt 2018-03-15 10:11:30.505236526 -0400 @@ -37,6 +37,12 @@ fclose($client); --EXPECTF-- Write some data: array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -45,17 +51,17 @@ array(7) { int(%i) ["seekable"]=> bool(false) +} + + +Read a line from the client: +array(7) { ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) -} - - -Read a line from the client: -array(7) { ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -64,17 +70,17 @@ array(7) { int(%i) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(false) } Close the server side socket and read the remaining data from the client: array(7) { + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(true) ["stream_type"]=> string(%d) "tcp_socke%s" ["mode"]=> @@ -83,10 +89,4 @@ array(7) { int(%i) ["seekable"]=> bool(false) - ["timed_out"]=> - bool(false) - ["blocked"]=> - bool(true) - ["eof"]=> - bool(true) } Index: php5-5.5.9+dfsg/main/streams/memory.c =================================================================== --- php5-5.5.9+dfsg.orig/main/streams/memory.c 2018-03-15 10:11:30.529236554 -0400 +++ php5-5.5.9+dfsg/main/streams/memory.c 2018-03-15 10:11:30.509236530 -0400 @@ -204,7 +204,7 @@ static int php_stream_memory_stat(php_st memset(ssb, 0, sizeof(php_stream_statbuf)); /* read-only across the board */ - + ssb->sb.st_mode = ms->mode & TEMP_STREAM_READONLY ? 0444 : 0666; ssb->sb.st_size = ms->fsize; @@ -243,7 +243,7 @@ static int php_stream_memory_set_option( { php_stream_memory_data *ms = (php_stream_memory_data*)stream->abstract; size_t newsize; - + switch(option) { case PHP_STREAM_OPTION_TRUNCATE_API: switch (value) { @@ -272,7 +272,7 @@ static int php_stream_memory_set_option( } } /* }}} */ - + PHPAPI php_stream_ops php_stream_memory_ops = { php_stream_memory_write, php_stream_memory_read, php_stream_memory_close, php_stream_memory_flush, @@ -296,7 +296,7 @@ PHPAPI php_stream *_php_stream_memory_cr self->fsize = 0; self->smax = ~0u; self->mode = mode; - + stream = php_stream_alloc_rel(&php_stream_memory_ops, self, 0, mode & TEMP_STREAM_READONLY ? "rb" : "w+b"); stream->flags |= PHP_STREAM_FLAG_NO_BUFFER; return stream; @@ -312,7 +312,7 @@ PHPAPI php_stream *_php_stream_memory_op if ((stream = php_stream_memory_create_rel(mode)) != NULL) { ms = (php_stream_memory_data*)stream->abstract; - + if (mode == TEMP_STREAM_READONLY || mode == TEMP_STREAM_TAKE_BUFFER) { /* use the buffer directly */ ms->data = buf; @@ -391,11 +391,11 @@ static size_t php_stream_temp_read(php_s if (!ts->innerstream) { return -1; } - + got = php_stream_read(ts->innerstream, buf, count); - + stream->eof = ts->innerstream->eof; - + return got; } /* }}} */ @@ -414,7 +414,7 @@ static int php_stream_temp_close(php_str } else { ret = 0; } - + if (ts->meta) { zval_ptr_dtor(&ts->meta); } @@ -452,7 +452,7 @@ static int php_stream_temp_seek(php_stre ret = php_stream_seek(ts->innerstream, offset, whence); *newoffs = php_stream_tell(ts->innerstream); stream->eof = ts->innerstream->eof; - + return ret; } /* }}} */ @@ -494,7 +494,7 @@ static int php_stream_temp_cast(php_stre file = php_stream_fopen_tmpfile(); php_stream_write(file, membuf, memsize); pos = php_stream_tell(ts->innerstream); - + php_stream_free_enclosed(ts->innerstream, PHP_STREAM_FREE_CLOSE); ts->innerstream = file; php_stream_encloses(stream, ts->innerstream); @@ -518,7 +518,7 @@ static int php_stream_temp_stat(php_stre static int php_stream_temp_set_option(php_stream *stream, int option, int value, void *ptrparam TSRMLS_DC) /* {{{ */ { php_stream_temp_data *ts = (php_stream_temp_data*)stream->abstract; - + switch(option) { case PHP_STREAM_OPTION_META_DATA_API: if (ts->meta) { @@ -630,7 +630,7 @@ static php_stream * php_stream_url_wrap_ dlen -= mlen; semi = memchr(path, ';', mlen); sep = memchr(path, '/', mlen); - + if (!semi && !sep) { php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "rfc2397: illegal media type"); return NULL; @@ -673,7 +673,9 @@ static php_stream * php_stream_url_wrap_ plen = sep - path; vlen = (semi ? semi - sep : mlen - plen) - 1 /* '=' */; key = estrndup(path, plen); - add_assoc_stringl_ex(meta, key, plen + 1, sep + 1, vlen, 1); + if (plen != sizeof("mediatype")-1 || memcmp(key, "mediatype", sizeof("mediatype")-1)) { + add_assoc_stringl_ex(meta, key, plen + 1, sep + 1, vlen, 1); + } efree(key); plen += vlen + 1; mlen -= plen; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2017-9228.patch������������������������������������������������������������������0000664�0000000�0000000�00000001606�13141102013�013233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 703be4f77e662837b64499b0d046a5c8d06a98b9 Mon Sep 17 00:00:00 2001 From: Remi Collet <remi@php.net> Date: Tue, 30 May 2017 15:40:32 +0200 Subject: [PATCH] Patch from the upstream git https://github.com/kkos/oniguruma/issues/60 (CVE-2017-9228) Thanks to Mamoru TASAKA <mtasaka@fedoraproject.org> --- ext/mbstring/oniguruma/regparse.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) Index: php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/mbstring/oniguruma/regparse.c 2017-08-04 10:26:17.374849803 -0400 +++ php5-5.5.9+dfsg/ext/mbstring/oniguruma/regparse.c 2017-08-04 10:26:17.370849803 -0400 @@ -4065,7 +4065,9 @@ next_state_class(CClassNode* cc, OnigCod } } - *state = CCS_VALUE; + if (*state != CCS_START) + *state = CCS_VALUE; + *type = CCV_CLASS; return 0; } ��������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2016-7130.patch������������������������������������������������������������������0000664�0000000�0000000�00000004022�12773246343�013244� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 698a691724c0a949295991e5df091ce16f899e02 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 7 Aug 2016 16:26:52 -0700 Subject: [PATCH] Fix bug #72750: wddx_deserialize null dereference --- ext/wddx/tests/bug72750.phpt | 34 ++++++++++++++++++++++++++++++++++ ext/wddx/wddx.c | 8 ++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 ext/wddx/tests/bug72750.phpt Index: php5-5.5.9+dfsg/ext/wddx/tests/bug72750.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/wddx/tests/bug72750.phpt 2016-09-29 13:18:25.481957161 -0400 @@ -0,0 +1,34 @@ +--TEST-- +Bug #72750: wddx_deserialize null dereference +--SKIPIF-- +<?php +if (!extension_loaded('wddx')) { + die('skip. wddx not available'); +} +?> +--FILE-- +<?php + +$xml = <<< XML +<?xml version='1.0'?> +<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> +<wddxPacket version='1.0'> +<header/> + <data> + <struct> + <var name='aBinary'> + <binary length='11'>\\tYmluYXJRhdGE=</binary> + </var> + </struct> + </data> +</wddxPacket> +XML; + +$array = wddx_deserialize($xml); +var_dump($array); +?> +--EXPECT-- +array(1) { + ["aBinary"]=> + string(0) "" +} Index: php5-5.5.9+dfsg/ext/wddx/wddx.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/wddx/wddx.c 2016-09-29 13:18:25.485957206 -0400 +++ php5-5.5.9+dfsg/ext/wddx/wddx.c 2016-09-29 13:18:25.481957161 -0400 @@ -949,8 +949,12 @@ new_str = php_base64_decode(Z_STRVAL_P(ent1->data), Z_STRLEN_P(ent1->data), &new_len); STR_FREE(Z_STRVAL_P(ent1->data)); - Z_STRVAL_P(ent1->data) = new_str; - Z_STRLEN_P(ent1->data) = new_len; + if (new_str) { + Z_STRVAL_P(ent1->data) = new_str; + Z_STRLEN_P(ent1->data) = new_len; + } else { + ZVAL_EMPTY_STRING(ent1->data); + } } /* Call __wakeup() method on the object. */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-3587.patch������������������������������������������������������������������0000664�0000000�0000000�00000001255�12401741043�013244� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 7ba1409a1aee5925180de546057ddd84ff267947 Mon Sep 17 00:00:00 2001 From: Remi Collet <rcollet@redhat.com> Date: Thu, 14 Aug 2014 17:19:03 -0700 Subject: [PATCH] Fix bug #67716 - Segfault in cdf.c diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index 429f3b9..2c0a2d9 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -820,7 +820,7 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h, q = (const uint8_t *)(const void *) ((const char *)(const void *)p + ofs - 2 * sizeof(uint32_t)); - if (q > e) { + if (q < p || q > e) { DPRINTF(("Ran of the end %p > %p\n", q, e)); goto out; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/qdbm-is-usr_include_qdbm.patch�������������������������������������������������������0000664�0000000�0000000�00000001037�12300436054�016507� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: Look for qdbm under $prefix/include/qdbm too. The Debian package ships the header files under that directory, for unknown reasons. Origin: vendor Forwarded: not-needed Last-Update: 2010-02-21 --- php5.orig/ext/dba/config.m4 +++ php5/ext/dba/config.m4 @@ -113,6 +113,10 @@ if test "$PHP_QDBM" != "no"; then THIS_PREFIX=$i THIS_INCLUDE=$i/include/depot.h break + elif test -f "$i/include/qdbm/depot.h"; then + THIS_PREFIX=$i + THIS_INCLUDE=$i/include/qdbm/depot.h + break fi done �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2015-8994-2.patch����������������������������������������������������������������0000664�0000000�0000000�00000002064�13141100505�013404� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 8202b970777b84d57c590b78f9b6572ef0e0c205 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov <dmitry@zend.com> Date: Wed, 16 Nov 2016 23:01:40 +0300 Subject: [PATCH] Use full path --- ext/opcache/ZendAccelerator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: php5-5.5.9+dfsg/ext/opcache/ZendAccelerator.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/opcache/ZendAccelerator.c 2017-08-04 10:14:27.474875808 -0400 +++ php5-5.5.9+dfsg/ext/opcache/ZendAccelerator.c 2017-08-04 10:14:27.458875808 -0400 @@ -1579,7 +1579,7 @@ zend_op_array *persistent_compile_file(z if (EXPECTED(persistent_script != NULL) && UNEXPECTED(ZCG(accel_directives).validate_permission) && file_handle->type == ZEND_HANDLE_FILENAME && - UNEXPECTED(access(file_handle->filename, R_OK) != 0)) { + UNEXPECTED(access(persistent_script->full_path, R_OK) != 0)) { if (type == ZEND_REQUIRE) { #if ZEND_EXTENSION_API_NO < PHP_5_3_X_API_NO zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-3669.patch������������������������������������������������������������������0000664�0000000�0000000�00000004457�12423726131�013261� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 9aa90145239bae82d2af0a99fdae4ab27eb5f4f2 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sun, 28 Sep 2014 14:19:31 -0700 Subject: [PATCH] Fixed bug #68044: Integer overflow in unserialize() (32-bits only) --- ext/standard/tests/serialize/bug68044.phpt | 12 ++++++++++++ ext/standard/var_unserializer.c | 4 ++-- ext/standard/var_unserializer.re | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 ext/standard/tests/serialize/bug68044.phpt Index: php5-5.5.12+dfsg/ext/standard/tests/serialize/bug68044.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.12+dfsg/ext/standard/tests/serialize/bug68044.phpt 2014-10-28 10:37:25.675315917 -0400 @@ -0,0 +1,12 @@ +--TEST-- +Bug #68044 Integer overflow in unserialize() (32-bits only) +--FILE-- +<?php + echo unserialize('C:3:"XYZ":18446744075857035259:{}'); +?> +===DONE== +--EXPECTF-- +Warning: Insufficient data for unserializing - %d required, 1 present in %s/bug68044.php on line 2 + +Notice: unserialize(): Error at offset 32 of 33 bytes in %s/bug68044.php on line 2 +===DONE== Index: php5-5.5.12+dfsg/ext/standard/var_unserializer.c =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/var_unserializer.c 2014-10-28 10:37:25.679315952 -0400 +++ php5-5.5.12+dfsg/ext/standard/var_unserializer.c 2014-10-28 10:37:25.679315952 -0400 @@ -369,7 +369,7 @@ (*p) += 2; - if (datalen < 0 || (*p) + datalen >= max) { + if (datalen < 0 || (max - (*p)) <= datalen) { zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, (long)(max - (*p))); return 0; } Index: php5-5.5.12+dfsg/ext/standard/var_unserializer.re =================================================================== --- php5-5.5.12+dfsg.orig/ext/standard/var_unserializer.re 2014-10-28 10:37:25.679315952 -0400 +++ php5-5.5.12+dfsg/ext/standard/var_unserializer.re 2014-10-28 10:37:25.679315952 -0400 @@ -375,7 +375,7 @@ (*p) += 2; - if (datalen < 0 || (*p) + datalen >= max) { + if (datalen < 0 || (max - (*p)) <= datalen) { zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, (long)(max - (*p))); return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/libtool2.2.patch���������������������������������������������������������������������0000664�0000000�0000000�00000002321�12300436054�013521� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- php5.orig/scripts/phpize.in +++ php5/scripts/phpize.in @@ -6,10 +6,16 @@ datarootdir='@datarootdir@' exec_prefix="`eval echo @exec_prefix@`" phpdir="$prefix/lib/php5/build" includedir="$prefix/include/php5" +aclocaldir="$prefix/share/aclocal" builddir="`pwd`" SED="@SED@" -FILES_BUILD="mkdep.awk scan_makefile_in.awk shtool libtool.m4" +FILES_BUILD="mkdep.awk scan_makefile_in.awk shtool" +if [ -f "$aclocaldir/ltsugar.m4" ]; then + LIBTOOL_FILES="libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4" +else + LIBTOOL_FILES="libtool.m4" +fi FILES="acinclude.m4 Makefile.global config.sub config.guess ltmain.sh run-tests*.php" CLEAN_FILES="$FILES *.o *.lo *.la .deps .libs/ build/ modules/ install-sh \ mkinstalldirs missing config.nice config.sub config.guess configure configure.in \ @@ -145,8 +151,9 @@ phpize_copy_files() test -d build || mkdir build (cd "$phpdir" && cp $FILES_BUILD "$builddir"/build) + (cd "$aclocaldir" && cp $LIBTOOL_FILES "$builddir"/build) (cd "$phpdir" && cp $FILES "$builddir") - (cd "$builddir" && cat acinclude.m4 ./build/libtool.m4 > aclocal.m4) + (cd "$builddir/build" && cat ../acinclude.m4 $LIBTOOL_FILES > ../aclocal.m4) } phpize_replace_prefix() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2014-2270.patch������������������������������������������������������������������0000664�0000000�0000000�00000010426�12317331202�013226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From: Remi Collet <remi@php.net> Date: Tue, 4 Mar 2014 19:32:52 +0000 (+0100) Subject: Fixed Bug #66820 out-of-bounds memory access in fileinfo X-Git-Tag: php-5.4.27RC1~14 X-Git-Url: http://72.52.91.13:8000/?p=php-src.git;a=commitdiff_plain;h=a33759fd275b32ed0bbe89796fe2953b3cb0b41f Fixed Bug #66820 out-of-bounds memory access in fileinfo Upstream fix: https://github.com/glensc/file/commit/447558595a3650db2886cd2f416ad0beba965801 Notice, test changed, with upstream agreement: -define OFFSET_OOB(n, o, i) ((n) < (o) || (i) >= ((n) - (o))) +define OFFSET_OOB(n, o, i) ((n) < (o) || (i) > ((n) - (o))) --- Index: php5-5.5.9+dfsg/ext/fileinfo/libmagic/softmagic.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/fileinfo/libmagic/softmagic.c 2014-04-03 15:12:00.234287501 -0400 +++ php5-5.5.9+dfsg/ext/fileinfo/libmagic/softmagic.c 2014-04-03 15:12:00.226287501 -0400 @@ -67,6 +67,8 @@ private void cvt_32(union VALUETYPE *, const struct magic *); private void cvt_64(union VALUETYPE *, const struct magic *); +#define OFFSET_OOB(n, o, i) ((n) < (o) || (i) > ((n) - (o))) + /* * softmagic - lookup one file in parsed, in-memory copy of database * Passed the name and FILE * of one file to be typed. @@ -1171,7 +1173,7 @@ } switch (cvt_flip(m->in_type, flip)) { case FILE_BYTE: - if (nbytes < (offset + 1)) + if (OFFSET_OOB(nbytes, offset, 1)) return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { @@ -1206,7 +1208,7 @@ offset = ~offset; break; case FILE_BESHORT: - if (nbytes < (offset + 2)) + if (OFFSET_OOB(nbytes, offset, 2)) return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { @@ -1258,7 +1260,7 @@ offset = ~offset; break; case FILE_LESHORT: - if (nbytes < (offset + 2)) + if (OFFSET_OOB(nbytes, offset, 2)) return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { @@ -1310,7 +1312,7 @@ offset = ~offset; break; case FILE_SHORT: - if (nbytes < (offset + 2)) + if (OFFSET_OOB(nbytes, offset, 2)) return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { @@ -1347,7 +1349,7 @@ break; case FILE_BELONG: case FILE_BEID3: - if (nbytes < (offset + 4)) + if (OFFSET_OOB(nbytes, offset, 4)) return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { @@ -1418,7 +1420,7 @@ break; case FILE_LELONG: case FILE_LEID3: - if (nbytes < (offset + 4)) + if (OFFSET_OOB(nbytes, offset, 4)) return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { @@ -1488,7 +1490,7 @@ offset = ~offset; break; case FILE_MELONG: - if (nbytes < (offset + 4)) + if (OFFSET_OOB(nbytes, offset, 4)) return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { @@ -1558,7 +1560,7 @@ offset = ~offset; break; case FILE_LONG: - if (nbytes < (offset + 4)) + if (OFFSET_OOB(nbytes, offset, 4)) return 0; if (off) { switch (m->in_op & FILE_OPS_MASK) { @@ -1630,14 +1632,14 @@ /* Verify we have enough data to match magic type */ switch (m->type) { case FILE_BYTE: - if (nbytes < (offset + 1)) /* should always be true */ + if (OFFSET_OOB(nbytes, offset, 1)) return 0; break; case FILE_SHORT: case FILE_BESHORT: case FILE_LESHORT: - if (nbytes < (offset + 2)) + if (OFFSET_OOB(nbytes, offset, 2)) return 0; break; @@ -1656,33 +1658,33 @@ case FILE_FLOAT: case FILE_BEFLOAT: case FILE_LEFLOAT: - if (nbytes < (offset + 4)) + if (OFFSET_OOB(nbytes, offset, 4)) return 0; break; case FILE_DOUBLE: case FILE_BEDOUBLE: case FILE_LEDOUBLE: - if (nbytes < (offset + 8)) + if (OFFSET_OOB(nbytes, offset, 8)) return 0; break; case FILE_STRING: case FILE_PSTRING: case FILE_SEARCH: - if (nbytes < (offset + m->vallen)) + if (OFFSET_OOB(nbytes, offset, m->vallen)) return 0; break; case FILE_REGEX: - if (nbytes < offset) + if (OFFSET_OOB(nbytes, offset, 0)) return 0; break; case FILE_INDIRECT: if (offset == 0) return 0; - if (nbytes < offset) + if (OFFSET_OOB(nbytes, offset, 0)) return 0; sbuf = ms->o.buf; soffset = ms->offset; @@ -1708,7 +1710,7 @@ return rv; case FILE_USE: - if (nbytes < offset) + if (OFFSET_OOB(nbytes, offset, 0)) return 0; sbuf = m->value.s; if (*sbuf == '^') { ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/lp564920-fix-big-files.patch���������������������������������������������������������0000664�0000000�0000000�00000001501�12300436054�015362� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: don't mmap large files Author: Marc Deslauriers <marc.deslauriers@ubuntu.com> Bug: http://bugs.php.net/bug.php?id=52102 Ubuntu-Bug: https://bugs.edge.launchpad.net/ubuntu/+source/php5/+bug/564920 --- php5.orig/main/streams/plain_wrapper.c +++ php5/main/streams/plain_wrapper.c @@ -633,7 +631,13 @@ static int php_stdiop_set_option(php_str switch (value) { case PHP_STREAM_MMAP_SUPPORTED: - return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK; + if (fd == -1) + return PHP_STREAM_OPTION_RETURN_ERR; + /* Don't mmap large files */ + do_fstat(data, 1); + if (data->sb.st_size > 4 * 1024 * 1024) + return PHP_STREAM_OPTION_RETURN_ERR; + return PHP_STREAM_OPTION_RETURN_OK; case PHP_STREAM_MMAP_MAP_RANGE: do_fstat(data, 1); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/CVE-2019-9020.patch������������������������������������������������������������������0000664�0000000�0000000�00000003313�13437472020�013240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������From 9c62b95e5e6a1ac3922a8819f2d56d8ea998d97a Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev <stas@php.net> Date: Sat, 29 Dec 2018 17:56:36 -0800 Subject: [PATCH] Fix bug #77242 (heap out of bounds read in xmlrpc_decode()) --- ext/xmlrpc/libxmlrpc/xml_element.c | 3 +++ ext/xmlrpc/tests/bug77242.phpt | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 ext/xmlrpc/tests/bug77242.phpt Index: php5-5.5.9+dfsg/ext/xmlrpc/libxmlrpc/xml_element.c =================================================================== --- php5-5.5.9+dfsg.orig/ext/xmlrpc/libxmlrpc/xml_element.c 2019-03-05 08:05:17.628121621 -0500 +++ php5-5.5.9+dfsg/ext/xmlrpc/libxmlrpc/xml_element.c 2019-03-05 08:05:17.624121611 -0500 @@ -723,6 +723,9 @@ xml_element* xml_elem_parse_buf(const ch long byte_idx = XML_GetCurrentByteIndex(parser); /* int byte_total = XML_GetCurrentByteCount(parser); */ const char * error_str = XML_ErrorString(err_code); + if(byte_idx > len) { + byte_idx = len; + } if(byte_idx >= 0) { snprintf(buf, sizeof(buf), Index: php5-5.5.9+dfsg/ext/xmlrpc/tests/bug77242.phpt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ php5-5.5.9+dfsg/ext/xmlrpc/tests/bug77242.phpt 2019-03-05 08:05:17.624121611 -0500 @@ -0,0 +1,10 @@ +--TEST-- +Bug #77242 (heap out of bounds read in xmlrpc_decode()) +--SKIPIF-- +<?php if (!extension_loaded("xmlrpc")) print "skip"; ?> +--FILE-- +<?php +var_dump(xmlrpc_decode(base64_decode("PD94bWwgdmVyc2lvbmVuY29kaW5nPSJJU084ODU5NyKkpKSkpKSkpKSkpKSkpKSkpKSkpKSk"))); +?> +--EXPECT-- +NULL \ No newline at end of file ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/patches/php-fpm-m68k.patch�������������������������������������������������������������������0000664�0000000�0000000�00000003167�12300436054�013776� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Description: add Linux/m68k atomic code Origin: libgcc 4.7 Bug: https://bugs.php.net/bug.php?id=60925 Author: Thorsten Glaser <tg@debian.org> --- php5.orig/sapi/fpm/fpm/fpm_atomic.h +++ php5/sapi/fpm/fpm/fpm_atomic.h @@ -5,6 +5,12 @@ #ifndef FPM_ATOMIC_H #define FPM_ATOMIC_H 1 +#if defined(__m68k__) +#define _GNU_SOURCE +#include <unistd.h> +#include <sys/syscall.h> +#endif + #if HAVE_INTTYPES_H # include <inttypes.h> #else @@ -137,6 +143,34 @@ static inline atomic_uint_t atomic_cmp_s #error Sparc v8 and predecessors are not and will not be supported (see bug report 53310) #endif /* #if (__sparcv9 || __sparcv9__) */ +#elif defined(__m68k__) && defined(__linux__) + +typedef signed int atomic_int_t __attribute__((__aligned__(4))); +typedef unsigned int atomic_uint_t __attribute__((__aligned__(4))); +typedef volatile unsigned int atomic_t __attribute__((__aligned__(4))); + +#ifndef SYS_atomic_cmpxchg_32 +#define SYS_atomic_cmpxchg_32 335 +#endif + +static inline atomic_uint_t atomic_cas_32(atomic_t *lock, atomic_uint_t old, atomic_uint_t new) /* {{{ */ +{ + register atomic_t *a0 asm("a0") = lock; + register atomic_uint_t d2 asm("d2") = old; + register atomic_uint_t d1 asm("d1") = new; + register atomic_uint_t d0 asm("d0") = SYS_atomic_cmpxchg_32; + + asm volatile("trap #0" : "+r" (d0), "+r" (d1), "+r" (a0) : "r" (d2) : "memory", "a1"); + return (d0); +} +/* }}} */ + +static inline atomic_uint_t atomic_cmp_set(atomic_t *lock, atomic_uint_t old, atomic_uint_t set) /* {{{ */ +{ + return (atomic_cas_32(lock, old, set) == old); +} +/* }}} */ + #else #error Unsupported processor. Please open a bug report (bugs.php.net). ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/source_php5.py�������������������������������������������������������������������������������0000664�0000000�0000000�00000003544�12300436325�012002� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/python '''PHP5 Apport interface Copyright (C) 2010 Canonical Ltd. Author: Chuck Short <chuck.short@canonical.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See http://www.gnu.org/copyleft/gpl.html for the full text of the license. ''' import os import subprocess from apport.hookutils import * def _add_my_conf_files(report, filename): if not os.path.exists(filename): return key = 'PHPConf' + path_to_key(filename) report[key] = "" for line in read_file(filename).split('\n'): try: if 'mysql.default_password ' in line.split('=')[0]: line = "%s = @@APPORTREPLACED@@" % (line.split('=')[0]) if 'mysqli.default_pw ' in line.split('=')[0]: line = "%s = @@APPORTREPLACED@@" % (line.split('=')[0]) if 'ifx.default_password ' in line.split('=')[0]: line = "%s = @@APPORTREPLACED@@" % (line.split('=')[0]) report[key] += line + '\n' except IndexError: continue def add_info(report): _add_my_conf_files(report, '/etc/php5/apache2/php.ini') _add_my_conf_files(report, '/etc/php5/cli/php5.ini') # packages in main packages=['php5', 'php-common', 'libapache2-mod-php5', 'libapache2-mod-php5filter' 'php5-cgi', 'php5-cli', 'php5-dev', 'php5-dbg', 'php-pear', 'php5-curl', 'php5-gd' 'php5-gmp', 'php5-ldap', 'php5-mhash', 'php5-mysql', 'php5-odbc', 'php5-pgsql', 'php5-pspell', 'php5-recode', 'php5-snmp', 'php5-sqlite', 'php5-sybase', 'php5-tidy', 'php5-xmlrpc', 'php5-xsl'] versions = '' for package in packages: try: version = packaging.get_version(package) except ValueError: version = 'N/A' if version is None: version = 'N/A' versions += '%s %s\n' %(package, version) report['PHPInstalledModules'] = versions ������������������������������������������������������������������������������������������������������������������������������������������������������������debian/php5-fpm.postinst.extra����������������������������������������������������������������������0000664�0000000�0000000�00000000321�12300436054�013544� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������if [ "$1" = "triggered" ] && [ "$2" = "/etc/php5/fpm/conf.d" ]; then invoke-rc.d php5-fpm restart fi dpkg-maintscript-helper mv_conffile /etc/php5/fpm/main.conf /etc/php5/fpm/php-fpm.conf 5.3.5-1 -- "$@" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/maxlifetime����������������������������������������������������������������������������������0000664�0000000�0000000�00000001235�12300436054�011415� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh -e max=1440 if which php5 >/dev/null 2>&1; then for sapi in apache2 apache2filter cgi fpm; do if [ -e /etc/php5/${sapi}/php.ini ]; then cur=$(php5 -c /etc/php5/${sapi}/php.ini -d "error_reporting='~E_ALL'" -r 'print ini_get("session.gc_maxlifetime");') [ -z "$cur" ] && cur=0 [ "$cur" -gt "$max" ] && max=$cur fi done else for ini in /etc/php5/*/php.ini /etc/php5/conf.d/*.ini; do cur=$(sed -n -e 's/^[[:space:]]*session.gc_maxlifetime[[:space:]]*=[[:space:]]*\([0-9]\+\).*$/\1/p' $ini 2>/dev/null || true); [ -z "$cur" ] && cur=0 [ "$cur" -gt "$max" ] && max=$cur done fi echo $(($max/60)) exit 0 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/php5-fpm.triggers����������������������������������������������������������������������������0000664�0000000�0000000�00000000036�12300436054�012370� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������interest /etc/php5/fpm/conf.d ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/php5-module.postinst�������������������������������������������������������������������������0000664�0000000�0000000�00000001677�12300436054�013144� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e #EXTRA# if [ "$1" = "configure" ]; then inidir=/etc/php5/mods-available if [ -e /usr/share/php5/php5-maintscript-helper ] ; then . /usr/share/php5/php5-maintscript-helper for dsoname in @modules@; do inifile=${dsoname}.ini # Register new conffile with UCF ucf /usr/share/php5/@package@/${inifile} ${inidir}/${inifile} ucfr --force php5-@package@ ${inidir}/${inifile} # Move pre-extension manager conffile dpkg-maintscript-helper mv_conffile /etc/php5/conf.d/${inifile} ${inidir}/${inifile} 5.4.0~rc6-1 -- "$@"; if [ -f "${inidir}/${inifile}.dpkg-new" ]; then md5sum="$(md5sum ${inidir}/${inifile}.dpkg-new | sed -e 's/ .*//')" old_md5sum="$(md5sum ${inidir}/${inifile} | sed -e 's/ .*//')" if [ "$md5sum" = "$old_md5sum" ]; then mv "${inidir}/${inifile}.dpkg-new" "${inidir}/${inifile}" fi fi php5_invoke enmod ALL ${dsoname} done fi fi #DEBHELPER# exit 0 �����������������������������������������������������������������debian/php5-module.postrm���������������������������������������������������������������������������0000664�0000000�0000000�00000002045�12300436054�012573� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e #EXTRA# inidir=/etc/php5/mods-available for dsoname in @modules@; do inifile=${dsoname}.ini dpkg-maintscript-helper mv_conffile /etc/php5/conf.d/${inifile} ${inidir}/${inifile} 5.4.0~rc6-1 -- "$@"; if [ "$1" = "purge" ]; then # Query which package has this conffile registered if which ucfq >/dev/null; then ucfp=$(ucfq -w ${inidir}/${inifile} | cut -f 2 -d:) fi # Only work with the config file if it still belongs to us if test "$ucfp" = php5-@package@; then for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist; do rm -f ${inidir}/${inifile}${ext} done rm -f ${inidir}/${inifile} if which ucf >/dev/null; then ucf --purge ${inidir}/${inifile} fi if which ucfr >/dev/null; then ucfr --purge php5-@package@ ${inidir}/${inifile} fi fi if [ -e /usr/share/php5/php5-maintscript-helper ] ; then . /usr/share/php5/php5-maintscript-helper for dsoname in @modules@; do php5_invoke dismod ALL ${dsoname} done fi fi done #DEBHELPER# exit 0 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/changelog������������������������������������������������������������������������������������0000664�0000000�0000000�00001103227�13457376511�011064� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������php5 (5.5.9+dfsg-1ubuntu4.29) trusty-security; urgency=medium * SECURITY UPDATE: Unauthorized users access - debian/patches/CVE-2019-9637.patch: fix in main/streams/plain_wrapper.c. - CVE-2019-9637 * SECURITY UPDATE: Invalid read in exif_process_IFD_MAKERNOTE - debian/patches/CVE-2019-9638-and-CVE-2019-9639-*.patch: fix in ext/exif/exif.c, added tests in ext/exif/tests/bug77563.jpg, ext/exif/tests/bug77563.phpt. - CVE-2019-9638 - CVE-2019-9639 * SECURITY UPDATE: Invalid read - debian/patches/CVE-2019-9640.patch: fix in ext/exif/exif.c, added tests in ext/exif/tests/bug77540.jpg, ext/exif/tests/bug77540.phpt. - CVE-2019-9640 * SECURITY UPDATE: Unitialized read - debian/patches/CVE-2019-9641.patch: fix in ext/exif/exif.c. - CVE-2019-9641 * SECURITY UPDATE: Buffer overflow - debian/patches/CVE-2019-9675.patch: fix in ext/phar/tar.c, added tests, ext/phar/tests/bug77586,phpt, ext/phar/tests/bug77586/files/*. - CVE-2019-9675 * Changed the way MAKERNOTE is handled in case we do not have a matching signature, in order to support tests CVE-2019-9638 and CVE-2019-9639. - debian/patches/Changed-the-way-MAKERNOTE-is-handled-in-case.patch: fix it changing the behavior in order to continue the parse in ext/exif/exif.c * SECURITY UPDATE: buffer over-read in dns_get_record - debian/patches/CVE-2019-9022.patch: check length in ext/standard/dns.c. - CVE-2019-9022 -- Leonidas S. Barbosa <leo.barbosa@canonical.com> Mon, 22 Apr 2019 14:39:52 -0300 php5 (5.5.9+dfsg-1ubuntu4.27) trusty-security; urgency=medium * SECURITY UPDATE: invalid memory access in xmlrpc_decode() - debian/patches/CVE-2019-9020.patch: check length in ext/xmlrpc/libxmlrpc/xml_element.c, added test to ext/xmlrpc/tests/bug77242.phpt. - CVE-2019-9020 * SECURITY UPDATE: buffer over-read in PHAR extension - debian/patches/CVE-2019-9021.patch: properly calculate position in ext/phar/phar.c, added test to ext/phar/tests/bug77247.phpt. - CVE-2019-9021 * SECURITY UPDATE: buffer over-reads in mbstring regex functions - debian/patches/CVE-2019-9023-1.patch: don't read past buffer in ext/mbstring/oniguruma/regparse.c, added test to ext/mbstring/tests/bug77370.phpt. - debian/patches/CVE-2019-9023-2.patch: check bounds in ext/mbstring/oniguruma/regcomp.c, added test to ext/mbstring/tests/bug77371.phpt. - debian/patches/CVE-2019-9023-3.patch: add length checks to ext/mbstring/oniguruma/enc/unicode.c, ext/mbstring/oniguruma/regcomp.c, ext/mbstring/oniguruma/regparse.c, ext/mbstring/oniguruma/regparse.h, added test to ext/mbstring/tests/bug77371.phpt, ext/mbstring/tests/bug77381.phpt. - debian/patches/CVE-2019-9023-4.patch: add new bounds checks to ext/mbstring/oniguruma/enc/utf16_be.c, ext/mbstring/oniguruma/enc/utf16_le.c, ext/mbstring/oniguruma/enc/utf32_be.c, ext/mbstring/oniguruma/enc/utf32_le.c, added test to ext/mbstring/tests/bug77418.phpt. - CVE-2019-9023 * SECURITY UPDATE: buffer over-read in xmlrpc_decode() - debian/patches/CVE-2019-9024.patch: fix variable size in ext/xmlrpc/libxmlrpc/base64.c, added test to ext/xmlrpc/tests/bug77380.phpt. - CVE-2019-9024 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Tue, 05 Mar 2019 08:12:08 -0500 php5 (5.5.9+dfsg-1ubuntu4.26) trusty-security; urgency=medium * SECURITY UPDATE: denial of service in exif parsing - debian/patches/CVE-2018-14851.patch: check length in ext/exif/exif.c. - CVE-2018-14851 * SECURITY UPDATE: denial of service in exif parsing - debian/patches/CVE-2018-14883.patch: check length in ext/exif/exif.c. - CVE-2018-14883 * SECURITY UPDATE: XSS due to the header Transfer-Encoding: chunked - debian/patches/bug76582.patch: clean up brigade in sapi/apache2handler/sapi_apache2.c. - No CVE number -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 17 Sep 2018 03:45:24 -0400 php5 (5.5.9+dfsg-1ubuntu4.25) trusty-security; urgency=medium * SECURITY UPDATE: opcache access controls bypass - debian/patches/CVE-2018-10545.patch: do not set PR_SET_DUMPABLE by default in sapi/fpm/fpm/fpm_conf.c, sapi/fpm/fpm/fpm_conf.h, sapi/fpm/fpm/fpm_unix.c, sapi/fpm/php-fpm.conf.in. - CVE-2018-10545 * SECURITY UPDATE: infinite loop in iconv stream filter - debian/patches/CVE-2018-10546-1.patch: fail on invalid sequences in ext/iconv/iconv.c, ext/iconv/tests/bug76249.phpt. - debian/patches/CVE-2018-10546-2.patch: fix tsrm_ls in ext/iconv/iconv.c. - CVE-2018-10546 * SECURITY UPDATE: XSS on PHAR error pages - debian/patches/CVE-2018-10547.patch: remove potential unfiltered outputs in ext/phar/phar_object.c, fix tests in ext/phar/tests/*. - CVE-2018-10547 * SECURITY UPDATE: DoS via ldap_get_dn return value mishandling - debian/patches/CVE-2018-10548.patch: check dn in ext/ldap/ldap.c, add test to ext/ldap/tests/bug76248.phpt. - CVE-2018-10548 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 10 May 2018 08:10:41 -0400 php5 (5.5.9+dfsg-1ubuntu4.24) trusty-security; urgency=medium * SECURITY UPDATE: stream_get_meta_data issue - debian/patches/CVE-2016-10712.patch: properly handle metadata in ext/standard/streamsfuncs.c, ext/standard/tests/*, main/streams/memory.c. - debian/patches/CVE-2016-10712-2.patch: fix various tests. - CVE-2016-10712 * SECURITY UPDATE: stack-based under-read in HTTP response parsing - debian/patches/CVE-2018-7584.patch: prevent reading beyond buffer start in ext/standard/http_fopen_wrapper.c, ext/standard/tests/http/bug75981.phpt. - CVE-2018-7584 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 15 Mar 2018 10:11:53 -0400 php5 (5.5.9+dfsg-1ubuntu4.23) trusty-security; urgency=medium * SECURITY UPDATE: buffer over-read while unserializing untrusted data - debian/patches/CVE-2017-12933.patch: add check to ext/standard/var_unserializer.*, add test to ext/standard/tests/serialize/bug74111.phpt, adjust test in ext/standard/tests/serialize/bug25378.phpt. - CVE-2017-12933 * SECURITY UPDATE: information leak in php_parse_date function - debian/patches/CVE-2017-16642.patch: fix backof/frontof in ext/date/lib/parse_date.*, fix test in ext/date/tests/bug53437_var3.phpt, added test to ext/wddx/tests/bug75055.*. - CVE-2017-16642 * SECURITY UPDATE: XSS in PHAR error page - debian/patches/CVE-2018-5712.patch: remove file name from output to avoid XSS in ext/phar/shortarc.php, ext/phar/stub.h, fix tests in ext/phar/tests/*. - CVE-2018-5712 * SECURITY REGRESSION: exif_read_data broken (LP: #1633031) - debian/patches/CVE-2016-6291-regression.patch: add DJI signatures to the MAKERNOTE and its supported tags in ext/exif/exif.c. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 08 Feb 2018 08:24:11 -0500 php5 (5.5.9+dfsg-1ubuntu4.22) trusty-security; urgency=medium * SECURITY UPDATE: Zend OpCache shared memory issue - debian/patches/CVE-2015-8994-1.patch: check cached files permissions in ext/opcache/ZendAccelerator.*, ext/opcache/zend_accelerator_hash.c, ext/opcache/zend_accelerator_module.c. - debian/patches/CVE-2015-8994-2.patch: use full path in ext/opcache/ZendAccelerator.c. - debian/patches/CVE-2015-8994-3.patch: handle big inodes in ext/opcache/ZendAccelerator.c. - CVE-2015-8994 * SECURITY UPDATE: URL check bypass - debian/patches/CVE-2016-10397-1.patch: fix logic in ext/standard/url.c, added tests to ext/standard/tests/url/bug73192.phpt, ext/standard/tests/url/parse_url_basic_00*.phpt. - debian/patches/CVE-2016-10397-2.patch: respect length argument in ext/standard/url.c. - CVE-2016-10397 * SECURITY UPDATE: wddx empty boolean tag parsing issue - debian/patches/CVE-2017-11143-1.patch: handle empty tag in ext/wddx/wddx.c, added test to ext/wddx/tests/bug74145.*. - debian/patches/CVE-2017-11143-2.patch: improve fix in ext/wddx/wddx.c. - CVE-2017-11143 * SECURITY UPDATE: DoS in OpenSSL sealing function - debian/patches/CVE-2017-11144.patch: check return code in ext/openssl/openssl.c, added test to ext/openssl/tests/*74651*. - CVE-2017-11144 * SECURITY UPDATE: information leak in the date extension - debian/patches/CVE-2017-11145.patch: fix parsing of strange formats in ext/date/lib/parse_date.*. - CVE-2017-11145 * SECURITY UPDATE: buffer overread in phar_parse_pharfile - debian/patches/CVE-2017-11147.patch: use proper sizes in ext/phar/phar.c. - CVE-2017-11147 * SECURITY UPDATE: DoS via long locale - debian/patches/CVE-2017-11362.patch: check length in ext/intl/msgformat/msgformat_parse.c. - CVE-2017-11362 * SECURITY UPDATE: buffer overflow in the zend_ini_do_op() - debian/patches/CVE-2017-11628.patch: use correct buffer size in Zend/zend_ini_parser.y, added tests to Zend/tests/bug74603.*. - CVE-2017-11628 * SECURITY UPDATE: out-of-bounds read in oniguruma in mbstring - debian/patches/CVE-2017-9224.patch: fix logic in ext/mbstring/oniguruma/regexec.c. - CVE-2017-9224 * SECURITY UPDATE: heap out-of-bounds write in oniguruma in mbstring - debian/patches/CVE-2017-9226.patch: add checks to ext/mbstring/oniguruma/regparse.c. - CVE-2017-9226 * SECURITY UPDATE: stack out-of-bounds read in oniguruma in mbstring - debian/patches/CVE-2017-9227.patch: add bounds check to ext/mbstring/oniguruma/regexec.c. - CVE-2017-9227 * SECURITY UPDATE: heap out-of-bounds write in oniguruma in mbstring - debian/patches/CVE-2017-9228.patch: add check to ext/mbstring/oniguruma/regexec.c. - CVE-2017-9228 * SECURITY UPDATE: invalid pointer dereference in oniguruma in mbstring - debian/patches/CVE-2017-9229.patch: fix logic in ext/mbstring/oniguruma/regexec.c. - CVE-2017-9229 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 04 Aug 2017 10:26:27 -0400 php5 (5.5.9+dfsg-1ubuntu4.21) trusty-security; urgency=medium * SECURITY UPDATE: overflow in locale_get_display_name - debian/patches/CVE-2014-9912.patch: check locale name length in ext/intl/locale/locale_methods.c, added test to ext/intl/tests/bug67397.phpt. - debian/patches/CVE-2014-9912-2.patch: fix test in ext/intl/tests/bug62082.phpt. - CVE-2014-9912 * SECURITY UPDATE: infinite loop via crafted serialized data - debian/patches/CVE-2016-7478-pre.patch: don't unset the default value in Zend/zend_exceptions.c, fix tests in ext/standard/tests/serialize/bug69152.phpt, ext/standard/tests/serialize/bug69793.phpt. - debian/patches/CVE-2016-7478-pre2.patch: fix test in ext/standard/tests/serialize/bug69793.phpt. - debian/patches/CVE-2016-7478.patch: fix memcpy in Zend/zend_exceptions.c, ext/bcmath/libbcmath/src/init.c, ext/bcmath/libbcmath/src/outofmem.c. - CVE-2016-7478 * SECURITY UPDATE: arbitrary code execution via crafted serialized data - debian/patches/CVE-2016-7479-pre.patch: fix null pointer dereference in ext/standard/var_unserializer.*, added test to standard/tests/serialize/bug68545.phpt. - debian/patches/CVE-2016-7479.patch: implement delayed __wakeup in ext/standard/var_unserializer.*. - CVE-2016-7479 * SECURITY UPDATE: denial of service via crafted serialized data - debian/patches/CVE-2016-9137.patch: fix use-after-free in Zend/zend_API.*, ext/curl/curl_file.c, added test to ext/curl/tests/bug73147.phpt. - CVE-2016-9137 * SECURITY UPDATE: denial of service via crafted wddxPacket XML document - debian/patches/CVE-2016-9934.patch: check objects in ext/wddx/wddx.c, ext/pdo/pdo_stmt.c, ext/wddx/tests/bug45901.phpt, ext/wddx/tests/bug72790.phpt, ext/wddx/tests/bug73331.phpt. - CVE-2016-9934 * SECURITY UPDATE: denial of service via crafted wddxPacket XML document - debian/patches/CVE-2016-9935-1.patch: fix memory leak in ext/wddx/wddx.c. - debian/patches/CVE-2016-9935-2.patch: fix leak in ext/wddx/wddx.c. - debian/patches/CVE-2016-9935-3.patch: fix leak in ext/wddx/wddx.c. - CVE-2016-9935 * SECURITY UPDATE: exif DoS via FPE - debian/patches/CVE-2016-10158.patch: fix integer size issue in ext/exif/exif.c. - CVE-2016-10158 * SECURITY UPDATE: integer overflow in phar_parse_pharfile - debian/patches/CVE-2016-10159.patch: fix overflows in ext/phar/phar.c. - CVE-2016-10159 * SECURITY UPDATE: off-by-one in phar_parse_pharfile - debian/patches/CVE-2016-10160.patch: handle length in ext/phar/phar.c. - CVE-2016-10160 * SECURITY UPDATE: denial of service via crafted serialized data - debian/patches/CVE-2016-10161.patch: fix out-of-bounds read in ext/standard/var_unserializer.*, added test to ext/standard/tests/serialize/bug73825.phpt. - CVE-2016-10161 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 09 Feb 2017 11:02:44 -0500 php5 (5.5.9+dfsg-1ubuntu4.20) trusty-security; urgency=medium * SECURITY UPDATE: denial of service or code execution via crafted serialized data - debian/patches/CVE-2016-7124-1.patch: destroy broken object when unserializing in ext/standard/var_unserializer.c*, added tests to ext/standard/tests/strings/bug72663.phpt, ext/standard/tests/strings/bug72663_2.phpt. - debian/patches/CVE-2016-7124-2.patch: improve fix in ext/standard/var_unserializer.c*, added test to ext/standard/tests/strings/bug72663_3.phpt. - CVE-2016-7124 * SECURITY UPDATE: arbitrary-type session data injection - debian/patches/CVE-2016-7125.patch: consume data even if not storing in ext/session/session.c, added test to ext/session/tests/bug72681.phpt. - debian/patches/CVE-2016-7125-2.patch: remove unused label in ext/session/session.c. - CVE-2016-7125 * SECURITY UPDATE: denial of service and possible code execution in imagegammacorrect function - debian/patches/CVE-2016-7127.patch: check gamma values in ext/gd/gd.c, added test to ext/gd/tests/bug72730.phpt. - CVE-2016-7127 * SECURITY UPDATE: information disclosure via exif_process_IFD_in_TIFF - debian/patches/CVE-2016-7128.patch: properly handle thumbnails in ext/exif/exif.c. - CVE-2016-7128 * SECURITY UPDATE: denial of service and possible code execution via invalid ISO 8601 time value - debian/patches/CVE-2016-7129.patch: properly handle strings in ext/wddx/wddx.c, added test to ext/wddx/tests/bug72749.phpt. - CVE-2016-7129 * SECURITY UPDATE: denial of service and possible code execution via invalid base64 binary value - debian/patches/CVE-2016-7130.patch: properly handle string in ext/wddx/wddx.c, added test to ext/wddx/tests/bug72750.phpt. - CVE-2016-7130 * SECURITY UPDATE: denial of service and possible code execution via malformed wddxPacket XML document - debian/patches/CVE-2016-7131.patch: added check to ext/wddx/wddx.c, added tests to ext/wddx/tests/bug72790.phpt, ext/wddx/tests/bug72799.phpt. - CVE-2016-7131 - CVE-2016-7132 * SECURITY UPDATE: denial of service and possible code execution via partially constructed object - debian/patches/CVE-2016-7411.patch: properly handle partial object in ext/standard/var_unserializer.*, added test to ext/standard/tests/serialize/bug73052.phpt. - CVE-2016-7411 * SECURITY UPDATE: denial of service and possible code execution via crafted field metadata in MySQL driver - debian/patches/CVE-2016-7412.patch: validate field length in ext/mysqlnd/mysqlnd_wireprotocol.c. - CVE-2016-7412 * SECURITY UPDATE: denial of service and possible code execution via malformed wddxPacket XML document - debian/patches/CVE-2016-7413.patch: fixed use-after-free in ext/wddx/wddx.c, added test to ext/wddx/tests/bug72860.phpt. - CVE-2016-7413 * SECURITY UPDATE: denial of service and possible code execution via crafted PHAR archive - debian/patches/CVE-2016-7414.patch: validate signatures in ext/phar/util.c, ext/phar/zip.c. - CVE-2016-7414 * SECURITY UPDATE: denial of service and possible code execution via MessageFormatter::formatMessage call with a long first argument - debian/patches/CVE-2016-7416.patch: added locale length check to ext/intl/msgformat/msgformat_format.c. - CVE-2016-7416 * SECURITY UPDATE: denial of service or code execution via crafted serialized data - debian/patches/CVE-2016-7417.patch: added type check to ext/spl/spl_array.c, added test to ext/spl/tests/bug73029.phpt. - debian/patches/CVE-2016-7417-2.patch: fix test in ext/spl/tests/bug70068.phpt. - CVE-2016-7417 * SECURITY UPDATE: denial of service and possible code execution via malformed wddxPacket XML document - debian/patches/CVE-2016-7418.patch: fix out-of-bounds read in ext/wddx/wddx.c, added test to ext/wddx/tests/bug73065.phpt. - CVE-2016-7418 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 03 Oct 2016 07:34:26 -0400 php5 (5.5.9+dfsg-1ubuntu4.19) trusty-security; urgency=medium * SECURITY UPDATE: segfault in SplMinHeap::compare - debian/patches/CVE-2015-4116.patch: properly handle count in ext/spl/spl_heap.c, added test to ext/spl/tests/bug69737.phpt. - CVE-2015-4116 * SECURITY UPDATE: denial of service via recursive method calls - debian/patches/CVE-2015-8873.patch: add limit to Zend/zend_exceptions.c, add tests to ext/standard/tests/serialize/bug69152.phpt, ext/standard/tests/serialize/bug69793.phpt, sapi/cli/tests/005.phpt. - CVE-2015-8873 * SECURITY UPDATE: denial of service or code execution via crafted serialized data - debian/patches/CVE-2015-8876.patch: fix logic in Zend/zend_exceptions.c, added test to Zend/tests/bug70121.phpt. - CVE-2015-8876 * SECURITY UPDATE: XSS in header() with Internet Explorer (LP: #1594041) - debian/patches/CVE-2015-8935.patch: update header handling to RFC 7230 in main/SAPI.c, added tests to ext/standard/tests/general_functions/bug60227_*.phpt. - CVE-2015-8935 * SECURITY UPDATE: get_icu_value_internal out-of-bounds read - debian/patches/CVE-2016-5093.patch: add enough space in ext/intl/locale/locale_methods.c, added test to ext/intl/tests/bug72241.phpt. - CVE-2016-5093 * SECURITY UPDATE: integer overflow in php_html_entities() - debian/patches/CVE-2016-5094.patch: don't create strings with lengths outside int range in ext/standard/html.c. - CVE-2016-5094 * SECURITY UPDATE: string overflows in string add operations - debian/patches/CVE-2016-5095.patch: check for size overflow in Zend/zend_operators.c. - CVE-2016-5095 * SECURITY UPDATE: int/size_t confusion in fread - debian/patches/CVE-2016-5096.patch: check string length in ext/standard/file.c, added test to ext/standard/tests/file/bug72114.phpt. - CVE-2016-5096 * SECURITY UPDATE: memory leak and buffer overflow in FPM - debian/patches/CVE-2016-5114.patch: check buffer length in sapi/fpm/fpm/fpm_log.c. - CVE-2016-5114 * SECURITY UPDATE: proxy request header vulnerability (httpoxy) - debian/patches/CVE-2016-5385.patch: only use HTTP_PROXY from the local environment in ext/standard/basic_functions.c, main/SAPI.c, main/php_variables.c. - CVE-2016-5385 * SECURITY UPDATE: inadequate error handling in bzread() - debian/patches/CVE-2016-5399.patch: do not allow reading past error read in ext/bz2/bz2.c. - CVE-2016-5399 * SECURITY UPDATE: double free in _php_mb_regex_ereg_replace_exec - debian/patches/CVE-2016-5768.patch: check pointer in ext/mbstring/php_mbregex.c, added test to ext/mbstring/tests/bug72402.phpt. - CVE-2016-5768 * SECURITY UPDATE: integer overflows in mcrypt - debian/patches/CVE-2016-5769.patch: check for overflow in ext/mcrypt/mcrypt.c. - CVE-2016-5769 * SECURITY UPDATE: ese after free GC algorithm and unserialize - debian/patches/CVE-2016-5771.patch: added new handler in ext/spl/spl_array.c, added test to Zend/tests/gc_024.phpt, ext/standard/tests/strings/bug72433.phpt. - CVE-2016-5771 * SECURITY UPDATE: double free corruption in wddx_deserialize - debian/patches/CVE-2016-5772.patch: prevent double-free in ext/wddx/wddx.c, added test to ext/wddx/tests/bug72340.phpt. - CVE-2016-5772 * SECURITY UPDATE: use after free in ZipArchive class - debian/patches/CVE-2016-5773.patch: add new handler in ext/zip/php_zip.c, added test to ext/standard/tests/strings/bug72434.phpt. - CVE-2016-5773 * SECURITY UPDATE: buffer overflow in php_url_parse_ex() - debian/patches/CVE-2016-6288.patch: handle length in ext/standard/url.c. - CVE-2016-6288 * SECURITY UPDATE: integer overflow in the virtual_file_ex function - debian/patches/CVE-2016-6289.patch: properly check path_length in Zend/zend_virtual_cwd.c. - CVE-2016-6289 * SECURITY UPDATE: use after free in unserialize() with unexpected session deserialization - debian/patches/CVE-2016-6290.patch: destroy var_hash properly in ext/session/session.c, added test to ext/session/tests/bug72562.phpt. - CVE-2016-6290 * SECURITY UPDATE: out of bounds read in exif_process_IFD_in_MAKERNOTE - debian/patches/CVE-2016-6291.patch: add more bounds checks to ext/exif/exif.c. - CVE-2016-6291 * SECURITY UPDATE: NULL pointer dereference in exif_process_user_comment - debian/patches/CVE-2016-6292.patch: properly handle encoding in ext/exif/exif.c. - CVE-2016-6292 * SECURITY UPDATE: locale_accept_from_http out-of-bounds access - debian/patches/CVE-2016-6294.patch: check length in ext/intl/locale/locale_methods.c, added test to ext/intl/tests/bug72533.phpt. - CVE-2016-6294 * SECURITY UPDATE: use after free vulnerability in SNMP with GC and unserialize() - debian/patches/CVE-2016-6295.patch: add new handler to ext/snmp/snmp.c, add test to ext/snmp/tests/bug72479.phpt. - CVE-2016-6295 * SECURITY UPDATE: heap buffer overflow in simplestring_addn - debian/patches/CVE-2016-6296.patch: prevent overflows in ext/xmlrpc/libxmlrpc/simplestring.*. - CVE-2016-6296 * SECURITY UPDATE: integer overflow in php_stream_zip_opener - debian/patches/CVE-2016-6297.patch: use size_t in ext/zip/zip_stream.c. - CVE-2016-6297 * debian/patches/fix_exif_tests.patch: fix exif test results after security changes. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 28 Jul 2016 08:57:10 -0400 php5 (5.5.9+dfsg-1ubuntu4.18) trusty; urgency=medium * Fix zlib function naming with LFS (LP: #1315888). -- Nishanth Aravamudan <nish.aravamudan@canonical.com> Tue, 31 May 2016 08:58:02 -0400 php5 (5.5.9+dfsg-1ubuntu4.17) trusty-security; urgency=medium * SECURITY UPDATE: heap corruption in tar/zip/phar parser - debian/patches/CVE-2016-4342.patch: remove UMR when size is 0 in ext/phar/phar_object.c. - CVE-2016-4342 * SECURITY UPDATE: uninitialized pointer in phar_make_dirstream() - debian/patches/CVE-2016-4343.patch: check lengths in ext/phar/dirstream.c, ext/phar/tar.c. - CVE-2016-4343 * SECURITY UPDATE: bcpowmod accepts negative scale and corrupts _one_ definition - debian/patches/CVE-2016-4537.patch: properly detect scale in ext/bcmath/bcmath.c, add test to ext/bcmath/tests/bug72093.phpt. - CVE-2016-4537 - CVE-2016-4538 * SECURITY UPDATE: xml_parse_into_struct segmentation fault - debian/patches/CVE-2016-4539.patch: check parser->level in ext/xml/xml.c, added test to ext/xml/tests/bug72099.phpt. - CVE-2016-4539 * SECURITY UPDATE: out-of-bounds reads in zif_grapheme_stripos and zif_grapheme_strpos with negative offset - debian/patches/CVE-2016-4540.patch: check bounds in ext/intl/grapheme/grapheme_string.c, added test to ext/intl/tests/bug72061.phpt. - CVE-2016-4540 - CVE-2016-4541 * SECURITY UPDATE: out of bounds heap read access in exif header processing - debian/patches/CVE-2016-4542.patch: check sizes and length in ext/exif/exif.c. - CVE-2016-4542 - CVE-2016-4543 - CVE-2016-4544 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 19 May 2016 12:45:01 -0400 php5 (5.5.9+dfsg-1ubuntu4.16) trusty-security; urgency=medium * SECURITY UPDATE: directory traversal in ZipArchive::extractTo - debian/patches/CVE-2014-9767.patch: use proper path in ext/zip/php_zip.c, added test to ext/zip/tests/bug70350.phpt. - CVE-2014-9767 * SECURITY UPDATE: type confusion issue in SoapClient - debian/patches/CVE-2015-8835.patch: check types in ext/soap/php_http.c. - CVE-2015-8835 - CVE-2016-3185 * SECURITY UPDATE: mysqlnd is vulnerable to BACKRONYM - debian/patches/CVE-2015-8838.patch: fix ssl handling in ext/mysqlnd/mysqlnd.c. - CVE-2015-8838 * SECURITY UPDATE: denial of service or memory disclosure in gd via large bgd_color argument to imagerotate - debian/patches/CVE-2016-1903.patch: check bgcolor in ext/gd/libgd/gd_interpolation.c, added test to ext/gd/tests/bug70976.phpt. - CVE-2016-1903 * SECURITY UPDATE: stack overflow when decompressing tar archives - debian/patches/CVE-2016-2554.patch: handle non-terminated linknames in ext/phar/tar.c. - CVE-2016-2554 * SECURITY UPDATE: use-after-free in WDDX - debian/patches/CVE-2016-3141.patch: fix stack in ext/wddx/wddx.c, added test to ext/wddx/tests/bug71587.phpt. - CVE-2016-3141 * SECURITY UPDATE: out-of-Bound Read in phar_parse_zipfile() - debian/patches/CVE-2016-3142.patch: check bounds in ext/phar/zip.c. - CVE-2016-3142 * SECURITY UPDATE: libxml_disable_entity_loader setting is shared between threads - debian/patches/bug64938.patch: enable entity loader in ext/libxml/libxml.c. - No CVE number * SECURITY UPDATE: openssl_random_pseudo_bytes() is not cryptographically secure - debian/patches/bug70014.patch: use RAND_bytes instead of deprecated RAND_pseudo_bytes in ext/openssl/openssl.c. - No CVE number * SECURITY UPDATE: buffer over-write in finfo_open with malformed magic file - debian/patches/bug71527.patch: properly calculate length in ext/fileinfo/libmagic/funcs.c, added test to ext/fileinfo/tests/bug71527.magic. - CVE number pending * SECURITY UPDATE: php_snmp_error() format string Vulnerability - debian/patches/bug71704.patch: use format string in ext/snmp/snmp.c. - CVE number pending * SECURITY UPDATE: integer overflow in php_raw_url_encode - debian/patches/bug71798.patch: use size_t in ext/standard/url.c. - CVE number pending * SECURITY UPDATE: invalid memory write in phar on filename containing NULL - debian/patches/bug71860.patch: require valid paths in ext/phar/phar.c, ext/phar/phar_object.c, fix tests in ext/phar/tests/badparameters.phpt, ext/phar/tests/create_path_error.phpt, ext/phar/tests/phar_extract.phpt, ext/phar/tests/phar_isvalidpharfilename.phpt, ext/phar/tests/phar_unlinkarchive.phpt, ext/phar/tests/pharfileinfo_construct.phpt. - CVE number pending * SECURITY UPDATE: invalid negative size in mbfl_strcut - debian/patches/bug71906.patch: fix length checks in ext/mbstring/libmbfl/mbfl/mbfilter.c. - CVE number pending * This package does _NOT_ contain the changes from php5 (5.5.9+dfsg-1ubuntu4.15) in trusty-proposed. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 20 Apr 2016 09:52:09 -0400 php5 (5.5.9+dfsg-1ubuntu4.14) trusty-security; urgency=medium * SECURITY UPDATE: null pointer dereference in phar_get_fp_offset() - debian/patches/CVE-2015-7803.patch: check link in ext/phar/util.c. - CVE-2015-7803 * SECURITY UPDATE: uninitialized pointer in phar_make_dirstream() - debian/patches/CVE-2015-7804.patch: check filename length in ext/phar/util.c, ext/phar/zip.c. - CVE-2015-7804 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Tue, 27 Oct 2015 16:55:35 -0400 php5 (5.5.9+dfsg-1ubuntu4.13) trusty-security; urgency=medium * SECURITY UPDATE: phar segfault on invalid file - debian/patches/CVE-2015-5589-1.patch: check stream before closing in ext/phar/phar_object.c. - debian/patches/CVE-2015-5589-2.patch: add better checks in ext/phar/phar_object.c. - CVE-2015-5589 * SECURITY UPDATE: phar buffer overflow in phar_fix_filepath - debian/patches/CVE-2015-5590.patch: properly handle path in ext/phar/phar.c. - CVE-2015-5590 * SECURITY UPDATE: multiple use-after-free issues in unserialize() - debian/patches/CVE-2015-6831-1.patch: fix SPLArrayObject in ext/spl/spl_array.c, added test to ext/spl/tests/bug70166.phpt. - debian/patches/CVE-2015-6831-2.patch: fix SplObjectStorage in ext/spl/spl_observer.c, added test to ext/spl/tests/bug70168.phpt. - debian/patches/CVE-2015-6831-3.patch: fix SplDoublyLinkedList in ext/spl/spl_dllist.c, added test to ext/spl/tests/bug70169.phpt. - CVE-2015-6831 * SECURITY UPDATE: dangling pointer in the unserialization of ArrayObject items - debian/patches/CVE-2015-6832.patch: fix dangling pointer in ext/spl/spl_array.c, added test to ext/spl/tests/bug70068.phpt. - CVE-2015-6832 * SECURITY UPDATE: phar files extracted outside of destination dir - debian/patches/CVE-2015-6833-1.patch: limit extracted files to given directory in ext/phar/phar_object.c. - CVE-2015-6833 * SECURITY UPDATE: multiple vulnerabilities in unserialize() - debian/patches/CVE-2015-6834-1.patch: fix use-after-free in ext/standard/var.c, ext/standard/var_unserializer.*. - debian/patches/CVE-2015-6834-2.patch: fix use-after-free in ext/spl/spl_observer.c, added test to ext/spl/tests/bug70365.phpt. - debian/patches/CVE-2015-6834-3.patch: fix use-after-free in ext/spl/spl_dllist.c, added test to ext/spl/tests/bug70366.phpt. - CVE-2015-6834 * SECURITY UPDATE: use after free in session deserializer - debian/patches/CVE-2015-6835-1.patch: fix use after free in ext/session/session.c, ext/standard/var_unserializer.* fixed tests in ext/session/tests/session_decode_error2.phpt, ext/session/tests/session_decode_variation3.phpt. - debian/patches/CVE-2015-6835-2.patch: add more fixes to ext/session/session.c. - CVE-2015-6835 * SECURITY UPDATE: SOAP serialize_function_call() type confusion - debian/patches/CVE-2015-6836.patch: check type in ext/soap/soap.c, added test to ext/soap/tests/bug70388.phpt. - CVE-2015-6836 * SECURITY UPDATE: NULL pointer dereference in XSLTProcessor class - debian/patches/CVE-2015-6837-6838.patch: fix logic in ext/xsl/xsltprocessor.c. - CVE-2015-6837 - CVE-2015-6838 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Tue, 29 Sep 2015 07:35:49 -0400 php5 (5.5.9+dfsg-1ubuntu4.12) trusty; urgency=medium * Fix PHP Fatal error: Inconsistent insteadof definition (LP: #1474276) - Apply upstream fix -- Ryan Harper <ryan.harper@canonical.com> Thu, 13 Aug 2015 09:55:34 -0500 php5 (5.5.9+dfsg-1ubuntu4.11) trusty-security; urgency=medium * SECURITY UPDATE: missing file path null byte checks - debian/patches/CVE-2015-3411.patch: add missing checks to ext/dom/document.c, ext/fileinfo/fileinfo.c, ext/gd/gd.c, ext/hash/hash.c, ext/pgsql/pgsql.c, ext/standard/link.c, ext/standard/streamsfuncs.c, ext/xmlwriter/php_xmlwriter.c, ext/zlib/zlib.c, add tests to ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt, ext/fileinfo/tests/finfo_file_basic.phpt, ext/hash/tests/hash_hmac_file_error.phpt - CVE-2015-3411 - CVE-2015-3412 * SECURITY UPDATE: denial of service via crafted tar archive - debian/patches/CVE-2015-4021.patch: handle empty strings in ext/phar/tar.c. - CVE-2015-4021 * SECURITY UPDATE: arbitrary code execution via ftp server long reply to a LIST command - debian/patches/CVE-2015-4022.patch: fix overflow in ext/ftp/ftp.c. - CVE-2015-4022 * SECURITY UPDATE: denial of service via crafted form data - debian/patches/CVE-2015-4024.patch: use smart_str to assemble strings in main/rfc1867.c. - CVE-2015-4024 * SECURITY UPDATE: more missing file path null byte checks - debian/patches/CVE-2015-4025.patch: add missing checks to ext/pcntl/pcntl.c, ext/standard/basic_functions.c, ext/standard/dir.c, ext/standard/file.c. - CVE-2015-4025 - CVE-2015-4026 * SECURITY UPDATE: arbitrary code execution via crafted serialized data with unexpected data type - debian/patches/CVE-2015-4147.patch: check variable types in ext/soap/php_encoding.c, ext/soap/php_http.c, ext/soap/soap.c. - CVE-2015-4147 - CVE-2015-4148 - CVE-2015-4600 - CVE-2015-4601 * SECURITY UPDATE: more missing file path null byte checks - debian/patches/CVE-2015-4598.patch: add missing checks to ext/dom/document.c, ext/gd/gd.c, fix tests in ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt, ext/gd/tests/imageloadfont_error1.phpt, ext/zlib/tests/gzopen_variation1.phpt, ext/zlib/tests/readgzfile_variation1.phpt, ext/zlib/tests/readgzfile_variation6.phpt, ext/standard/tests/dir/dir_variation1.phpt, ext/standard/tests/dir/opendir_variation1.phpt, ext/standard/tests/file/mkdir_rmdir_variation2.phpt, ext/standard/tests/file/readlink_variation1.phpt, ext/standard/tests/file/tempnam_variation3-win32.phpt, ext/standard/tests/file/tempnam_variation3.phpt, ext/standard/tests/general_functions/include_path.phpt. - CVE-2015-4598 * SECURITY UPDATE: denial of service or information leak via type confusion with crafted serialized data - debian/patches/CVE-2015-4599.patch: use proper types in ext/soap/soap.c. - CVE-2015-4599 * SECURITY UPDATE: denial of service or information leak via type confusion with crafted serialized data - debian/patches/CVE-2015-4602.patch: check for proper type in ext/standard/incomplete_class.c. - CVE-2015-4602 * SECURITY UPDATE: denial of service or information leak via type confusion with crafted serialized data - debian/patches/CVE-2015-4603.patch: check type in Zend/zend_exceptions.c, add test to ext/standard/tests/serialize/bug69152.phpt. - CVE-2015-4603 * SECURITY UPDATE: arbitrary code execution via ftp server long reply to a LIST command - debian/patches/CVE-2015-4643.patch: prevent overflow check bypass in ext/ftp/ftp.c. - CVE-2015-4643 * SECURITY UPDATE: denial of service via php_pgsql_meta_data - debian/patches/CVE-2015-4644.patch: check return value in ext/pgsql/pgsql.c, add test to ext/pgsql/pg_insert_002.phpt. - CVE-2015-4644 * debian/patches/CVE-2015-2783-memleak.patch: fix memory leak introduced by CVE-2015-2783 security update. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 02 Jul 2015 08:53:30 -0400 php5 (5.5.9+dfsg-1ubuntu4.9) trusty-security; urgency=medium * SECURITY UPDATE: potential remote code execution vulnerability when used with the Apache 2.4 apache2handler - debian/patches/bug69218.patch: perform proper cleanup in sapi/apache2handler/sapi_apache2.c. - CVE number pending * SECURITY UPDATE: buffer overflow when parsing tar/zip/phar - debian/patches/bug69441.patch: check lengths in ext/phar/phar_internal.h. - CVE number pending * SECURITY UPDATE: heap overflow in regexp library - debian/patches/CVE-2015-2305.patch: check for overflow in ext/ereg/regex/regcomp.c. - CVE-2015-2305 * SECURITY UPDATE: move_uploaded_file filename restriction bypass - debian/patches/CVE-2015-2348.patch: handle nulls in ext/standard/basic_functions.c. - CVE-2015-2348 * SECURITY UPDATE: buffer overflow in unserialize when parsing Phar - debian/patches/CVE-2015-2783.patch: properly check lengths in ext/phar/phar.c, ext/phar/phar_internal.h. - CVE-2015-2783 * SECURITY UPDATE: arbitrary code exection via process_nested_data use-after-free - debian/patches/CVE-2015-2787.patch: fix logic in ext/standard/var_unserializer.*. - CVE-2015-2787 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 17 Apr 2015 05:28:02 -0400 php5 (5.5.9+dfsg-1ubuntu4.8) trusty; urgency=medium * Fix php5-fpm logrotate since the upstart job has been introduced. (LP: #1230917) - Backport the /usr/lib/php5/php5-fpm-reopenlogs script from utopic. - Call the script in postrotate instead of invoke-rc.d php5-fpm reopen-logs. Upstart jobs don't support custom actions. -- Felix Geyer <debfx@ubuntu.com> Tue, 31 Mar 2015 07:51:32 -0400 php5 (5.5.9+dfsg-1ubuntu4.7) trusty-security; urgency=medium * SECURITY UPDATE: denial of service via recursion - debian/patches/CVE-2014-8117.patch: lower recursion limit in ext/fileinfo/libmagic/softmagic.c. - CVE-2014-8117 * SECURITY UPDATE: denial of service or possible code execution in enchant - debian/patches/CVE-2014-9705.patch: handle position better in ext/enchant/enchant.c. - CVE-2014-9705 * SECURITY UPDATE: arbitrary code execution via use after free in unserialize() with DateTimeZone and DateTime - debian/patches/CVE-2015-0273.patch: fix use after free in ext/date/php_date.c, added tests to ext/date/tests/bug68942.phpt, ext/date/tests/bug68942_2.phpt. - CVE-2015-0273 * SECURITY UPDATE: denial of service or possible code execution in phar - debian/patches/CVE-2015-2301.patch: fix use after free in ext/phar/phar_object.c. - CVE-2015-2301 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 16 Mar 2015 13:40:18 -0400 php5 (5.5.9+dfsg-1ubuntu4.6) trusty-security; urgency=medium * SECURITY UPDATE: arbitrary code execution via improper handling of duplicate keys in unserializer - debian/patches/CVE-2014-8142.patch: fix use after free in ext/standard/var_unserializer.*, added test to ext/standard/tests/serialize/bug68594.phpt. - CVE-2014-8142 * SECURITY UPDATE: out of bounds read via invalid php file - debian/patches/CVE-2014-9427.patch: fix bounds in sapi/cgi/cgi_main.c. - CVE-2014-9427 * SECURITY UPDATE: out of bounds read in fileinfo - debian/patches/CVE-2014-9652.patch: properly check length in ext/fileinfo/libmagic/softmagic.c. - CVE-2014-9652 * SECURITY UPDATE: arbitrary code execution via improper handling of duplicate keys in unserializer, additional fix - debian/patches/CVE-2015-0231.patch: fix use after free in ext/standard/var_unserializer.*, added test to ext/standard/tests/strings/bug68710.phpt. - CVE-2015-0231 * SECURITY UPDATE: arbitrary code execution or denial of service via crafted EXIF data - debian/patches/CVE-2015-0232.patch: fix uninitialized pointer free in ext/exif/exif.c. - CVE-2015-0232 * SECURITY UPDATE: use after free in opcache component - debian/patches/CVE-2015-1351.patch: fix use after free in ext/opcache/zend_shared_alloc.c. - CVE-2015-1351 * SECURITY UPDATE: null pointer dereference in pgsql - debian/patches/CVE-2015-1352.patch: properly set valid token in ext/pgsql/pgsql.c. - CVE-2015-1352 * debian/patches/remove_readelf.patch: remove readelf.c from fileinfo as it isn't used, and is a source of confusion when doing security updates. * debian/patches/CVE-2014-3710.patch: removed, wasn't needed. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 13 Feb 2015 11:15:38 -0500 php5 (5.5.9+dfsg-1ubuntu4.5) trusty-security; urgency=medium * SECURITY UPDATE: denial of service via buffer overflow in mkgmtime() - debian/patches/CVE-2014-3668.patch: properly handle sizes in ext/xmlrpc/libxmlrpc/xmlrpc.c, added test to ext/xmlrpc/tests/bug68027.phpt. - CVE-2014-3668 * SECURITY UPDATE: integer overflow in unserialize() - debian/patches/CVE-2014-3669.patch: fix overflow in ext/standard/var_unserializer.{c,re}, added test to ext/standard/tests/serialize/bug68044.phpt. - CVE-2014-3669 * SECURITY UPDATE: Heap corruption in exif_thumbnail() - debian/patches/CVE-2014-3670.patch: fix sizes in ext/exif/exif.c. - CVE-2014-3670 * SECURITY UPDATE: out of bounds read in elf note headers in fileinfo() - debian/patches/CVE-2014-3710.patch: validate note headers in ext/fileinfo/libmagic/readelf.c. - CVE-2014-3710 * SECURITY UPDATE: local file disclosure via curl NULL byte injection - debian/patches/curl_embedded_null.patch: don't accept curl options with embedded NULLs in ext/curl/interface.c, added test to ext/curl/tests/bug68089.phpt. - No CVE number -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Tue, 28 Oct 2014 14:52:03 -0400 php5 (5.5.9+dfsg-1ubuntu4.4) trusty-security; urgency=medium * SECURITY UPDATE: denial of service in FileInfo cdf_read_property_info - debian/patches/CVE-2014-3587.patch: check for array under-runs as well as over-runs in ext/fileinfo/libmagic/cdf.c - CVE-2014-3587 * SECURITY UPDATE: denial of service in dns_get_record - debian/patches/CVE-2014-3597.patch: check for DNS overflows in ext/standard/dns.c - CVE-2014-3587 -- Seth Arnold <seth.arnold@canonical.com> Wed, 03 Sep 2014 23:33:06 -0700 php5 (5.5.9+dfsg-1ubuntu4.3) trusty-security; urgency=medium * SECURITY UPDATE: denial of service in FileInfo cdf_read_short_sector - debian/patches/CVE-2014-0207.patch: properly calculate sizes in ext/fileinfo/libmagic/cdf.c. - CVE-2014-0207 * SECURITY UPDATE: denial of service in FileInfo mconvert - debian/patches/CVE-2014-3478.patch: properly handle truncated pascal string size in ext/fileinfo/libmagic/softmagic.c. - CVE-2014-3478 * SECURITY UPDATE: denial of service in FileInfo cdf_check_stream_offset - debian/patches/CVE-2014-3479.patch: properly calculate sizes in ext/fileinfo/libmagic/cdf.c. - CVE-2014-3479 * SECURITY UPDATE: denial of service in FileInfo cdf_count_chain - debian/patches/CVE-2014-3480.patch: properly calculate sizes in ext/fileinfo/libmagic/cdf.c. - CVE-2014-3480 * SECURITY UPDATE: denial of service in FileInfo cdf_read_property_info - debian/patches/CVE-2014-3487.patch: properly calculate sizes in ext/fileinfo/libmagic/cdf.c. - CVE-2014-3487 * SECURITY UPDATE: denial of service and possible code execution via unserialize() SPL type confusion - debian/patches/CVE-2014-3515.patch: properly check types in ext/spl/spl_array.c, ext/spl/spl_observer.c, added test to ext/spl/tests/SplObjectStorage_unserialize_bad.phpt. - CVE-2014-3515 * SECURITY UPDATE: denial of service via SPL Iterators use-after-free - debian/patches/CVE-2014-4670.patch: fix use-after-free in ext/spl/spl_dllist.c, added test to ext/spl/tests/bug67538.phpt. - CVE-2014-4670 * SECURITY UPDATE: denial of service via ArrayIterator use-after-free - debian/patches/CVE-2014-4698.patch: don't allow modifying ArrayObject during sorting in ext/spl/spl_array.c, added test to ext/spl/tests/bug67539.phpt. - CVE-2014-4698 * SECURITY UPDATE: information leak via phpinfo (LP: #1338170) - debian/patches/CVE-2014-4721.patch: fix type confusion in ext/standard/info.c, added test to ext/standard/tests/general_functions/bug67498.phpt. - CVE-2014-4721 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 07 Jul 2014 07:44:21 -0400 php5 (5.5.9+dfsg-1ubuntu4.2) trusty-security; urgency=medium * SECURITY UPDATE: better FastCGI socket permissions (LP: #1334337) - debian/rules: enable listen.owner and listen.group so that the socket is accessible to www-data by default. This allows most setups to continue working with the more restrictive permissions. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 25 Jun 2014 11:46:16 -0400 php5 (5.5.9+dfsg-1ubuntu4.1) trusty-security; urgency=medium * SECURITY UPDATE: incorrect FastCGI socket permissions (LP: #1307027) - debian/patches/CVE-2014-0185.patch: default to 0660 in sapi/fpm/fpm/fpm_unix.c, sapi/fpm/php-fpm.conf.in. - CVE-2014-0185 * SECURITY UPDATE: denial of service in FileInfo cdf_unpack_summary_info - debian/patches/CVE-2014-0237.patch: remove file_printf calls in ext/fileinfo/libmagic/cdf.c. - CVE-2014-0237 * SECURITY UPDATE: denial of service in FileInfo cdf_read_property_info - debian/patches/CVE-2014-0238.patch: fix infinite loop in ext/fileinfo/libmagic/cdf.c. - CVE-2014-0238 * SECURITY UPDATE: code execution via buffer overflow in DNS TXT record parsing - debian/patches/CVE-2014-4049.patch: check length in ext/standard/dns.c. - CVE-2014-4049 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 19 Jun 2014 13:30:13 -0400 php5 (5.5.9+dfsg-1ubuntu4) trusty; urgency=medium * Comment out "reload signal USR2" stanza from php5-fpm to make the job compatible with Precise upstart, when it's still running as pid1 during upgrade to trusty and before the restart. We'd rather support shorter down-time then reload interface. (LP: #1272788) -- Dimitri John Ledkov <xnox@ubuntu.com> Wed, 09 Apr 2014 16:23:30 +0100 php5 (5.5.9+dfsg-1ubuntu3) trusty; urgency=medium * SECURITY UPDATE: denial of service in fileinfo via crafted offset in PE executable - debian/patches/CVE-2014-2270.patch: check bounds in ext/fileinfo/libmagic/softmagic.c. - CVE-2014-2270 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 03 Apr 2014 15:12:10 -0400 php5 (5.5.9+dfsg-1ubuntu2) trusty; urgency=medium * SECURITY UPDATE: denial of service via crafted indirect offset value in fileinfo - debian/patches/CVE-2013-1943.patch: properly handle recursion in ext/fileinfo/libmagic/{ascmagic.c,file.h,funcs.c,softmagic.c}, added test to ext/fileinfo/tests/cve-2014-1943.phpt. - CVE-2013-1943 * debian/patches/imageconvolution-regression.patch: fix regression in imageconvolution caused by security fix in 5.5.9. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 03 Mar 2014 13:42:25 -0500 php5 (5.5.9+dfsg-1ubuntu1) trusty; urgency=medium * Merge from Debian testing. Remaining changes: - d/control: drop Build-Depends that are in universe: firebird-dev, libc-client-dev, libmcrypt-dev, libonig-dev, libqdbm-dev. - d/rules: drop configuration of packages that are in universe: qdgm, onig. - d/rules: drop CONFIGURE_APACHE_ARGS settings since now we don't build interbase or firebird. - d/rules: export DEB_HOST_MULTIARCH properly. - d/control: drop binary packages php5-imap, php5-interbase and php5-mcrypt since we have separate versions in universe. - d/modulelist: drop imap, interbase and mcrypt since we have separate versions in universe. - d/rules: drop configuration of imap and mcrypt since we have separate versions in universe. - d/source_php5.py, d/rules: add apport hook. - d/rules: stop mysql instance on clean just in case we failed in tests. - d/control: switch Build-Depends of netcat-traditional to netcat-openbsd as only the latter is in main. - d/rules, d/control: drop use of dh_systemd as it is in universe. - debian/rules: re-enable tests - d/tests/{cgi,cli,mod-php}: dep8 tests for common use cases. * Drop changes (upstreamed to Debian): - d/p/use-system-timezone.patch, d/tests/system-timezone: use system timezone by default, instead of requiring it to be configured. * d/rules: load dpkg-buildflags earlier, so that CFLAGS changes are not overridden (LP: #1280044). -- Robie Basak <robie.basak@ubuntu.com> Mon, 17 Feb 2014 16:58:27 +0000 php5 (5.5.9+dfsg-1) unstable; urgency=medium * New upstream version 5.5.9+dfsg * Install CLI specific ini file with PCNTL enabled (Closes: #720434) * Use php_admin_flag in Apache settings (Closes: #690964) -- Lior Kaplan <kaplan@debian.org> Fri, 07 Feb 2014 16:21:04 +0200 php5 (5.5.8+dfsg-3) unstable; urgency=low * Fix regression in system fallback for date_default_timezone_get() (Closes: #730771) -- Ondřej Surý <ondrej@debian.org> Fri, 24 Jan 2014 09:59:36 +0100 php5 (5.5.8+dfsg-2ubuntu1) trusty; urgency=medium * Merge from Debian unstable. Remaining changes: - d/control: drop Build-Depends that are in universe: firebird-dev, libc-client-dev, libmcrypt-dev, libonig-dev, libqdbm-dev. - d/rules: drop configuration of packages that are in universe: qdgm, onig. - d/rules: drop CONFIGURE_APACHE_ARGS settings since now we don't build interbase or firebird. - d/rules: export DEB_HOST_MULTIARCH properly. - d/control: drop binary packages php5-imap, php5-interbase and php5-mcrypt since we have separate versions in universe. - d/modulelist: drop imap, interbase and mcrypt since we have separate versions in universe. - d/rules: drop configuration of imap and mcrypt since we have separate versions in universe. - d/source_php5.py, d/rules: add apport hook. - d/rules: stop mysql instance on clean just in case we failed in tests. - d/control: switch Build-Depends of netcat-traditional to netcat-openbsd as only the latter is in main. - d/rules, d/control: drop use of dh_systemd as it is in universe. - debian/rules: re-enable tests * Previously undocumented changes: - d/tests/{cgi,cli,mod_php}: dep8 tests for common use cases. * Drop changes: - d/p/{CVE-2013-6420,CVE-2013-6712,fix-freetype-ftbfs}.patch: upstreamed. - d/control: relegate php5-json and pkg-php-tools from Recommends to Suggests as they are in universe: php5-json and pkg-php-tools are now in main (LP: #1242726). - d/control, d/rules: re-enable libedit-dev: libedit-dev is now enabled in Debian. * d/tests/mod-php: rename from mod_php; the previous name was illegal. * d/tests/{cgi,mod-php}: use new default Apache DocumentRoot /var/www/html. * d/p/use-system-timezone.patch, d/tests/system-timezone: use system timezone by default, instead of requiring it to be configured. (LP: #1244343). -- Robie Basak <robie.basak@ubuntu.com> Tue, 21 Jan 2014 15:40:58 +0000 php5 (5.5.8+dfsg-2) unstable; urgency=medium * Re-enable dtrace only on architectures that support it -- Lior Kaplan <kaplan@debian.org> Sun, 12 Jan 2014 00:56:04 +0200 php5 (5.5.8+dfsg-1) unstable; urgency=medium * New upstream version 5.5.8+dfsg - Includes fix for CVE-2013-6712 - Includes fix for freetype2 include directory (replaces our patch) * Add missing PATH_MAX in use_embedded_timezonedb patch to fix hurd-i386 FTBFS -- Lior Kaplan <kaplan@debian.org> Sat, 11 Jan 2014 14:37:19 +0200 php5 (5.5.7+dfsg-2) unstable; urgency=low * Enable dtrace only on architectures that support it -- Ondřej Surý <ondrej@debian.org> Thu, 12 Dec 2013 23:54:26 +0100 php5 (5.5.7+dfsg-1) unstable; urgency=high * New upstream version 5.5.7+dfsg + [CVE-2013-6420]: Fix memory corruption in openssl_x509_parse (Closes: #731895) * Enable dtrace/systemtap support (Closes: #730528) -- Ondřej Surý <ondrej@debian.org> Thu, 12 Dec 2013 20:49:21 +0100 php5 (5.5.6+dfsg-2) unstable; urgency=high * [CVE-2013-6420]: Fix memory corruption in openssl_x509_parse (Closes: #731895) * [CVE-2013-6712] Fix heap buffer over-read in DateInterval (Closes: #731112) * Add patch to fix freetype2 include directory (Closes: #731698) -- Ondřej Surý <ondrej@debian.org> Thu, 12 Dec 2013 11:07:11 +0100 php5 (5.5.6+dfsg-1ubuntu2) trusty; urgency=medium * No change rebuild against libicu52 -- Dimitri John Ledkov <xnox@ubuntu.com> Sat, 28 Dec 2013 05:16:26 +0000 php5 (5.5.6+dfsg-1ubuntu1) trusty; urgency=low * Merge from Debian unstable. Remaining changes: - d/control: drop Build-Depends that are in universe: firebird-dev, libc-client-dev, libmcrypt-dev, libonig-dev, libqdbm-dev. - d/rules: drop configuration of packages that are in universe: qdgm, onig. - d/rules: drop CONFIGURE_APACHE_ARGS settings since now we don't build interbase or firebird. - d/rules: export DEB_HOST_MULTIARCH properly. - d/control: drop binary packages php5-imap, php5-interbase and php5-mcrypt since we have separate versions in universe. - d/modulelist: drop imap, interbase and mcrypt since we have separate versions in universe. - d/rules: drop configuration of imap and mcrypt since we have separate versions in universe. - d/source_php5.py, d/rules: add apport hook. - d/rules: stop mysql instance on clean just in case we failed in tests. - d/control, d/rules: re-enable libedit-dev. - d/control: switch Build-Depends of netcat-traditional to netcat-openbsd as only the latter is in main. - d/rules, d/control: drop use of dh_systemd as it is in universe. - d/control: relegate php5-json and pkg-php-tools from Recommends to Suggests as they are in universe. * Dropped changes: - d/p/crash_in_get_zval_ptr_ptr_var.patch: upstream * SECURITY UPDATE: denial of service and possible code execution via malicious certificate - debian/patches/CVE-2013-6420.patch: properly validate timestr in ext/openssl/openssl.c, added ext/openssl/tests/cve-2013-6420.*. - CVE-2013-6420 * SECURITY UPDATE: denial of service via crafted interval specification - debian/patches/CVE-2013-6712.patch: check error_count in ext/date/lib/parse_iso_intervals.*. - CVE-2013-6712 * debian/patches/fix-freetype-ftbfs.patch: fix compilation with newer freetype * debian/rules: re-enable tests -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 12 Dec 2013 11:54:36 -0500 php5 (5.5.6+dfsg-1) unstable; urgency=low [ Lior Kaplan ] * Fix lintian systemd-service-file-refers-to-obsolete-target [ Ondřej Surý ] * Add support for reload signal in upstart init job * New upstream version 5.5.6+dfsg * Update patches for 5.5.6+dfsg release -- Ondřej Surý <ondrej@debian.org> Thu, 21 Nov 2013 09:59:57 +0100 php5 (5.5.5+dfsg-1) unstable; urgency=low * New upstream version 5.5.5+dfsg - Remove merged patches: shtool_mkdir_-p_-race-condition, 0001-Add-information-about-which-INI-file-is-which-inside, Zend_OpCache_GNUHurd_fix and mssql-null-exception * Delete 116-posixness_fix patch, Hurd builds successfully without it -- Lior Kaplan <kaplan@debian.org> Sat, 19 Oct 2013 15:49:21 +0300 php5 (5.5.4+dfsg-1) unstable; urgency=low [ Thijs Kinkhorst ] * In maintscripts not emit 'no action required' messages to console (closes: #724001). [ Lior Kaplan ] * Remove obsolete patches: 004-ldap_fix, 036-fd_setsize_fix, 043-recode_size_t, 045-exif_nesting_level, 047-zts_with_dl and 108-64_bit_datetime. * Add patch info (description, author and bug number) * Delete patches we don't apply during build * Add a reference to GNU/Hurd porting guidelines [ Ondřej Surý ] * New upstream version 5.5.4+dfsg * Remove SHA2 broken test patch; merged upstream * Refresh patches for 5.5.4 release -- Ondřej Surý <ondrej@debian.org> Fri, 27 Sep 2013 11:32:38 +0200 php5 (5.5.3+dfsg-1ubuntu3) trusty; urgency=low * No change rebuild against db 5.3. -- Dmitrijs Ledkovs <xnox@ubuntu.com> Sat, 02 Nov 2013 20:03:00 +0000 php5 (5.5.3+dfsg-1ubuntu2) saucy; urgency=low * d/p/crash_in_get_zval_ptr_ptr_var.patch: cherry-pick from upstream to fix segfault (LP: #1236733). -- Robie Basak <robie.basak@ubuntu.com> Wed, 09 Oct 2013 11:29:29 +0000 php5 (5.5.3+dfsg-1ubuntu1) saucy; urgency=low * Merge from Debian unstable. Remaining changes: - d/control: drop Build-Depends that are in universe: firebird-dev, libc-client-dev, libmcrypt-dev, libonig-dev, libqdbm-dev. - d/rules: drop configuration of packages that are in universe: qdgm, onig. - d/rules: drop CONFIGURE_APACHE_ARGS settings since now we don't build interbase or firebird. - d/rules: export DEB_HOST_MULTIARCH properly. - d/control: drop binary packages php5-imap, php5-interbase and php5-mcrypt since we have separate versions in universe. - d/modulelist: drop imap, interbase and mcrypt since we have separate versions in universe. - d/rules: drop configuration of imap and mcrypt since we have separate versions in universe. - d/source_php5.py, d/rules: add apport hook. - d/rules: stop mysql instance on clean just in case we failed in tests. - d/control, d/rules: re-enable libedit-dev. - d/control: switch Build-Depends of netcat-traditional to netcat-openbsd as only the latter is in main. - d/rules, d/control: drop use of dh_systemd as it is in universe. - d/control: relegate php5-json and pkg-php-tools from Recommends to Suggests as they are in universe. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 04 Sep 2013 08:24:35 -0400 php5 (5.5.3+dfsg-1) unstable; urgency=low * New upstream version 5.5.3+dfs * Update patches for 5.5.3 release -- Ondřej Surý <ondrej@debian.org> Fri, 23 Aug 2013 14:49:34 +0200 php5 (5.5.2+dfsg-1) unstable; urgency=low * New upstream version 5.5.2+dfsg * Update and refresh patches for 5.5.2 release * Add handling for mpm_itk to libapache2-mod-php5{,filter} (Closes: #720278) * Add php5-readline to php5-cli Recommends to hint that it's needed for functional php -a -- Ondřej Surý <ondrej@debian.org> Tue, 20 Aug 2013 13:17:24 +0200 php5 (5.5.1+dfsg-2) unstable; urgency=low * Move apache2 (>= 2.4) from Pre-Depend to Depends (Closes: #711454) * Install the headers from CGI build to get mysqlnd headers into php5-dev package (Closes: #690395) * Use small helper script instead of shell blog to check FPM configuration (Closes: #718627) -- Ondřej Surý <ondrej@debian.org> Mon, 05 Aug 2013 15:58:01 +0200 php5 (5.5.1+dfsg-1ubuntu1) saucy; urgency=low * Merge from Debian unstable. Remaining changes: - d/control: drop Build-Depends that are in universe: firebird-dev, libc-client-dev, libmcrypt-dev, libonig-dev, libqdbm-dev. - d/rules: drop configuration of packages that are in universe: qdgm, onig. - d/rules: drop CONFIGURE_APACHE_ARGS settings since now we don't build interbase or firebird. - d/rules: export DEB_HOST_MULTIARCH properly. - d/control: drop binary packages php5-imap, php5-interbase and php5-mcrypt since we have separate versions in universe. - d/modulelist: drop imap, interbase and mcrypt since we have separate versions in universe. - d/rules: drop configuration of imap and mcrypt since we have separate versions in universe. - d/source_php5.py, d/rules: add apport hook. - d/rules: stop mysql instance on clean just in case we failed in tests. - d/control, d/rules: re-enable libedit-dev. - d/control: switch Build-Depends of netcat-traditional to netcat-openbsd as only the latter is in main. - d/rules, d/control: drop use of dh_systemd as it is in universe. - d/control: relegate php5-json and pkg-php-tools from Recommends to Suggests as they are in universe. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 24 Jul 2013 09:28:07 -0400 php5 (5.5.1+dfsg-1) unstable; urgency=low * New upstream version 5.5.1+dfsg * Update patches for 5.5.1 release -- Ondřej Surý <ondrej@debian.org> Mon, 22 Jul 2013 08:25:19 +0200 php5 (5.5.0+dfsg-15ubuntu1) saucy; urgency=low * Merged from Debian unstable to get security fix. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 18 Jul 2013 11:48:29 -0400 php5 (5.5.0+dfsg-15) unstable; urgency=low * CVE-2013-4113: Fix heap corruption in xml parser (Closes: #717139) -- Ondřej Surý <ondrej@debian.org> Wed, 17 Jul 2013 16:12:39 +0200 php5 (5.5.0+dfsg-14ubuntu1) saucy; urgency=low * Merge from Debian unstable. Remaining changes: - d/control: drop Build-Depends that are in universe: firebird-dev, libc-client-dev, libmcrypt-dev, libonig-dev, libqdbm-dev. - d/rules: drop configuration of packages that are in universe: qdgm, onig. - d/rules: drop CONFIGURE_APACHE_ARGS settings since now we don't build interbase or firebird. - d/rules: export DEB_HOST_MULTIARCH properly. - d/control: drop binary packages php5-imap, php5-interbase and php5-mcrypt since we have separate versions in universe. - d/modulelist: drop imap, interbase and mcrypt since we have separate versions in universe. - d/rules: drop configuration of imap and mcrypt since we have separate versions in universe. - d/source_php5.py, d/rules: add apport hook. - d/rules: stop mysql instance on clean just in case we failed in tests. - d/control, d/rules: re-enable libedit-dev. - d/control: switch Build-Depends of netcat-traditional to netcat-openbsd as only the latter is in main. - d/rules, d/control: drop use of dh_systemd as it is in universe. - d/control: relegate php5-json from Recommends to Suggests as it is in universe. * Relegate pkg-php-tools Recommends to Suggests as it is in universe. -- Robie Basak <robie.basak@ubuntu.com> Wed, 17 Jul 2013 18:00:02 +0000 php5 (5.5.0+dfsg-14) unstable; urgency=low * Fix FTBFS: Remove symbols file and add an warning about embed SAPI API/ABI to libphp5-embed package description. -- Ondřej Surý <ondrej@debian.org> Wed, 17 Jul 2013 12:02:46 +0200 php5 (5.5.0+dfsg-13) unstable; urgency=low * Call php5query from reportbug with the full path to executable (Closes: #716952) * Create conf.d directories also in php5-common postinst (the real fix for #716893) * Move Provides: phpapi-version to php5-common to fix invalid resolving of dependencies (Closes: #709027) * Move libphp5.so to /usr/lib (Closes: #708112) * Fail the build if phpapi has changed, not just warning which nobody notices * Fix typo in bug script installation path reporbug -> reportbug * Remove $(PHP_VERSION) from libphp5 SONAME, so it doesn't break with every new debian release * Add symbols file for libphp5.so * Correctly call dh_makeshlibs now when libphp5.so is in /usr/lib -- Ondřej Surý <ondrej@debian.org> Tue, 16 Jul 2013 15:35:48 +0200 php5 (5.5.0+dfsg-12) unstable; urgency=low * Re-create (and re-remove) conf.d symlinks when module is already enabled (disabled) (Closes: #716893) * Add backwards compatibility for modules with priority (Closes: #716833) * Add Breaks: php-crypt-gpg (<< 1.3.2) to php5-common (Closes: #716856) * Add php5-fpm.dirs with needed /etc/php5/fpm/conf.d directory -- Ondřej Surý <ondrej@debian.org> Mon, 15 Jul 2013 09:19:34 +0200 php5 (5.5.0+dfsg-11) unstable; urgency=low * Make php5 compatible with php5-xcache 3.1~svn1282+1-1 * Add reportbug scripts and controls for php5-sapi and php5-module (+ simple php5 redirect to php5-common). This should make the bugreports from people using reportbug more informative. * Make .ini files in reportbug more terse (remove comments and blank lines) -- Ondřej Surý <ondrej@debian.org> Thu, 11 Jul 2013 14:30:59 +0200 php5 (5.5.0+dfsg-10) unstable; urgency=low * Install correct SAPI names to /usr/share/php5/sapi/ for libapache2-mod-php5(filter) (Closes: #716659) * Introduce list_parts helper function in php5-helper + Don't fail php5query -M if the module list is empty + Don't list current directory if the SAPI list is empty * Fix even more different glitches when something bad happends in php5enmod and php5query helper scripts -- Ondřej Surý <ondrej@debian.org> Thu, 11 Jul 2013 09:10:03 +0200 php5 (5.5.0+dfsg-9) unstable; urgency=low * Add Breaks: php5-json (<< 1.3.1) to unbreak php5-json (and in turn pkg-php-tools that depends on php5-json) * Cleanup old Breaks: from 5.3 to 5.4 transition -- Ondřej Surý <ondrej@debian.org> Wed, 10 Jul 2013 13:02:57 +0200 php5 (5.5.0+dfsg-8) unstable; urgency=low * NOTE: The php5_invoke script is still too chatty, but we need that to debug possible bugs. It will be made less chatty when we feel more confident that everything works as it should be. * Drop dh_phpize scripts in favor of dh_phppear * Add Recommends on pkg-php-tools in php5-dev * Add missing libapache2-mod-php5filter.postinst.extra * Introduce automatic module registry, which add or remove module from the registry if called with -s ALL (Closes: #715493) * Finish renaming /var/lib/php5/module/ to /var/lib/php5/modules/ and don't create /var/lib/php5/sessions/ -- Ondřej Surý <ondrej@debian.org> Wed, 10 Jul 2013 09:55:28 +0200 php5 (5.5.0+dfsg-7) unstable; urgency=low [ Ondřej Surý ] * This release introduces several major packaging changes: + php5{en,dis}mod now accepts -s <SAPI> argument to selectively enable/disable module for specific SAPI; The -s also accepts ALL as an argument (Closes: #505743) + php5{en,dis}mod now records a state for a module and has two modi operandi: local administrator and maintainer script This has been lousely modeled after apache2 packaging scripts. Thanks Arno Töll for his work on dh_apache2, I have used some parts of it. + Packages can now depend on dh_php5 (provided by php5-dev) which provides: dh_php5, dh_phpize and dh_phpize_clean (also with dh integration). See php-apcu for an example how to build an PHP 5 extension now. The scripts definitely needs some improvements since I can't read nor write perl code without getting dizzy. + There's a new php5query script (again lousely modeled after Apache 2 a2query script) which you can use to query status of module (-m) and/or SAPI (-s) and also to list modules (-M) and SAPIs (-S). + This still needs more documentation and less ducktape. Contributions are welcome and to be discussed in pkg-php-maint mailing list first. -- Ondřej Surý <ondrej@debian.org> Tue, 09 Jul 2013 11:37:57 +0200 php5 (5.5.0+dfsg-6ubuntu1) saucy; urgency=low * Merge from Debian unstable. Remaining changes: - d/control: drop Build-Depends that are in universe: firebird-dev, libc-client-dev, libmcrypt-dev, libonig-dev, libqdbm-dev. - d/rules: drop configuration of packages that are in universe: qdgm, onig. - d/rules: drop CONFIGURE_APACHE_ARGS settings since now we don't build interbase or firebird. - d/rules: export DEB_HOST_MULTIARCH properly. - d/control: drop binary packages php5-imap, php5-interbase and php5-mcrypt since we have separate versions in universe. - d/modulelist: drop imap, interbase and mcrypt since we have separate versions in universe. - d/rules: drop configuration of imap and mcrypt since we have separate versions in universe. - d/source_php5.py, d/rules: add apport hook. - d/rules: stop mysql instance on clean just in case we failed in tests. - d/control, d/rules: re-enable libedit-dev. * Remaining changes that were previously undocumented: - d/control: switch Build-Depends of netcat-traditional to netcat-openbsd as only the latter is in main. * Drop changes: - Add build-dependency on lemon, which we now need. This is evidently no longer required, since there is no sign of it being used in 5.4.15-1ubuntu3. - Dropped libcurl-dev not in the archive. libcurl-dev is a virtual alternative, so doesn't need to be dropped. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.5 and mysql-client-5.5 to avoid upstart and mysql-server-5.5 postinst confusion with starting up multiple mysqlds listening on the same port. The test infrastructure in packaging has changed, and now breaks without the mysql-server-5.5 postinst having run and created the mysql user. However, it also finds an available port itself so no longer conflicts with our mysql-server-5.5 postinst. - Patches included upstream: + debian/patches/CVE-2013-2110.patch + debian/patches/fix_gd_210.patch + debian/patches/CVE-2013-4635.patch + debian/patches/CVE-2013-4636.patch * Drop changes that were previously undocumented: - d/rules: adjust memory limits in .ini files. It appears that this was intended to be dropped back in 5.4.6-1ubuntu1, going by the old changelog entry. - d/rules: adjust openssl path in configure script. PHP still appears to configure, detect and build openssl-related components correctly regardless. - d/rules: disable parallel builds. There is no previous explanation as to why this was disabled, and having this in place is standard practice and in the Debian packaging. - d/rules: adjust PHP5_{HOST,BUILD}_GNU_TYPE. There is no previous explanation as to why this was present, and I can't find any regression that would be fixed by this change. * New changes: - d/rules, d/control: drop use of dh_systemd as it is in universe. - d/control: relegate php5-json from Recommends to Suggests as it is in universe. -- Robie Basak <robie.basak@ubuntu.com> Mon, 15 Jul 2013 14:09:59 +0000 php5 (5.5.0+dfsg-6) unstable; urgency=low [ Gianfranco Costamagna ] * Fixed debian/watch file [ Ondřej Surý ] * Mangle apache2filter DSO name before running dh_apache2 (Closes: #714713) * Don't fail upstart/systemd job if no ERRORS in config file is found -- Ondřej Surý <ondrej@debian.org> Wed, 03 Jul 2013 14:26:32 +0200 php5 (5.5.0+dfsg-5) unstable; urgency=low * Build with systemd only on linux-any (Closes: #714728) * Fix FTBFS introduced by multiarched libgmp-dev (affected by #675577) -- Ondřej Surý <ondrej@debian.org> Tue, 02 Jul 2013 13:38:11 +0200 php5 (5.5.0+dfsg-4) unstable; urgency=low * Install systemd service file only to php5-fpm package (Closes: #713948) -- Ondřej Surý <ondrej@debian.org> Mon, 24 Jun 2013 09:13:43 +0200 php5 (5.5.0+dfsg-3) unstable; urgency=low * Utilize new php5-fpm --nodaemonize and --daemonize options in sysvinit, upstart and systemd jobs * Enable FPM systemd support to report health to systemd * Switch systemd job type to notify as we have a support for sd_notify compiled in now -- Ondřej Surý <ondrej@debian.org> Sun, 23 Jun 2013 16:09:32 +0200 php5 (5.5.0+dfsg-2) unstable; urgency=low * Use dh-systemd to enable systemd support for starting php5-fpm (along with existing sysvinit and upstart support) -- Ondřej Surý <ondrej@debian.org> Sun, 23 Jun 2013 12:37:58 +0200 php5 (5.5.0+dfsg-1) unstable; urgency=low * New upstream version 5.5.0+dfsg * Update dfsg-repack.sh script to handle upstream .xz tarballs better * Update patches to 5.5.0+dfsg release -- Ondřej Surý <ondrej@debian.org> Fri, 21 Jun 2013 13:55:06 +0200 php5 (5.5.0~rc3+dfsg-2) unstable; urgency=low [Ondřej Surý] * Make the php5{en,dis}mod less picky on removed files or changed symlinks to prevent breakages on upgrades where users have mangled with the files and symlinks in /etc/php5/{mods-available,conf.d}. [Thijs Kinkhorst] * Override license-problem-json-evil for README.REDIST.BINS. * Put all licences statically in debian/copyright. -- Ondřej Surý <ondrej@debian.org> Tue, 11 Jun 2013 10:02:33 +0200 php5 (5.5.0~rc3+dfsg-1) unstable; urgency=low * New upstream version 5.5.0~rc3+dfsg * Pre-Depend on apache2 (>= 2.4) to workaround #711454 * php5-common now suggests php5-user-cache virtual package which is provided by php5-apcu, php5-yac and php5-xcache. * Make the Breaks on php5-suhosin versioned to allow suhosin backports when there's a new upstream version (Acked by suhosin maintainer) * Disable running tests on mipsen until #710937 is fixed -- Ondřej Surý <ondrej@debian.org> Thu, 06 Jun 2013 20:53:09 +0200 php5 (5.5.0~rc2+dfsg-2) unstable; urgency=low * Don't depend on lsof on hurd-any and kfreebsd-any and make the call in sessionclean optional (Closes: #710684) * Add initial support to php5-fpm for systemd service and upstart job in addition to sysvinit script * Update systzdata patch to v10 * Add php5-json to Recommends to declare strong dependency at least in jessie -- Ondřej Surý <ondrej@debian.org> Sat, 01 Jun 2013 17:58:09 +0200 php5 (5.5.0~rc2+dfsg-1) unstable; urgency=low * Imported Upstream version 5.5.0~rc2+dfsg * Update patches for 5.5.0~rc2 release -- Ondřej Surý <ondrej@debian.org> Mon, 27 May 2013 21:39:36 +0200 php5 (5.5.0~rc1+dfsg-2) unstable; urgency=low [ Thijs Kinkhorst ] * Wrap long line in php5-readline extended description. * Switch from hardening-wrapper to dpkg-buildflags. * Canonicalise Vcs-* fields as suggested by Lintian. * Checked for policy 3.9.4, no changes necessary. [ Ondřej Surý ] * Install Zend Opcache into php5-common (Closes: #709314) * Add support for handling zend_extension(s) in addition to extensions (Thanks to Yaacov Akiba Slama for catching that) * Upload to unstable -- Ondřej Surý <ondrej@debian.org> Thu, 23 May 2013 09:07:41 +0200 php5 (5.5.0~rc1+dfsg-1) experimental; urgency=low * Imported Upstream version 5.5.0~rc1+dfsg * Enable VPX (WEBP) support in GD extension * Add dfsg-repack.sh script to remove non-free JSON module (Closes: #692613) * Remove php5-json from Provides, since that's no longer true -- Ondřej Surý <ondrej@debian.org> Fri, 17 May 2013 14:41:41 +0200 php5 (5.5.0~rc1-3) experimental; urgency=low * Add dependency on lsof (Closes: #708087) * Add versioned conflicts with php-apc (<< 4.0.0) that is in fact php5-apcu, and php5-xdebug (<< 2.2.2) that added support for PHP 5.5 * Enable VPX (WEBP) support in GD extension * Prepare for libgd2-dev to libgd-dev rename -- Ondřej Surý <ondrej@debian.org> Wed, 15 May 2013 10:13:02 +0200 php5 (5.5.0~rc1-2) experimental; urgency=low * Load Apache 2.4 maintainer script helper and conditionally define the conditional function php5_enable if that succeeds (Closes: #707659) -- Ondřej Surý <ondrej@debian.org> Fri, 10 May 2013 08:21:48 +0200 php5 (5.5.0~rc1-1) experimental; urgency=low * Imported Upstream version 5.5.0~rc1 * Remove php5-5.5.0~rc1~0~78c79a2d5b.patch since PHP 5.5.0RC1 is out -- Ondřej Surý <ondrej@debian.org> Thu, 09 May 2013 19:21:03 +0200 php5 (5.5.0~beta4-4) experimental; urgency=low * Use #DEBHELPER# capability of dh_apache2 to install/remove modules * Rewrite and unify dpkg maintfiles and fix php5-cgi postinst script (Closes: #707131) -- Ondřej Surý <ondrej@debian.org> Tue, 07 May 2013 11:04:25 +0200 php5 (5.5.0~beta4-3) experimental; urgency=low [Thijs Kinkhorst] * debian/control: Remove ${apache2:Depends} substvar to allow installing the modules with Apache 2.4. -- Ondřej Surý <ondrej@debian.org> Mon, 06 May 2013 19:35:44 +0200 php5 (5.5.0~beta4-2) experimental; urgency=low * Pull upstream git fixes to have the latest ext/gd tree * Update patches on top of current php.git * Update package to use Apache 2.4 (Closes: #666820) * Update Build-Depends to apache2-dev (>= 2.4) * short_open_tag now defaults to Off (Closes: #142178) * Add opcache.so to list of forbidden extensions in test run -- Ondřej Surý <ondrej@debian.org> Mon, 06 May 2013 19:35:25 +0200 php5 (5.5.0~beta4-1) experimental; urgency=low * Imported Upstream version 5.5.0~beta4 * Hardcode MAXPATHLEN to 4096 if undefined to fix GNU Hurd build * Update gd-2.1.0 patch to not include antialias functions not provided by GD 2.1.0 library * Require libgd2-dev (>= 2.1.0~alpha~4) to have compatible version -- Ondřej Surý <ondrej@debian.org> Thu, 25 Apr 2013 13:07:28 +0200 php5 (5.5.0~beta3-1) experimental; urgency=low * Imported Upstream version 5.5.0~beta3 * Update patches to 5.5.0~beta3 release * Fix GNU Hurd check in also in ext/opcache/config.m4 and configure * Add support for GD >= 2.1.0, possibly (Closes: #704457) -- Ondřej Surý <ondrej@debian.org> Thu, 11 Apr 2013 17:25:42 +0200 php5 (5.5.0~beta2-1) experimental; urgency=low * Imported Upstream version 5.5.0~beta2 * Fix compilation on GNU Hurd (Courtesy of Svante Signell) * Refresh and delete merged patches in php 5.5.0beta2 -- Ondřej Surý <ondrej@debian.org> Fri, 29 Mar 2013 01:38:38 +0100 php5 (5.5.0~beta1-2) experimental; urgency=low * Add php5-readline based on libedit (Courtesy of Andreas Pour) * Add -n to run-tests.php for php to not pick-up any local php.ini. It's not a problem on sbuilds, but it might break when building locally. (Courtesy of Andreas Pour) * XCache will support PHP 5.5 from version 3.1 * Disable -gstabs usage, which was breaking clang builds and is not needed. * Remove .gitignore from git * Pull upstream fix for kFreeBSD builds -- Ondřej Surý <ondrej@debian.org> Tue, 26 Mar 2013 21:26:33 +0100 php5 (5.5.0~beta1-1) experimental; urgency=low * Imported Upstream version 5.5.0~beta1 + Includes Zend OPCache (Closes: #700577) * Refresh patches for release 5.5.0~beta1 * Add Breaks for other low-level Zend OpCache and debug packages -- Ondřej Surý <ondrej@debian.org> Fri, 22 Mar 2013 08:39:49 +0100 php5 (5.5.0~alpha5-2) experimental; urgency=low * Enable interactive mode in php5-cli (Closes: #341868) -- Ondřej Surý <ondrej@debian.org> Tue, 05 Mar 2013 16:39:21 +0100 php5 (5.5.0~alpha5-1) experimental; urgency=low * Imported Upstream version 5.5.0~alpha5 * Update patches for 5.5.0~alpha5 release -- Ondřej Surý <ondrej@debian.org> Mon, 25 Feb 2013 16:38:27 +0100 php5 (5.5.0~alpha4-1) experimental; urgency=low * Imported Upstream version 5.5.0~alpha4 * Update patches for 5.5.0~alpha4 release -- Ondřej Surý <ondrej@debian.org> Tue, 19 Feb 2013 13:44:13 +0100 php5 (5.5.0~alpha3-1) experimental; urgency=low * Merged changes from wheezy/sid + Fix typo in path to session clean script in cron file + Install logrotate script in php5-fpm package * Imported Upstream version 5.5.0~alpha3 * Update patches for new release + Patch debian/patches/libxml-reset-the-handler.patch has been merged upstream * Make the sessionclean script compatible with awk != gawk -- Ondřej Surý <ondrej@debian.org> Wed, 16 Jan 2013 09:17:30 +0100 php5 (5.5.0~alpha1-1) experimental; urgency=low * Imported Upstream version 5.5.0~alpha1 * Return to PHP versions of crypt() functions, it's to big burden to carry on the patch * fix_crash_in__php_mssql_get_column_content_without_type.patch: remove patch, it has been merged upstream * Update&refresh patches to PHP 5.5 branch * Slim down the 006-debian_quirks.patch by removing PIKE related patch * Remove number of old possibly unneeded patches * Remove broken MultiArch patch from upstream and replace it with new Debian's version -- Ondřej Surý <ondrej@debian.org> Fri, 16 Nov 2012 15:22:45 +0100 php5 (5.4.15-1ubuntu3) saucy; urgency=low * SECURITY UPDATE: denial of service via overflow in SdnToJewish - debian/patches/CVE-2013-4635.patch: check value in ext/calendar/jewish.c, add test to ext/calendar/tests/jdtojewish64.phpt. - CVE-2013-4635 * SECURITY UPDATE: denial of service via incorrect MIME type detection - debian/patches/CVE-2013-4636.patch: use efree in ext/fileinfo/libmagic/softmagic.c. - CVE-2013-4636 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 28 Jun 2013 08:20:11 -0400 php5 (5.4.15-1ubuntu2) saucy; urgency=low * SECURITY UPDATE: denial of service and possible code execution via quoted_printable_encode overflow - debian/patches/CVE-2013-2110.patch: calculate proper string size in ext/standard/quot_print.c, add test to ext/standard/tests/strings/bug64879.phpt. - CVE-2013-2110 * debian/patches/fix_gd_210.patch: fix php-gd compatibility with libgd2 2.1.0. (LP: #1188070) -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Tue, 11 Jun 2013 09:19:47 -0400 php5 (5.4.15-1ubuntu1) saucy; urgency=low * Merge from Debian experimental. Remaining changes: - d/rules: Simplify apache config settings since we never build interbase or firebird. - debian/rules: export DEB_HOST_MULTIARCH properly. - Add build-dependency on lemon, which we now need. - Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. - Dropped libcurl-dev not in the archive. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.5 and mysql-client-5.5 to avoid upstart and mysql-server-5.5 postinst confusion with starting up multiple mysqlds listening on the same port. - Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. - Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: - Dropped building of mcrypt, imap, and interbase. - Install apport hook for php5. - stop mysql instance on clean just in case we failed in tests - debian/control, debian/rules: Re-enable libedit-dev. * Dropped changes: - debian/patches/CVE-2013-1643.patch: included upstream. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Sun, 19 May 2013 19:13:15 -0400 php5 (5.4.9-4ubuntu2) raring; urgency=low * SECURITY UPDATE: arbitrary file disclosure via XML External Entity - debian/patches/CVE-2013-1643.patch: disable the entity loader in ext/libxml/libxml.c, ext/libxml/php_libxml.h, ext/soap/php_xml.c. - CVE-2013-1643 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 08 Mar 2013 16:12:43 -0500 php5 (5.4.9-4ubuntu1) raring; urgency=low * Merge from Debian experimental. Remaining changes: - d/rules: Simplify apache config settings since we never build interbase or firebird. - debian/rules: export DEB_HOST_MULTIARCH properly. - Add build-dependency on lemon, which we now need. - Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. - Dropped libcurl-dev not in the archive. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.5 and mysql-client-5.5 to avoid upstart and mysql-server-5.5 postinst confusion with starting up multiple mysqlds listening on the same port. - Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. - Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: - Dropped building of mcrypt, imap, and interbase. - Install apport hook for php5. - stop mysql instance on clean just in case we failed in tests - debian/control, debian/rules: Re-enable libedit-dev. * Dropped changes: - Re-add logic to guess default timezone from system to fix default timezone regression Cherry-picked from Debian 5.4.4-6 (also in Debian 5.4.6-2). - debian/patches/libxml290.patch: Fix FTBFS with libxml 2.9.0. (included upstream) -- Clint Byrum <clint@ubuntu.com> Tue, 04 Dec 2012 13:57:33 -0800 php5 (5.4.9-2) experimental; urgency=low * Introduce new (hopefully slightly smarter) way of not deleting still used session files -- Ondřej Surý <ondrej@debian.org> Thu, 29 Nov 2012 08:48:24 +0100 php5 (5.4.9-1) experimental; urgency=low [ Lior Kaplan ] * Support removing dangling symlinks, users are allowed to remove configuration files * Exit with code 0 even if module symlink doesn't exist (Closes: #692013) [ Ondřej Surý ] * Imported Upstream version 5.4.9 * Remove all traces of suhosin patch from debian sources * Convert to 3.0 (quilt) debian source format (Closes: #694543) * Remove broken MultiArch patch from upstream and replace it with new Debian's version * Replace Breaks with Conflict for php5-suhosin * Remove useless .la file from libphp5-embed -- Ondřej Surý <ondrej@debian.org> Tue, 27 Nov 2012 16:54:48 +0100 php5 (5.4.8-1) experimental; urgency=low * Imported Upstream version 5.4.8 + Update patches for new release * Remove IfModule to always interpret PHP if the module is enabled * Fix extended DES crypt when salt != 9 * Fix libphp5-embed linking: + Expose all installed (and not built time) SAPIs via php-config --php-sapis + Add /usr/lib/php5 to php-config --ldflags output to allow linking with libphp5.so * Add new lintian-overrides for libphp5-embed * Add logrotate script for php5-fpm (Closes: #683415) * Add more warning text about new php5_cgi apache2 module (Closes: #687307) * Add Breaks: php5-suhosin so people don't try to use it with PHP 5.4 -- Ondřej Surý <ondrej@debian.org> Thu, 25 Oct 2012 16:05:34 +0200 php5 (5.4.6-2) experimental; urgency=low * Merge 5.4.4-5, 5.4.4-6 and 5.4.4-7 changes -- Ondřej Surý <ondrej@debian.org> Thu, 30 Aug 2012 13:30:54 +0200 php5 (5.4.6-1ubuntu2) raring; urgency=low [ Robie Basak ] * Re-add logic to guess default timezone from system to fix default timezone regression (LP: #1069529). Cherry-picked from Debian 5.4.4-6 (also in Debian 5.4.6-2). [ Marc Deslauriers ] * debian/patches/libxml290.patch: Fix FTBFS with libxml 2.9.0. -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 07 Nov 2012 11:54:55 -0500 php5 (5.4.6-1ubuntu1) quantal; urgency=low * Merge from Debian experimental (LP: #1006738 , LP: #1040212) Remaining changes: - d/rules: Simplify apache config settings since we never build interbase or firebird. - debian/rules: export DEB_HOST_MULTIARCH properly. - Add build-dependency on lemon, which we now need. - Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. - Dropped libcurl-dev not in the archive. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.5 and mysql-client-5.5 to avoid upstart and mysql-server-5.5 postinst confusion with starting up multiple mysqlds listening on the same port. - Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. - Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: - Dropped building of mcrypt, imap, and interbase. - Install apport hook for php5. - stop mysql instance on clean just in case we failed in tests - debian/control, debian/rules: Re-enable libedit-dev. * Dropped Changes: - debian/rules: change memory limits on example .ini files. -- Clint Byrum <clint@ubuntu.com> Wed, 22 Aug 2012 13:40:18 -0700 php5 (5.4.6-1) experimental; urgency=low * Imported Upstream version 5.4.6 * Apply another fix to compile --without-system-tzdata (Courtesy of Michael Heimpold) -- Ondřej Surý <ondrej@debian.org> Tue, 21 Aug 2012 12:37:12 +0200 php5 (5.4.5-1) experimental; urgency=low * Imported Upstream version 5.4.5 * Update patches for PHP 5.4.5 release * Compile with system libzip (upstream has added support for that) -- Ondřej Surý <ondrej@debian.org> Mon, 23 Jul 2012 11:12:08 +0200 php5 (5.4.4-7) unstable; urgency=low * Add explanatory text about MultiViews negotiation support to README.Debian with additions from Christoph Anton Mitterer (Closes: #670945) -- Ondřej Surý <ondrej@debian.org> Wed, 29 Aug 2012 09:18:14 +0200 php5 (5.4.4-6) unstable; urgency=low * Merge a fix for zlib.output_compression from the upstream git (Closes: #683432) * Re-add logic to guess default timezone from system (Closes: #673763) and remove the spurious warning about the selection. * Fix invalid generated tar files from PEAR Archive/Tar package (Closes: #680251) * Merge a couple of upstream fixes from PHP 5.4.5 and 5.4.6: + Fixed bug #62653: (unset($array[$float]) causes a crash). + Fixed bug #62565 (Crashes due non-initialized internal properties_table). + Fixed bug #61964 (finfo_open with directory causes invalid free). + Fixed bug #62564 (Extending MessageFormatter and adding property causes crash). + Fixed bug #62594 (segfault in mysqlnd_res_meta::set_mode). + Fixed bug #62616 (ArrayIterator::count() from IteratorIterator instance gives Segmentation fault). + Fixed bug #62373 (serialize() generates wrong reference to the object). + Fixed bug #61998 (Using traits with method aliases appears to result in crash during execution). + Fixed bug #55042 (Erealloc in iconv.c unsafe). + Fixed bug #62266 (Custom extension segfaults during xmlParseFile with FPM SAPI) -- Ondřej Surý <ondrej@debian.org> Thu, 23 Aug 2012 13:59:49 +0200 php5 (5.4.4-5) unstable; urgency=low * Get rid of empty examples directory (Closes: #684108) * Provide sensible default configuration for PHP MIME-types inside Apache 2 configuration (Closes: #685340) * Add NEWS text about more strict extension configuration * Update NEWS and README.Debian based on debian-l10n-english review (Courtesy of Justing B Rye) -- Ondřej Surý <ondrej@debian.org> Tue, 21 Aug 2012 17:05:06 +0200 php5 (5.4.4-4) unstable; urgency=low * Fix php5-fpm segfault (PHP#62205) * CVE-2012-2688: potential overflow in _php_stream_scandir (Closes: #683274) * Improve security in CGI section in README.Debian (Closes: #674205) -- Ondřej Surý <ondrej@debian.org> Mon, 06 Aug 2012 13:01:42 +0200 php5 (5.4.4-3ubuntu1) quantal; urgency=low * Merge from Debian unstable. (LP: #1014044) (LP: #1024355) Remaining changes: - d/rules: Simplify apache config settings since we never build interbase or firebird. - debian/rules: export DEB_HOST_MULTIARCH properly. - Add build-dependency on lemon, which we now need. - Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. - Dropped libcurl-dev not in the archive. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.5 and mysql-client-5.5 to avoid upstart and mysql-server-5.5 postinst confusion with starting up multiple mysqlds listening on the same port. - Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. - Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests -- Clint Byrum <clint@ubuntu.com> Mon, 23 Jul 2012 11:08:52 -0700 php5 (5.4.4-3) unstable; urgency=low * Update ucf/ucfr scripts to not conflict between mysql and mysqlnd extension (Closes: #678371) -- Ondřej Surý <ondrej@debian.org> Thu, 21 Jun 2012 11:22:05 +0200 php5 (5.4.4-2) unstable; urgency=high * Fix PHP5-FPM not reporting errors to web server (nginx) (Closes: #677994) * Bump urgency to high to replace the RC2 version in testing sooner. -- Ondřej Surý <ondrej@debian.org> Tue, 19 Jun 2012 09:09:13 +0200 php5 (5.4.4-1ubuntu1) quantal; urgency=low * Merge from Debian unstable. Remaining changes: - d/rules: Simplify apache config settings since we never build interbase or firebird. - debian/rules: export DEB_HOST_MULTIARCH properly. - Add build-dependency on lemon, which we now need. - Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. - Dropped libcurl-dev not in the archive. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.5 and mysql-client-5.5 to avoid upstart and mysql-server-5.5 postinst confusion with starting up multiple mysqlds listening on the same port. - Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. - Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests * Dropped Changes: * d/rules: enable Suhosin patch with PHP5_SUHOSIN=yes -- Upstream suhosin has been slow to adopt PHP 5.4, and is showing signs of disengagement. Therefore, we will follow Debian's lead and drop Suhosin for now. - d/control: build-depend on mysql 5.5 instead of 5.1 for running tests. -- Debian just deps on mysql-server - Suggest php5-suhosin rather than recommends. -- Dropping suhosin - d/setup-mysql.sh: modify to work with mysql 5.5 differences -- superseded in Debian. - Only build php5-sqlite for sqlite3, dropping the obsolete sqlite2. -- superseded in Debian - d/maxlifetime: Improve maxlifetime script to scan for more SAPIs and scan all *.ini in conf.d directory. -- Change came from Debian - d/libapache2-mod-php5.postinst,libapache2-mod-php5filter.postinst: Restart apache on first install to ensure module is fully enabled. -- Change came from Debian - debian/patches/php5-CVE-2012-1823.patch: filter query strings that are prefixed with '-' -- Fixed upstream - debian/control: Recommend php5-dev for php-pear. -- This was a poorly conceived idea anyway. - Pre-Depend on a new enough version of dpkg for dpkg-maintscript-helper rather than checking whether it exists at run-time, leading to more predictable behaviour on upgrades. -- Applied in Debian - d/p/gd-multiarch-fix.patch: superseded * d/NEWS: add note explaining that SUHOSIN is no longer enabled in the Ubuntu packages. -- Clint Byrum <clint@ubuntu.com> Mon, 18 Jun 2012 16:10:26 -0700 php5 (5.4.4-1) unstable; urgency=low * Imported Upstream version 5.4.4 * Generate 16 char salt instead of 12 char salt for SHA-512 -- Ondřej Surý <ondrej@debian.org> Thu, 14 Jun 2012 16:03:51 +0200 php5 (5.4.4~rc2-1) unstable; urgency=low * Imported Upstream version 5.4.4~rc2 -- Ondřej Surý <ondrej@debian.org> Thu, 31 May 2012 10:58:14 +0200 php5 (5.4.4~rc1-1) unstable; urgency=low * Imported Upstream version 5.4.4~rc1 + CVE-2012-2386: Fix integer overflow leading to heap-buffer overflow in the Phar extension * Remove some READMEs removed by upstream + README.SVN-RULES - upstream has moved to git + README.Zeus - Zeus Web Server is dead * CVE-2012-2386: one additional, similar vulnerable code construct in the Phar extension -- Ondřej Surý <ondrej@debian.org> Tue, 29 May 2012 12:12:27 +0200 php5 (5.4.3-6) unstable; urgency=low [ Ondřej Surý ] * Merge 5.3.10-1 and 5.3.10-2 changelog * Remove *.patch from .gitignore, it broke adding quilt patches * Revert "Use system libzip (Pulled from Fedora)" (Closes: #674151) * Add patch to fix tt-rss backend php crash (Closes: #666200) [ Thorsten Glaser ] * Add support for Linux/m68k atomics needed by the FPM SAPI (Closes: #672277) [ Gedalya ] * Add logrotate script for php5-fpm (Closes: #673558) -- Ondřej Surý <ondrej@debian.org> Mon, 28 May 2012 10:43:44 +0200 php5 (5.4.3-5) unstable; urgency=low * Pull patches from Fedora: + Update use_embedded_timezonedb.patch to r8: fix compile error without --with-system-tzdata configured + Add ldconfig post/postun for -embedded (Hans de Goede) + Use RTLD_NOW instead of RTLD_LAZY (pulled from Fedora) + Use system libzip (pulled from Fedora) * Disable undefined ZIP_OVERWRITE to allow compile with system libzip -- Ondřej Surý <ondrej@debian.org> Mon, 21 May 2012 13:37:35 +0200 php5 (5.4.3-4) unstable; urgency=low * Fix tests ([ERROR] Can't start server: bind-address refers to multiple interfaces!) (Closes: #672588) -- Ondřej Surý <ondrej@debian.org> Tue, 15 May 2012 18:01:55 +0200 php5 (5.4.3-3) unstable; urgency=low * Disable log redirection in debian/setup-mysql.sh to help diagnose the setup-mysql.sh failure (still not fixed, but not reproduceable on my local box) -- Ondřej Surý <ondrej@debian.org> Tue, 15 May 2012 14:27:12 +0200 php5 (5.4.3-2) unstable; urgency=low * Add --no-defaults to rest of the mysql commands in setup-mysql.sh script (Closes: #672588) * Add debugging info to debian/setup-mysql.sh to help diagnose any further problems -- Ondřej Surý <ondrej@debian.org> Tue, 15 May 2012 10:26:34 +0200 php5 (5.4.3-1) unstable; urgency=low * Imported Upstream version 5.4.3 + CVE-2012-2311: Complete fix for PHP-CGI query string parameter vulnerability + CVE-2012-2329: Fix a buffer overflow vulnerability in the apache_request_headers() (PHP 5.3 is not vulnerable) -- Ondřej Surý <ondrej@debian.org> Wed, 09 May 2012 08:48:10 +0200 php5 (5.4.2-1) unstable; urgency=low * Imported Upstream version 5.4.2 + CVE-2012-1823: Fix PHP-CGI query string parameter vulnerability. -- Ondřej Surý <ondrej@debian.org> Fri, 04 May 2012 08:47:42 +0200 php5 (5.4.1-1) unstable; urgency=low * Imported Upstream version 5.4.1 + Fixed insufficient validating of upload name leading to corrupted $_FILES indices). (CVE-2012-1172). + Add open_basedir checks to readline_write_history and readline_read_history. + Add Apache 2.4 support (.deb package in experimental comming soon) + Added debug info handler to DOM objects. * Remove Breaks: on php applications on maintainer requests: + simplesamlphp + php-horde-auth * Add better configuration snippet for CGI (Closes: #571795) * Update a description of PHP language based on the text from upstream web page (http://www.php.net/manual/en/intro-whatis.php) * Enable embed SAPI (Closes: #380731) * Add lintian override for libphp5-embed: embedded-library usr/lib/libphp5.so: file * Add ldconfig to libphp5-embed.{postinst,postrm} * Fix #EXTRA# processing for SAPIs (extra ; at the end of sed cmd) -- Ondřej Surý <ondrej@debian.org> Thu, 03 May 2012 13:29:07 +0200 php5 (5.4.1~rc1-1) unstable; urgency=low * Add information about flavor of INI file inside the INI file, install php.ini-development INI to /usr/share/php5 (Closes: #667711) * Imported Upstream version 5.4.1~rc1 * Update patches for the 5.4.1RC1 release -- Ondřej Surý <ondrej@debian.org> Fri, 06 Apr 2012 15:04:08 +0200 php5 (5.4.0-4) unstable; urgency=low * Change id -u+getent combo to whoami (Courtesy of Michiel van Leening) * Fix missing FOUND declaration (pulled from dotdeb) * Add Breaks for all known broken packages not working with PHP 5.4 (Closes: #666411) -- Ondřej Surý <ondrej@debian.org> Fri, 06 Apr 2012 12:46:14 +0200 php5 (5.4.0-3) unstable; urgency=high [ Thijs Kinkhorst ] * Correct version number; 5.4.0~rc7-3 never existed * Add placeholder build-arch, build-indep targets * Each module needs to depend on ucf, as it's used in postinst * Newer version of roundcube available that isn't broken anymore * Checked for policy 3.9.3 [ Ondřej Surý ] * Remove Pre-Depends on dpkg-maintscript-helper * Remove obsolete configure options * Add support for *.extra.{post,pre}{inst,rm} files * Add support for MultiArch libgd2-xpm-dev * Add support for MultiArch libmysqlclient-dev * Add Lior to maintainers * setup-mysql.sh changed to: + never run as root (fix needed for MySQL 5.5 in pbuilder) + drop and create database test which may or may not exist * Restart apache2 instead of reloading on first install (Closes: #589386) [ Julien Cristau ] * Fix postinst scripts to not use 'local' outside functions (Closes: #664853, #664849) -- Ondřej Surý <ondrej@debian.org> Wed, 14 Mar 2012 08:49:32 +0100 php5 (5.4.0-2) unstable; urgency=low * Build depend on libpng-dev | libpng12-dev (Closes: #662466) -- Ondřej Surý <ondrej@debian.org> Mon, 05 Mar 2012 13:26:06 +0100 php5 (5.4.0-1) unstable; urgency=low * PHP 5.4 has landed in unstable * Imported Upstream version 5.4.0 * Use $(filter pattern...,text) instead of $(findstring find,in) in debian/rules to match against space separated list of words and not substrings (Closes: #660647) -- Ondřej Surý <ondrej@debian.org> Sat, 03 Mar 2012 16:03:12 +0100 php5 (5.4.0~rc8-2) experimental; urgency=low * Use $(filter pattern...,text) instead of $(findstring find,in) in debian/rules to match against space separated list of words and not just substrings (i386 != hurd-i386) (Closes: #660647) -- Ondřej Surý <ondrej@debian.org> Mon, 20 Feb 2012 17:26:54 +0100 php5 (5.4.0~rc8-1) experimental; urgency=low * Imported Upstream version 5.4.0~rc8 * Improve maxlifetime script to scan for more SAPIs and scan all *.ini in conf.d directory * Move php5-mysqlnd to Priority: extra to make debcheck happy * Check for dpkg-maintscript-helper existence in php5-fpm maintainer scripts * Add Pre-Depends: dpkg (>= 1.15.7.2~) | dpkg-maintscript-helper to allow single upgrade path (dpkg-maintscript-helper package will be provided for Ubuntu Lucid PPA) -- Ondřej Surý <ondrej@debian.org> Fri, 17 Feb 2012 21:37:05 +0100 php5 (5.4.0~rc7-2) experimental; urgency=low * Use corrected module PHPAPI (20100525) and not (220100525) * Use $ZEND_MODULE_API_NO for $DEBIAN_PHP_API. Check for PHPAPI changes, so we don't become binary incompatible without knowing it. * Update debian/README.Debian.security: + register_globals was removed from PHP 5.4 + Remove safe_mode (removed upstream) and update and reformat text slightly + Reviewed by english l10n team (thanks a lot) * php5-fpm now listen on socket instead of localhost by default (Closes: #650204) * Add NEWS about change of default location of php5-fpm socket * Stop php5-fpm on runlevels 0 1 6 (Closes: #650203) * Add -ignore_readdir_race to find call in session cleanup (#634864) * Don't prefix extension list automatically, it's done by subsvars now (Closes: #633491) * Depends on non-forking fuser in psmisc (Closes: #633100) * php5-common.README.Debian additions and cleanup: + Add a paragraph about PHP_INI_SCAN_DIR (Closes: #659123) + Reformat README.Debian to common formatting + Mention php5-fpm where appropriate + Use 'PHP 5' and 'Apache HTTP Server' instead of php5 and apache2 -- Ondřej Surý <ondrej@debian.org> Thu, 09 Feb 2012 00:03:26 +0100 php5 (5.4.0~rc7-1) experimental; urgency=low [ Thijs Kinkhorst ] * Textual improvements to README.Debian.security, NEWS (closes: #632675,#643015,#658208). [ Ondřej Surý ] * Imported Upstream version 5.4.0~rc7 + CVE-2012-0830: Fix PHP remote vulnerability (code injection) in the implementation of the max_input_vars configuration variable + CVE-2011-3389: Fix possible attack in SSL sockets with SSL 3.0/TLS 1.0. -- Ondřej Surý <ondrej@debian.org> Fri, 03 Feb 2012 11:03:39 +0100 php5 (5.4.0~rc6-3) experimental; urgency=low * ucfize php5-module.* and store priority in module .ini file * Store dsonames in maintainer scripts to make postrm work * Make php5enmod idempotent -- Ondřej Surý <ondrej@debian.org> Thu, 02 Feb 2012 12:25:54 +0100 php5 (5.4.0~rc6-2) experimental; urgency=low * Merge all changes from Debian unstable branch (up to 5.3.9-6) * Fix -Wformat-security error in mysqlnd * Add php5{en,dis}mod to enable/disable modules from maintainer scripts (Closes: #447826, #582320, #627145) (Initial work courtesy of Clint Byrum) * Modify comments in php.inis to match compiled default session * Adjust new 5.3 patches for 5.4 branch * Ensure pdo.so is loaded before all other modules * Add trigger to restart php5-fpm when module is installed/removed * Remove --with-ttf and --with-t1lib (Closes: #658248, #638755) * Add debian/NEWS item about missing t1lib functions -- Ondřej Surý <ondrej@debian.org> Wed, 01 Feb 2012 18:27:30 +0100 php5 (5.4.0~rc6-1) experimental; urgency=low * Imported Upstream version 5.4.0~rc6 -- Ondřej Surý <ondrej@debian.org> Fri, 20 Jan 2012 15:30:48 +0100 php5 (5.4.0~rc5-1) experimental; urgency=low * Imported Upstream version 5.4.0~rc5 * Update patches for new release * Disable suhosin patch -- Ondřej Surý <ondrej@debian.org> Thu, 19 Jan 2012 19:23:36 +0100 php5 (5.4.0~beta2-1) experimental; urgency=low * Remove obsolete sqlite(2) module from php5-sqlite * Use correct signals in php5-fpm init script (Closes: #645934) * Update gbp.conf for experimental branch * Imported Upstream version 5.4.0~beta2 * Refresh patches for the 5.4.0beta2 release * Remove php.ini-paranoid, it's almost useless now * Remove safe_mode setting from suhosin, it has been removed upstream * Remove the php_stream stuff to allow compiling with system-wide libgd * php5-common.docs: Don't install non-existant TODO file -- Ondřej Surý <ondrej@debian.org> Sat, 22 Oct 2011 18:39:33 +0200 php5 (5.3.10-2) unstable; urgency=low * Use $(filter pattern...,text) instead of $(findstring find,in) in debian/rules to match against space separated list of words and not substrings (Closes: #660647) * CVE-2012-0831: magic_quotes_gpc remote disable vulnerability (NOTE: magic_quotes_gpc is DEPRECATED and will be removed from PHP 5.4, e.g. you should not use them!), also fix regression in CVE-2012-0831 (LP#930115) * Depends on non-forking fuser in psmisc (Closes: #633100) * Add Pre-Depends: dpkg (>= 1.15.7.2~) | dpkg-maintscript-helper to allow single upgrade path (dpkg-maintscript-helper package will be provided for Ubuntu Lucid PPA) -- Ondřej Surý <ondrej@debian.org> Mon, 20 Feb 2012 17:40:24 +0100 php5 (5.3.10-1ubuntu4) quantal; urgency=low * SECURITY UPDATE: php5-cgi query string parameters parsing vulnerability - debian/patches/php5-CVE-2012-1823.patch: filter query strings that are prefixed with '-' - CVE-2012-1823 - CVE-2012-2311 -- Steve Beattie <sbeattie@ubuntu.com> Wed, 23 May 2012 15:57:57 -0400 php5 (5.3.10-1ubuntu3) precise; urgency=low * Cherry picked fixes from Debian testing: - d/maxlifetime: Improve maxlifetime script to scan for more SAPIs and scan all *.ini in conf.d directory. (LP: #916065). - d/libapache2-mod-php5.postinst,libapache2-mod-php5filter.postinst: Restart apache on first install to ensure module is fully enabled. (LP: #953081). -- James Page <james.page@ubuntu.com> Wed, 11 Apr 2012 14:27:10 +0100 php5 (5.3.10-1ubuntu2) precise; urgency=low * Pre-Depend on a new enough version of dpkg for dpkg-maintscript-helper rather than checking whether it exists at run-time, leading to more predictable behaviour on upgrades. -- Colin Watson <cjwatson@ubuntu.com> Mon, 05 Mar 2012 12:21:35 +0000 php5 (5.3.10-1ubuntu1) precise; urgency=low * Merge from Debian testing. Remaining changes: - d/control: build-depend on mysql 5.5 instead of 5.1 for running tests. - d/setup-mysql.sh: modify to work with mysql 5.5 differences - debian/rules: export DEB_HOST_MULTIARCH properly. - Only build php5-sqlite for sqlite3, dropping the obsolete sqlite2. - Add build-dependency on lemon, which we now need. - Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. - Dropped libcurl-dev not in the archive. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.5 and mysql-client-5.5 to avoid upstart and mysql-server-5.5 postinst confusion with starting up multiple mysqlds listening on the same port. - Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. - Suggest php5-suhosin rather than recommends. - Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests - debian/control: Recommend php5-dev for php-pear. * Dropped Changes: - d/patches/CVE-2011-4566.patch: Applied upstream - debian/rules: --enable-pcntl for cgi as well. (Applied in Debian) * d/rules: enable Suhosin patch with PHP5_SUHOSIN=yes * d/NEWS: add note explaining that SUHOSIN *is* enabled in the Ubuntu package. * d/rules: Simplify apache config settings since we never build interbase or firebird. -- Clint Byrum <clint@ubuntu.com> Thu, 16 Feb 2012 03:17:18 -0800 php5 (5.3.10-1) unstable; urgency=high [ Raphael Geissert ] * Remove myself from uploaders * Randomly choose the mysql server's port [ Ondřej Surý ] * Fix use_embedded_timezonedb.patch in custom builds (Courtesy of Dominic Scheirlinck) (Closes: #652599) * Fix typo in firebird2.1-dev build dependency * Update gbp.conf for 5.3.x branch * Imported Upstream version 5.3.10 + CVE-2012-0830: Fix PHP remote vulnerability (code injection) in the implementation of the max_input_vars configuration variable -- Ondřej Surý <ondrej@debian.org> Fri, 03 Feb 2012 09:38:06 +0100 php5 (5.3.9-6) unstable; urgency=low * Build MySQL extensions with Native Driver as an alternative (Closes: #576412) * Set default mysql socket location to /var/run/mysqld/mysqld.sock * Move php5-sqlite postinst code to postinst.extra * Cherry-pick patches from Fedora: + Fix mysqlnd socket location fix + Define _GNU_SOURCE in the configure.in + Typing fixes in dba extension + Don't add RPATH to extensions * Add missing check for dpkg-maintscript-helper in sqlite preinst and postrm * Add code to specify priority of modules to load mysqlnd.so before mysql.so and mysqli.so in php5-mysqlnd package * Alter version in rm_conffile call to 5.3.9~ to handle all possible versions due binNMUs (Closes: #656495) * Add more condition when to remove empty postinst script -- Ondřej Surý <ondrej@debian.org> Tue, 31 Jan 2012 15:25:57 +0100 php5 (5.3.9-5) unstable; urgency=low * Use DEB_HOST_ARCH, not DEB_HOST_ARCH_OS to check where to build firebird module (Closes: #645401) * Add back firebird2.5-dev and firebird2.1-dev to allow backports * Disable tests on hurd-i386 for now, because it FTBFS * Don't fail if suhosin is not enabled (Closes: #657808) -- Ondřej Surý <ondrej@debian.org> Sun, 29 Jan 2012 09:27:28 +0100 php5 (5.3.9-4) unstable; urgency=low * Remove suhosin patch from description and add short NEWS about disabling Suhosin patch (Closes: #657697) * Re-enable firebird extension build on armhf and powerpcspe (Closes: #657691) -- Ondřej Surý <ondrej@debian.org> Sat, 28 Jan 2012 08:50:42 +0100 php5 (5.3.9-3) unstable; urgency=low * Don't build firebird extension on hurd, m68k, hppa, ppc64, armhf and powerpcspe (Closes: #651070) * Avoid ptrace hungs when building on hurd * Check for dpkg-maintscript-helper existence instead of hard dpkg dependency to allow backported packaged on older (Ubuntu lucid) systems * Remove Suhosin patch, but add PHP5_SUHOSIN=no/yes option to debian/rules * Update patches after suhosin.patch removal and update suhosin.patch to cleanly apply as a last patch in the series * Replace firebird2.[15]-dev (transitional) dependencies with firebird-dev * More Firebird adjustments, don't build the extension on more ports, where firebird-dev is not available -- Ondřej Surý <ondrej@debian.org> Fri, 27 Jan 2012 11:02:48 +0100 php5 (5.3.9-2) unstable; urgency=low * Handle sqlite.so removal (remove conffile) (Closes: #656495) * Add Breaks: roundcube-sqlite since we no longer ship sqlite.so -- Ondřej Surý <ondrej@debian.org> Tue, 24 Jan 2012 09:55:56 +0100 php5 (5.3.9-1) unstable; urgency=low * Remove obsolete sqlite(2) module from php5-sqlite * Use correct signals in php5-fpm init script (Closes: #645934) * Imported Upstream version 5.3.9 * Adapt debian/patches to 5.3.9 release -- Ondřej Surý <ondrej@debian.org> Wed, 11 Jan 2012 16:33:20 +0100 php5 (5.3.8.0-1ubuntu3) precise; urgency=low * SECURITY UPDATE: Denial of service and possible information disclosure via exif integer overflow - debian/patches/CVE-2011-4566.patch: fix count checks in ext/exif/exif.c. - CVE-2011-4566 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 12 Dec 2011 15:14:28 -0500 php5 (5.3.8.0-1ubuntu2) precise; urgency=low * d/control: build-depend on mysql 5.5 instead of 5.1 for running tests. * d/setup-mysql.sh: modify to work with mysql 5.5 differences -- Clint Byrum <clint@ubuntu.com> Thu, 24 Nov 2011 10:28:38 -0800 php5 (5.3.8.0-1ubuntu1) precise; urgency=low * Resynchronise with Debian. Remaining changes: - debian/rules: export DEB_HOST_MULTIARCH properly. - Only build php5-sqlite for sqlite3, dropping the obsolete sqlite2. - Add build-dependency on lemon, which we now need. - Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. - Dropped libcurl-dev not in the archive. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.1 and mysql-client-5.1 to avoid upstart and mysql-server-5.1 postinst confusion with starting up multiple mysqlds listening on the same port. - Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. - Suggest php5-suhosin rather than recommends. - Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests - debian/control: Recommend php5-dev for php-pear. - debian/rules: --enable-pcntl for cgi as well. * debian/patches/temporary-path-fixes-for-multiarch.patch: Handle multiarch libmysqlclient as well. -- Colin Watson <cjwatson@ubuntu.com> Wed, 23 Nov 2011 12:58:51 +0000 php5 (5.3.8.0-1) unstable; urgency=low * Re-re-imported upstream version 5.3.8, as a new sourceful update, in order to prevent the package from remaining as a native package. -- Sean Finney <seanius@debian.org> Thu, 27 Oct 2011 17:17:02 +0200 php5 (5.3.8-2ubuntu2) precise; urgency=low * Rebuild for libicu48. -- Colin Watson <cjwatson@ubuntu.com> Wed, 23 Nov 2011 10:54:32 +0000 php5 (5.3.8-2ubuntu1) precise; urgency=low * Merge with Debian; remaining changes: - debian/rules: export DEB_HOST_MULTIARCH properly. - Only build php5-sqlite for sqlite3, dropping the obsolete sqlite2. - Add build-dependency on lemon, which we now need. - Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. - Dropped libcurl-dev not in the archive. - debian/control: replace build-depends on mysql-server with mysql-server-core-5.1 and mysql-client-5.1 to avoid upstart and mysql-server-5.1 postinst confusion with starting up multiple mysqlds listening on the same port. - Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. - Suggest php5-suhosin rather than recommends. - Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests - debian/control: Recommend php5-dev for php-pear. - debian/rules: --enable-pcntl for cgi as well. -- Matthias Klose <doko@ubuntu.com> Tue, 18 Oct 2011 15:39:03 +0200 php5 (5.3.8-2) unstable; urgency=low * Fix botched upload when git-buildpackage didn't play well with bz2 upstream archive * Add additional temporary fix for MultiArch OpenSSL -- Ondřej Surý <ondrej@debian.org> Mon, 12 Sep 2011 09:06:10 +0200 php5 (5.3.8-1) unstable; urgency=low * Imported Upstream version 5.3.8 * Refresh patches to 5.3.8 release * Pull fixes for DateTime tests from upstream SVN * Add additional temporary fix for MultiArch for sybase/mssql -- Ondřej Surý <ondrej@debian.org> Wed, 24 Aug 2011 13:13:51 +0200 php5 (5.3.7-1) unstable; urgency=low * Imported Upstream version 5.3.7 * Update patches to the new 5.3.7 release and remove those merged upstream * Don't require autoconf 2.59 and lower, we'll deal with consequences * Add MultiArch fix for LDAP libraries * Remove PEAR patching with CVE-2011-1144.patch which was merged upstream -- Ondřej Surý <ondrej@debian.org> Fri, 19 Aug 2011 14:18:03 +0200 php5 (5.3.6-13ubuntu3) oneiric; urgency=low * debian/rules: export DEB_HOST_MULTIARCH properly, so that I don't spend an hour scratching my head at './debian/rules configure' not working right. * Only build php5-sqlite for sqlite3, dropping the obsolete sqlite2. * Add build-dependency on lemon, which we now need. -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 24 Aug 2011 21:40:27 +0000 php5 (5.3.6-13ubuntu2) oneiric; urgency=low * debian/rules: build with --with-openssl instead of --with-openssl=/usr, to autodetect libraries in multiarch directories. * debian/patches/temporary-path-fixes-for-multiarch.patch: add ldap multiarch checks. LP: #826601. -- Steve Langasek <steve.langasek@ubuntu.com> Tue, 16 Aug 2011 06:14:55 +0000 php5 (5.3.6-13ubuntu1) oneiric; urgency=low * Merge from debian unstable. Remaining changes: * Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. * Dropped libcurl-dev not in the archive. * debian/control: replace build-depends on mysql-server with mysql-server-core-5.1 and mysql-client-5.1 to avoid upstart and mysql-server-5.1 postinst confusion with starting up multiple mysqlds listening on the same port. * Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. * Suggest php5-suhosin rather than recommends. * Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). * modulelist: Drop imap, interbase, sybase, and mcrypt. * debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests * debian/control: Recommend php5-dev for php-pear. * debian/rules: --enable-pcntl for cgi as well. * debian/patches/temporary-path-fixes-for-multiarch.patch: as a stopgap for natty, patch the various config.m4 files for modules whose libraries have moved to the multiarch dir; we can't use --with-libdir yet because that requires all the build-deps to have moved. Thanks to Jonathan Marsden for preparing this patch. * debian/patches/fpm-config.patch: Update php-fpm.conf(pool.d/con) to do initial chdir to / as suggest by Olaf van van der Spek to detect early problems if php5-fpm needs a write access to initial chdir. * SECURITY UPDATE: use-after-free vulnerability - debian/patches/php5-CVE-2011-1148.patch: improve reference counting - CVE-2011-1148 * debian/rules: set DEB_HOST_MULTIARCH to enable 'debian/rules' for building. -- Chuck Short <zulcss@ubuntu.com> Mon, 25 Jul 2011 19:14:12 +0100 php5 (5.3.6-13) unstable; urgency=low * Fix CVE-2011-2483: 8-bit character mishandling allows different password pairs to produce the same hash (Closes: #631347) * Add support for $2x$ identifier as blowfish variant in crypt.c to allow backward compatibility with old invalid hashes * Return fail string (*0) on invalid Blowfish salt rounds * Add NEWS item about incompatible blowfish hashes * Fix CVE-2011-1938: Stack-based buffer overflow in the socket_connect function in ext/sockets/sockets.c in PHP 5.3.3 through 5.3.6 might allow context-dependent attackers to execute arbitrary code via a long pathname for a UNIX socket. -- Ondřej Surý <ondrej@debian.org> Mon, 04 Jul 2011 12:41:07 +0200 php5 (5.3.6-12) unstable; urgency=low * Bump standards version to 3.9.2 * Update cron.d code to even safer variant (Courtesy of Bob Proulx) * Small optimization in cron.d script (Courtesy of Marcus Cobden) * Add firebird2.1-dev option to allow backports * Pull (and fix broken patch) multiarch workaround from Ubuntu natty * Add error message when phpize is not found (Closes: #627937) * Enable pcntl extension for CGI builds (Closes: #627941), but disable all pcntl functions by default * File path injection vulnerability in RFC1867 File upload filename [CVE-2011-2202] -- Ondřej Surý <ondrej@debian.org> Wed, 15 Jun 2011 11:06:40 +0200 php5 (5.3.6-11ubuntu1) oneiric; urgency=low * Merge from debian unstable. Remaining changes: * Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. * Dropped libcurl-dev not in the archive. * debian/control: replace build-depends on mysql-server with mysql-server-core-5.1 and mysql-client-5.1 to avoid upstart and mysql-server-5.1 postinst confusion with starting up multiple mysqlds listening on the same port. * Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. * Suggest php5-suhosin rather than recommends. * Dropped libonig-dev and libqgdbm since its in universe. (libonig MIR has been declined due to an inactive upstream. So this is probably a permanent change). * modulelist: Drop imap, interbase, sybase, and mcrypt. * debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests * debian/control: Recommend php5-dev for php-pear. * debian/rules: --enable-pcntl for cgi as well. * debian/patches/temporary-path-fixes-for-multiarch.patch: as a stopgap for natty, patch the various config.m4 files for modules whose libraries have moved to the multiarch dir; we can't use --with-libdir yet because that requires all the build-deps to have moved. Thanks to Jonathan Marsden for preparing this patch. * debian/patches/fpm-config.patch: Update php-fpm.conf(pool.d/con) to do initial chdir to / as suggest by Olaf van van der Spek to detect early problems if php5-fpm needs a write access to initial chdir. * SECURITY UPDATE: use-after-free vulnerability - debian/patches/php5-CVE-2011-1148.patch: improve reference counting - CVE-2011-1148 * debian/rules: set DEB_HOST_MULTIARCH to enable 'debian/rules' for building. * Dropped Changes: * Dropped libmysqlclient15-dev, build against mysql 5.1. -- Dropped in debian. * Dropped locales-all. -- Now has alternative language-pack-de for use in tests. * debian/php5-fpm.init: backport changes from Debian package to run configuration check. Removes check for /var/www which broke stand- alone installation of php5-fpm. -- superseded upstream * All CVE's not mentioned above (applied upstream or in Debian) * debian/patches/configure-as-needed.patch. Work around suspicious configure macros to fix a build failure with --as-needed * debian/patches/backport-upstream-lp592442.patch: Backport upstream fix for ssl fopen issues. -- applied in Debian * debian/patches/lp564920-fix-big-files.patch: Fix downloading of large files -- applied in Debian -- Clint Byrum <clint@ubuntu.com> Wed, 25 May 2011 10:34:40 -0700 php5 (5.3.6-11) unstable; urgency=low * Use more reasonable default number of processes for PHP5-FPM * Enable firebird support everywhere also in debian/rules * Don't delete still used session files (Closes: #626640) * Enable building of php5-interbase by adding Architecture: any to debian/control * Use dh_prep instead of dh_clean -k -- Ondřej Surý <ondrej@debian.org> Sat, 14 May 2011 22:15:32 +0200 php5 (5.3.6-10) unstable; urgency=low * Purge .start files in postrm, not in prerm (Closes: #607520) * Register config files to UCF Registry -- Ondřej Surý <ondrej@debian.org> Sat, 30 Apr 2011 13:16:27 +0200 php5 (5.3.6-9) unstable; urgency=low * Make sure even harded to not left any stale file after purging the package (Closes: #607520) * Move libapache2-mod-php5filter to extra to satisfy policy * Remove oldstable dependcy on firebird2.0-dev * Enable php5-interbase on all platforms and update build dependency on firebird2.5-dev * Import backported upstream fix for fopen fails on some SSL urls * Remove windows devel file from php5-dev * Add more lintian-overrides: + Missing dependency on phpapi for php5-common is not missing + php-pear is keeping it's original directory structure + Double the filenames (./usr vs usr) to fix difference between lintian versions + the embedded file library (libmagic) is unfortunately a custom one and cannot be replaced by system one (it's on the TODO list) -- Ondřej Surý <ondrej@debian.org> Thu, 28 Apr 2011 13:37:07 +0200 php5 (5.3.6-8) unstable; urgency=low * Provides/Replaces/Conflicts: php5-idn (Closes: #547117) * Build depend on libdb-dev (>= 5.1) (Closes: #621443) -- Ondřej Surý <ondrej@debian.org> Sun, 10 Apr 2011 23:27:44 +0200 php5 (5.3.6-7) unstable; urgency=low * Disable SSLv2 when disabled in OpenSSL (Closes: #620776) -- Ondřej Surý <ondrej@debian.org> Mon, 04 Apr 2011 08:40:25 +0200 php5 (5.3.6-6) unstable; urgency=low * Fix order of do_check in php5-fpm.init to check for the right return code -- Ondřej Surý <ondrej@debian.org> Thu, 31 Mar 2011 11:46:49 +0200 php5 (5.3.6-5) unstable; urgency=low * Don't fail the php5-fpm init.d script if VERBOSE is `no' * Fix some compile errors with --enable-maintainer-zts as reported by Raphaël Gertz * Make php5-fpm init.d script even less verbose on startup -- Ondřej Surý <ondrej@debian.org> Mon, 28 Mar 2011 17:05:17 +0200 php5 (5.3.6-4) unstable; urgency=low * Merged r308688 fix s/raiseErro/raiseError/ and fixed parenthese in r309043 (Closes: #619307) (Courtesy of upstream and Ernesto Domato) * Make locales-all build dependency useful by fixing language tests to use de_DE.UTF-8 * Debian packaging: + Allow easy porting to Ubuntu by adding alternate dependency for locales-all -> language-pack-de, because only german locale is used in the tests + Fix missing debhelper token in php5-fpm.preinst * Explicitly set pm.start_servers in php5-fpm to make it quiet * Update php5-fpm.init according to latest /etc/init.d/skeleton (Closes: #619383) -- Ondřej Surý <ondrej@debian.org> Wed, 23 Mar 2011 16:44:28 +0100 php5 (5.3.6-3) unstable; urgency=low * Update php-fpm.conf(pool.d/www.conf) to do initial chdir to / as suggested by Olaf van der Spek to detect early problems if php5-fpm needs a write access to initial chdir. Also fix brown-paper-bug which made the setting new chdir not work because we already modify it elsewhere (Closes: #601243) -- Ondřej Surý <ondrej@debian.org> Mon, 21 Mar 2011 16:27:01 +0100 php5 (5.3.6-2) unstable; urgency=low * Update default configuration file for php5-fpm (Closes: #619104) * Depend only on libdb4.8-dev | libdb4.6-dev to match apache2 (Closes: #619036) + Will coordinate change to db5.1 with apache2 maintainer -- Ondřej Surý <ondrej@debian.org> Mon, 21 Mar 2011 11:54:04 +0100 php5 (5.3.6-1) unstable; urgency=low * Imported Upstream version 5.3.6 + PEAR updated to 1.9.2 (CVE-2011-1072) * Cherry-pick CVE-2011-1144 from PEAR 1.9.3 (Closes: #546164) * Debian packaging: + Start using pristine-tar + Remove patches merged upstream or otherwise deprecated + Move php5-fpm.postrm extras to debian/rules * FPM SAPI changes: + Set initial chdir to /tmp in www pool (Closes: #601243) + Rename main configuration file to php-fpm.conf to match upstream + Enable error reporting in init.d file + Patch FPM SAPI to use Debian php-fpm.conf as default * Fix regression with missing CRYPT_SALT_LENGTH (Closes: #603012) * Generate SHA512 salt string when provided salt is null (Closes: #581170) * Fix FTBFS with gold or ld --no-add-needed (Closes: #615770) * Don't mmap large >4GB files * CVE-2011-0441: Be more careful when removing session files (Closes: #618489) -- Ondřej Surý <ondrej@debian.org> Fri, 18 Mar 2011 15:51:50 +0100 php5 (5.3.5-1ubuntu7.2) natty-security; urgency=low * debian/patches/php5-pear-CVE-2011-1144-regression.patch: fix mkdir parenthesis issue and PEAR::raiseErro typo (LP: #774452) -- Steve Beattie <sbeattie@ubuntu.com> Sat, 30 Apr 2011 16:00:39 -0700 php5 (5.3.5-1ubuntu7.1) natty-security; urgency=low * SECURITY UPDATE: arbitrary files removal via cronjob - debian/php5-common.php5.cron.d: take greater care when removing session files. - http://git.debian.org/?p=pkg-php%2Fphp.git;a=commitdiff_plain;h=d09fd04ed7bfcf7f008360c6a42025108925df09 - CVE-2011-0441 * SECURITY UPDATE: symlink tmp races in pear install - debian/patches/php5-pear-CVE-2011-1072.patch: improved tempfile handling. - debian/rules: apply patch manually after unpacking PEAR phar archive. - CVE-2011-1072 * SECURITY UPDATE: more symlink races in pear install - debian/patches/php5-pear-CVE-2011-1144.patch: add TOCTOU save file handler. - debian/rules: apply patch manually after unpacking PEAR phar archive. - CVE-2011-1144 * SECURITY UPDATE: denial of service through application crash with invalid images - debian/patches/php5-CVE-2010-4698.patch: verify anti-aliasing steps are either 4 or 16. - CVE-2010-4698 * SECURITY UPDATE: denial of service through application crash - debian/patches/php5-CVE-2011-0420.patch: improve grapheme_extract() argument validation. - CVE-2011-0420 * SECURITY UPDATE: denial of service through application crash - debian/patches/php5-CVE-2011-0421.patch: fail operation gracefully when handling zero sized zipfile with the FL_UNCHANGED argument - CVE-2011-0421 * SECURITY UPDATE: denial of service through application crash when handling images with invalid exif tags - debian/patches/php5-CVE-2011-0708.patch: stricter exif checking - CVE-2011-0708 * SECURITY UPDATE: denial of service and possible data disclosure through integer overflow - debian/patches/php5-CVE-2011-1092.patch: better boundary condition checks in shmop_read() - CVE-2011-1092 * SECURITY UPDATE: use-after-free vulnerability - debian/patches/php5-CVE-2011-1148.patch: improve reference counting - CVE-2011-1148 * SECURITY UPDATE: format string vulnerability - debian/patches/php5-CVE-2011-1153.patch: correctly quote format strings - CVE-2011-1153 * SECURITY UPDATE: denial of service through buffer overflow crash (code execution mitigated by compilation with Fortify Source) - debian/patches/php5-CVE-2011-1464.patch: limit amount of precision to ensure fitting within MAX_BUF_SIZE - CVE-2011-1464 * SECURITY UPDATE: denial of service through application crash - debian/patches/php5-CVE-2011-1467.patch: check for invalid attribute symbols in NumberFormatter::setSymbol() - CVE-2011-1467 * SECURITY UPDATE: denial of service through memory leak - debian/patches/php5-CVE-2011-1468.patch: fix memory leak of openssl contexts - CVE-2011-1468 * SECURITY UPDATE: denial of service through application crash when using HTTP proxy with the FTP wrapper - debian/patches/php5-CVE-2011-1469.patch: improve pointer handling - CVE-2011-1469 * SECURITY UPDATE: denial of service through application crash when handling ziparchive streams - debian/patches/php5-CVE-2011-1470.patch: set necessary elements of the meta data structure - CVE-2011-1470 * SECURITY UPDATE: denial of service through application crash when handling malformed zip files - debian/patches/php5-CVE-2011-1471.patch: correct integer signedness error when handling zip_fread() return value. - CVE-2011-1471 * debian/control: replace build-depends on mysql-server with mysql-server-core-5.1 and mysql-client-5.1 to avoid upstart and mysql-server-5.1 postinst confusion with starting up multiple mysqlds listening on the same port. -- Steve Beattie <sbeattie@ubuntu.com> Tue, 26 Apr 2011 08:34:26 -0700 php5 (5.3.5-1ubuntu7) natty; urgency=low * debian/php5-fpm.init: backport changes from Debian package to run configuration check. Removes check for /var/www which broke stand- alone installation of php5-fpm. (LP: #753924) * debian/rules: set DEB_HOST_MULTIARCH to enable 'debian/rules' for building. -- Clint Byrum <clint@ubuntu.com> Tue, 12 Apr 2011 14:21:14 -0700 php5 (5.3.5-1ubuntu6) natty; urgency=low * debian/patches/fpm-config.patch: Update php-fpm.conf(pool.d/con) to do initial chdir to / as suggest by Olaf van van der Spek to detect early problems if php5-fpm needs a write access to initial chdir. * debian/patches/backport-upstream-lp592442.patch: Backport upstream fix for ssl fopen issues. (LP: #592442) -- Chuck Short <zulcss@ubuntu.com> Fri, 01 Apr 2011 09:29:49 -0400 php5 (5.3.5-1ubuntu5) natty; urgency=low * debian/patches/temporary-path-fixes-for-multiarch.patch: as a stopgap for natty, patch the various config.m4 files for modules whose libraries have moved to the multiarch dir; we can't use --with-libdir yet because that requires all the build-deps to have moved. Thanks to Jonathan Marsden for preparing this patch. LP: #739977. * debian/patches/ubuntu/ubuntu-php-version.patch: drop. This is an autogenerated file. -- Steve Langasek <steve.langasek@ubuntu.com> Thu, 24 Mar 2011 22:34:00 +0000 php5 (5.3.5-1ubuntu4) natty; urgency=low * debian/control: Recommend php5-dev for php-pear. (LP: #634359) * debian/rules: --enable-pcntl for cgi as well. (LP: #658346) -- Chuck Short <zulcss@ubuntu.com> Mon, 14 Mar 2011 10:34:00 -0400 php5 (5.3.5-1ubuntu3) natty; urgency=low * debian/php5-fpm.init: Fix logic from previous commit. -- Chuck Short <zulcss@ubuntu.com> Mon, 14 Mar 2011 08:18:17 -0400 php5 (5.3.5-1ubuntu2) natty; urgency=low * debian/php5-fpm.init: Dont start fpm if /var/www doesnt exist. (LP: #731572) -- Chuck Short <zulcss@ubuntu.com> Fri, 11 Mar 2011 16:29:24 -0500 php5 (5.3.5-1ubuntu1) natty; urgency=low * Merge from debian/unstable. Remaining changes: - debian/control: * Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. * Dropped libmysqlclient15-dev, build against mysql 5.1. * Dropped libcurl-dev not in the archive. * Suggest php5-suhosin rather than recommends. * Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. * Dropped libonig-dev and libqgdbm since its in universe. (will be re-added in lucid+1) - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests -- Chuck Short <zulcss@ubuntu.com> Tue, 22 Feb 2011 09:46:37 -0500 php5 (5.3.5-1) unstable; urgency=low * Imported Upstream version 5.3.5 * Updated suhosin patch to 0.9.10 * Add Conflict: with php5-idn to php5-intl (Closes: #610935) * Build the FPM SAPI (Closes: #603174) * Adapted (and removed upstream-applied) patches to php 5.3.5 -- Ondřej Surý <ondrej@debian.org> Wed, 16 Feb 2011 15:17:32 +0100 php5 (5.3.3-7ubuntu1) natty; urgency=low * Merge from debian unstable. Remaining changes: - debian/control: * Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. * Dropped libmysqlclient15-dev, build against mysql 5.1. * Dropped libcurl-dev not in the archive. * Suggest php5-suhosin rather than recommends. * Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. * Dropped libonig-dev and libqgdbm since its in universe. (will be re-added in lucid+1) * Dropped locales-all. - modulelist: Drop imap, interbase, sybase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. * stop mysql instance on clean just in case we failed in tests - Dropped debian/patches/fix-upstream-bug53632.patch, used debian's instead. - Dropped debian/patches/mssql-fix-segfault.patch, use debian's instead. - debian/patches/configure-as-needed.patch. Work around suspicious configure macros to fix a build failure with --as-needed - debian/patches/php52389-pgsql-segfault.patch: removing, causes error handling to fail. -- Chuck Short <zulcss@ubuntu.com> Fri, 07 Jan 2011 22:44:56 +0000 php5 (5.3.3-7) unstable; urgency=low * Cherry pick patches for: + double free vulnerability in the imap_do_open function in the IMAP extension (CVE-2010-4150) + infinite loop with x87 CPU + extract() to not overwrite $GLOBALS and $this when using EXTR_OVERWRITE + crash if aa steps are invalid in GD extension + crash with entitity declaration in simplexml.c + NULL dereference in Zend language scanner + integer overflow in SdnToJulian + memory leaks and possible crash introduced by NULL poisoning patch + leaks and crash when passing the callback as a variable + leak in highlight_string + segmentation fault in pgsql_stmt_execute when postgres is down + segmentation fault when extending SplFixedArray + segmentation fault when node is NULL in simplexml.c + segmentation fault when using several cloned intl objects + segmentation fault when using bad column_number in sqlite3 columnName * Add comment about cherry picked patches (and last revision) from upstream SVN to README.source -- Ondřej Surý <ondrej@debian.org> Wed, 05 Jan 2011 11:06:20 +0100 php5 (5.3.3-6) unstable; urgency=medium * Cherry-pick fix for crashes on invalid parameters in intl extension. (CVE-2010-4409). * Cherry pick fix for crash in zip extract method (possible CWE-170) * Cherry pick fix for unaligned memory access in ext/hash/hash_tiger.c * Update CVE-2010-3870 to include test case * Cherry pick complete fix to reject filenames with NULL (CVE requested) -- Ondřej Surý <ondrej@debian.org> Tue, 07 Dec 2010 11:15:58 +0100 php5 (5.3.3-5) unstable; urgency=high * Add firebird support for armhf (Closes: #604526) * More updates to open_basedir (Closes: #605391) -- Ondřej Surý <ondrej@debian.org> Tue, 30 Nov 2010 12:00:37 +0100 php5 (5.3.3-4) unstable; urgency=low * Cherry pick patches for (Closes: #603751): + NULL pointer dereference in ZipArchive::getArchiveComment (CVE-2010-3709) + utf8_decode xml_utf8_decode vulnerability (CVE-2010-3870) + mb_strcut() returns garbage with the excessive length parameter (CVE-2010-4156) + possible flaw in open_basedir (CVE-2010-3436) + segfault in SplFileObject::fscanf + memory leak in PDO::FETCH_INTO + crash when storing many SPLFixedArray in an array + possible crash in php_mssql_get_column_content_without_type() + cURL leaks handle and causes assertion error (CURLOPT_STDERR) + segfault when optional parameters are not passed in to mssql_connect + segfault when ssl stream option capture_peer_cert_chain used + crash in GC because of incorrect reference counting + crash when calling enchant_broker_get_dict_path before set_path + crash in pdo_firebird getAttribute() -- Ondřej Surý <ondrej@debian.org> Wed, 17 Nov 2010 10:31:58 +0100 php5 (5.3.3-3) unstable; urgency=high * Fix segfault in filter_var with FILTER_VALIDATE_EMAIL with large amount of data (CVE-2010-3710, Closes: #601619) -- Ondřej Surý <ondrej@debian.org> Wed, 27 Oct 2010 23:39:37 +0200 php5 (5.3.3-2) unstable; urgency=low * Upload 5.3.3 to unstable + Fixes CVE-2010-2225, CVE-2010-2094, CVE-2010-1917, CVE-2010-1866, CVE-2010-2531, CVE-2010-3065. * Don't build FPM SAPI now * Bump standards version to 3.9.1 * Synchronize system crypt patch * Cherry pick upstream fix for format vulnerability in phar/stream.c + Fixes CVE-2010-2950. * Set explicit error level to hide warnings on systems with modified php.ini (Closes: #590485) * Apply patch to fix loading of extensions without [PHP] section (Closes: #595761) * Set session.gc_probability back to 0 (Closes: #595706) * Update PHP5 description to not include references to C, Java and Perl (Closes: #351032) -- Ondřej Surý <ondrej@debian.org> Thu, 21 Oct 2010 16:57:53 +0200 php5 (5.3.3-1ubuntu12) natty; urgency=low * debian/patches/fix-upstream-bug53632.patch: Fix infinite loop bug (php bug #53632) (LP: #697181) -- Chuck Short <zulcss@ubuntu.com> Fri, 07 Jan 2011 12:57:59 -0500 php5 (5.3.3-1ubuntu11) natty; urgency=low * Add debian/patches/mssql-fix-segfault.patch: Fixes segfault on missing parameters for mssql. Upstream php bug #52843 and LP: #611316. -- Clint Byrum <clint@ubuntu.com> Fri, 03 Dec 2010 23:45:19 -0800 php5 (5.3.3-1ubuntu10) natty; urgency=low * debian/patches/configure-as-needed.patch. Work around suspicious configure macros to fix a build failure with --as-needed (Clint Byrum). Addresses #676672. -- Matthias Klose <doko@ubuntu.com> Wed, 24 Nov 2010 10:44:36 +0100 php5 (5.3.3-1ubuntu9.1) maverick-proposed; urgency=low * debian/patches/php52389-pgsql-segfault.patch: removing, causes error handling to fail (LP: #660227) -- Clint Byrum <clint@ubuntu.com> Thu, 14 Oct 2010 06:46:02 -0700 php5 (5.3.3-1ubuntu9) maverick; urgency=low * SECURITY UPDATE: arbitrary memory disclosure and possible code execution via phar extension - debian/patches/CVE-2010-2950.patch: use correct format string in ext/phar/stream.c. - CVE-2010-2094 - CVE-2010-2950 -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Mon, 20 Sep 2010 14:56:33 -0400 php5 (5.3.3-1ubuntu8) maverick; urgency=low * Build-depend on netcat-openbsd | netcat, instead of just netcat (only in universe). -- Matthias Klose <doko@ubuntu.com> Fri, 17 Sep 2010 14:33:13 +0200 php5 (5.3.3-1ubuntu7) maverick; urgency=low * debian/setup-mysql.sh: Copy mysqld to local dir during build to avoid apparmor restrictions (LP: #638401) * debian/rules: stop mysql instance on clean just in case we failed in tests -- Clint Byrum <clint@ubuntu.com> Wed, 15 Sep 2010 10:48:32 -0700 php5 (5.3.3-1ubuntu6) maverick; urgency=low * Undo sybase debugging libraries split: keeping a smaller delta with Debian is more important than demoting sybase to universe. -- Mathias Gug <mathiaz@ubuntu.com> Wed, 25 Aug 2010 14:04:57 -0400 php5 (5.3.3-1ubuntu5) maverick; urgency=low * Drop sybase libraries to universe: Move debugging libraries to php5-sybase-dbg: - debian/control: + create php5-sybase-dbg package. + drop php5-sybase as php5-dbg dependency. - debian/rules: move sybase debugging libraries to php5-sybase-dbg. -- Mathias Gug <mathiaz@ubuntu.com> Fri, 20 Aug 2010 19:13:55 -0400 php5 (5.3.3-1ubuntu4) maverick; urgency=low * debian/php5-module.ini: # replaced with ; (LP: #591286) * debian/patches/php52389-pgsql-segfault.patch (LP: #607646) - Applying patch for upstream bug that causes segfaults in pgsql -- Clint Byrum <clint@ubuntu.com> Fri, 13 Aug 2010 00:07:15 -0700 php5 (5.3.3-1ubuntu3) maverick; urgency=low * debian/patches/lp564920-fix-big-files.patch: Fix downloading of large files (LP: #564920) -- Clint Byrum <clint@ubuntu.com> Fri, 06 Aug 2010 13:10:17 -0700 php5 (5.3.3-1ubuntu2) maverick; urgency=low * debian/control: Use netcat rather than netcat-traditional. -- Chuck Short <zulcss@ubuntu.com> Thu, 05 Aug 2010 20:00:34 -0500 php5 (5.3.3-1ubuntu1) maverick; urgency=low * Merge from debian experimental: - debian/control: * Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. * Dropped libmysqlclient15-dev, build against mysql 5.1. * Dropped libcurl-dev not in the archive. * Suggest php5-suhosin rather than recommends. * Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. * Dropped libonig-dev and libqgdbm since its in universe. (will be re-added in lucid+1) * Dropped locales-all. - modulelist: Drop imap, interbase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. -- Chuck Short <zulcss@ubuntu.com> Sun, 01 Aug 2010 14:28:03 -0500 php5 (5.3.3-1) experimental; urgency=low * Upload PHP 5.3.3 to experimental for further testing + Fixes odbc_autocommit (Closes: #586570) + Adds support for sqlite3_busy_timout (Closes: #589473) + Fixes CVE-2010-2225, CVE-2010-2094, CVE-2010-1917, CVE-2010-1866 and other CVEs that do not apply to the Debian packages or are irrelevant as per the pre-5.3.2-2 security policy. * Changes pending update from unstable: + Use system crypt * Build the FPM SAPI. -- Raphael Geissert <geissert@debian.org> Sat, 31 Jul 2010 15:53:12 -0400 php5 (5.3.2-2) unstable; urgency=low [ Ondřej Surý ] * Fix unittest about failing crypt() calls with invalid salt [ Raphael Geissert ] * Cherry pick upstream fix for mysqli_ssl_set (Closes: #572122) * Cherry pick patch to reset error status on beginTransaction() * Cherry pick patch to add missing definition of JSON_ERROR_UTF8 * Cherry pick patch to fix SplFileInfo::getPathName() * Cherry pick patch to fix a memory leak in the cyclical gc * Cherry pick fix for memory leak in date when gc is enabled * Cherry pick patch to fix an unaligned mem access in the dba ext * Cherry pick fix for memory issues in mysqli_options (Closes: #577784) * Set default session.save_path to /var/lib/php5 (Closes: #576593) * Don't install an extra copy of php.ini-production * Remove obsolete TODO list * Add debian/source/format and set it to 1.0 * Add doc-base registration for Structuctures_Graph documentation * Cherry pick patch to fix multiple typos * Synchronize enchant patch with changes committed upstream * Cherry pick patch to workaround BDB 4.8 bc changes (Closes: #570149) * Cherry pick patch to allow the timeout on mssql to be effective p/query * Cherry pick patch to correctly determine length of doc_root * Cherry pick patch to fix a memory leak in SoapServer::handle * Cherry pick patch to fix SplFileInf::fscanf()'s prototype * Test the mysql extensions too * Update the security policy for Squeeze and greater * Include ext_skel script (Closes: #530757) [ Sean Finney ] * Fix for parallel FTBFS in (Closes: #584348) * Import upstream fix for pdo_mysql segfaults (Closes: #581911) - thanks to Richard van den Berg <richard@vdberg.org> * Dynamically determine maxlifetime if possible. (Closes: #504053) - thanks to Chris Butler <chrisb@debian.org> -- Raphael Geissert <geissert@debian.org> Sun, 18 Jul 2010 15:35:06 -0500 php5 (5.3.2-1ubuntu5) maverick; urgency=low * debian/php5-module.ini: Comment should be "#" not ";". (LP: #573436) * debian/patches/cherrypick-upstream-51740.diff: Fix acinclude.ac macro check. (LP: #576910) * debian/patches/cherrypick-upstream-48361.diff: Fix regression with getPathInfo() doesn't return parent info (LP: #576910) * debian/patches/session_save_path.patch: ave PHP sessions to /var/lib/php rather than /tmp. (LP: #573222) -- Chuck Short <zulcss@ubuntu.com> Tue, 25 May 2010 10:17:00 -0400 php5 (5.3.2-1ubuntu4.1) lucid-proposed; urgency=low * debian/patches/fix-mysql-badmem.patch: Fix mysql crash when using php5-cgi. (LP: #567043) -- Chuck Short <zulcss@ubuntu.com> Mon, 03 May 2010 11:23:43 -0400 php5 (5.3.2-1ubuntu4) lucid; urgency=low * debian/control, debian/rules: Re-enable libedit-dev. (LP: #548823) -- Chuck Short <zulcss@ubuntu.com> Mon, 05 Apr 2010 15:33:21 -0400 php5 (5.3.2-1ubuntu3) lucid; urgency=low * debian/control: Fix upgrade of php5-ldap from 5.3.1. (LP: #) -- Chuck Short <zulcss@ubuntu.com> Sun, 28 Mar 2010 15:41:34 -0400 php5 (5.3.2-1ubuntu2) lucid; urgency=low * debian/control: Dont build with libmcrypt-dev. -- Chuck Short <zulcss@ubuntu.com> Fri, 26 Mar 2010 14:39:36 -0400 php5 (5.3.2-1ubuntu1) lucid; urgency=low * Merge from debian unstable: - debian/control: * Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe. * Dropped libmysqlclient15-dev, build against mysql 5.1. * Dropped libcurl-dev not in the archive. * Suggest php5-suhosin rather than recommends. * Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions already in universe. * Dropped libonig-dev and libqgdbm since its in universe. (will be re-added in lucid+1) * Dropped locales-all. - modulelist: Drop imap, interbase, and mcrypt. - debian/rules: * Dropped building of mcrypt, imap, and interbase. * Install apport hook for php5. - Dropped debian/patches/libedit_is_editline.patch. -- Chuck Short <zulcss@ubuntu.com> Tue, 16 Mar 2010 09:09:50 -0400 php5 (5.3.2-1) unstable; urgency=high [ Sean Finney ] * Fix improper signed overflow detection in filter extension (Closes: #570287) * Another integer overflow/underflow logic fix. (Closes: #570144) * new debian patch fix_filter_var_email_test.patch (Closes: #571764) * New debian patch fix_var_dump_64bit.phpt.patch (Closes: #571772) * New debian patch use_embedded_timezonedb_fixes.patch (Closes: #571762) [ Raphael Geissert ] * Build with qdbm support * Really run extensions' tests * Add a note about user_dirs in apache conf file (Closes: #571714) * Fix typo in debian/NEWS * Don't install a(nother) useless Structures_Graph sh script * Re-enable short_open_tag for CLI too (Closes: #573367) * Disable memory limit in CLI, letting ulimit do its job (Closes: #407425) * Fix the locale name in some tests (Closes: #573511) * Fix some gd tests that need the bundled library * Fix a null pointer dereference when processing invalid XML-RPC requests (CVE-2010-0397, Closes: #573573) * Fix an unaligned memory access in enchant_dict_suggest() * Fix another unaligned memory access in enchant * Test that the list of extensions to test is never empty * Update the list of alternative dependencies of php5-dbg * debian/rules cleanup * debian/control cleanup * Build against the system oniguruma library * Add libjpeg-dev as an alternative to libjpeg62-dev for future transitions [ Ondřej Surý ] * Imported Upstream version 5.3.2 * Updated suhosin patch to 0.9.9.1 version. * Removed debian/patches/suhosin_page_size_fixes.patch. (Closes: #571974) * Refreshed debian/patches/001-libtool_fixes.patch * Refreshed debian/patches/006-debian_quirks.patch * Adapt debian patches to 5.3.2. * Remove "binary" contents from debian/patches/fix_var_dump_64bit.phpt.patch * New debian patch fix_broken_sha2_test.patch * New debian patch always_use_system_crypt.patch (Closes: #572601) * New debian patch php_crypt_revamped.patch (Closes: #572601) -- Raphael Geissert <geissert@debian.org> Sat, 13 Mar 2010 15:11:48 -0600 php5 (5.3.1-5) unstable; urgency=low [ Sean Finney ] * Pass full path to php cli executable for unit tests * dont-gitclean-in-build.patch: Don't run git-clean via buildconf * update debian patch page_size_fixes.patch with upstream bug ref * new debian patch broken_5.3_test-posix_uname.patch (Closes: #570286) [ Raphael Geissert ] * Add build-dependency on netbase to fix a test (Closes: #570291) * Suhosin PAGE_SIZE fixes have been already forwarded * Fix a race condition on shtool's mkdir -p (Closes: #570111) * Actually test the binary that is to be shipped in the -cli package * Add some more documentation about the build system * Documentation updates * Update the suhosin patch version information * Build-dep on locales-all to enable multiple tests * Don't ship empty maintainer scripts * Add patch to allow building with qdbm * Test the extensions that don't require a special setup * Get the correct list of built-in extensions of apache2filter -- Raphael Geissert <geissert@debian.org> Mon, 22 Feb 2010 10:41:51 -0600 php5 (5.3.1-4) unstable; urgency=low [ Raphael Geissert ] * Pass -O0 when using 'noopt' to actually disable any optimization * Add patch to use sysconf() to determine the page size * Add patch to remove PAGE_SIZE assumptions in suhosin code * Fix an unaligned memory access in the phar extension * Fix another unaligned memory access * Print the expected/actual output of failed test * Add missing PEAR directory (Closes: #542483) * Build sqlite3 as shared (Closes: #568956) * Add some more documentation about the source package [ Sean Finney ] * New debian patch fix_broken_5.3_tests.patch -- Raphael Geissert <geissert@debian.org> Thu, 11 Feb 2010 02:22:47 -0600 php5 (5.3.1-3) unstable; urgency=low [ Ondřej Surý ] * get rid of php4 dependencies * Enable short_open_tag again (Closes: #537099) * fix dependency on automake1.4 in php5-dev package * fix typo s/firefox/firebird/ in changelog * Removed long inactive Adam Conrad and Jeroen van Wolffelaar from uploaders [ Raphael Geissert ] * Fix maintainer scripts to use php.ini-production (Closes: #565130) * Revert b22a350: Turn the phpapi dependencies into php5 | phpapi * Allow parallel building via parallel=n * Build with the hardening wrapper * Remove no-longer-needed dfsg-repack script * Add DEP-3-format metadata to some of the patches * Build the intl extension * Drop exif_read_data-segfault patch, merged upstream * Build the enchant extension * Add ${misc:Depends} where missing * Disable mod_php in user directories (Closes: #555606) * Add missing comment character to php.ini-paranoid (Closes: #564622) * Build the interbase extension on all the supported architectures [ Sean Finney ] * 5.3 upload for unstable. - Includes backported fix for "ref converted to value" (Closes: #556237). -- Raphael Geissert <geissert@debian.org> Sun, 07 Feb 2010 23:31:51 -0600 php5 (5.3.1-2) experimental; urgency=low * Merged changes from 5.2.x sid branch. * Adapt mssql-null-exception.patch and sybase-alias.patch to 5.3.1 * Update strcmp_null-OnUpdateErrorLog.patch; merged upstream, leave a patch with a test case * Removed check_ini_on_modify_status.patch and gentoo/117- 4_digit_year_big_endian.patch; merged upstream * Removed max_file_uploads.patch; no need for backwards compatibility between major releases * Refreshed 112-proc_open.patch,exif_read_data-segfault.patch * Fix duplicate Provides: in debian/control introduced by cherry- picking 94f0ec3 * Update sybase aliases to include correct arguments, needed for 5.3.x * Update Build-Depends: to include firebird2.1-dev as preferred alternative (Closes: #564691) * Reformat Build-Depends: to one-dependency-per-line * Reduce number of libdb*-dev to include only version in stable/testing/unstable * Switch to automake (>= 1.11) | automake1.11, depend on autoconf >= 2.63 (Closes: #549148) -- Ondřej Surý <ondrej@debian.org> Mon, 11 Jan 2010 16:56:01 +0100 php5 (5.3.1-1) experimental; urgency=low * Imported Upstream version 5.3.1 * Change dependcy to libdb-dev instead on arbitrary version of libdb4.x-dev * Refreshed 006-debian_quirks patch to apply cleanly. * Removed 114-php_gd_segfault.patch, merged upstream. * Refreshed 115-autoconf_ftbfs.patch to apply cleanly * Updated suhosin.patch to 0.9.8 version for php-5.3.1 * Refreshed 001-libtool_fixes.patch * Refreshed 004-ldap_fix.patch * Refreshed 013-force_getaddrinfo.patch * Refreshed 036-fd_setsize_fix.patch * Refreshed 052-phpinfo_no_configure.patch * Refreshed 053-extension_api.patch * Refreshed 108-64_bit_datetime.patch * Refreshed 113-php.ini_securitynotes.patch * Refreshed 116-posixness_fix.patch * Refreshed gentoo/006_ext-curl-set_opt-crash.patch * Refreshed gentoo/009_ob-memory-leaks.patch * Refreshed libedit_is_editline.patch * Refreshed suhosin.patch * Add .gitignore file to ignore .pc/ directory * Removed README.CVS-RULES from debian/php5-common.docs, file is no longer shipped by upstream. -- Ondřej Surý <ondrej@debian.org> Thu, 07 Jan 2010 17:21:47 +0100 php5 (5.3.0-3) experimental; urgency=low * Fix segmentation fault in php-gd (Closes: #543496) * Update suhosin patch to 0.9.8 *BETA* and enable it again * Fix FTBFS with current autoconf/automake (Closes: #542906, #542088) * Add avr32-linux-gnu to no -gstabs toolchains (Closes: #543278) * Fix FTBFS on Debian Hurd (Closes: #530281) * Use updated (v7) version of use_embedded_timezonedb.patch (Closes: #535770) -- Ondřej Surý <ondrej@debian.org> Tue, 25 Aug 2009 16:12:13 +0200 php5 (5.2.12.dfsg.1-2) unstable; urgency=low * Update Build-Depends: to include firebird2.1-dev as preferred alternative (Closes: #564691) * Reformat Build-Depends: to one-dependency-per-line * Reduce number of firebird*-dev to include only version in stable/testing/unstable * Reduce number of libdb*-dev to include only version in stable/testing/unstable * Switch to automake (>= 1.11) | automake1.11, depend on autoconf (>= 2.63) (Closes: #549148) -- Ondřej Surý <ondrej@debian.org> Mon, 11 Jan 2010 17:31:33 +0100 php5 (5.2.12.dfsg.1-1) unstable; urgency=low [ Thijs Kinkhorst ] * Change comment in module .ini snippets from # to ; to avoid deprecation warnings with PHP 5.3.0. [ Ondřej Surý ] * Imported Upstream version 5.2.12.dfsg.1 * Removed manpage_spelling.patch, merged upstream. * Removed libedit_is_editline.patch, merged upstream. * Refreshed max_file_uploads.patch, patch can be removed, it's kept to raise max_file_uploads to 50. * Refreshed and updated suhosin.patch * Refreshed 001-libtool_fixes.patch, 004-ldap_fix.patch, 006-debian_quirks.patch, 013-force_getaddrinfo.patch, 034-apache2_umask_fix.patch, 053-extension_api.patch, 056-mime_magic_liberal.patch, 115-autoconf_ftbfs.patch, gentoo/009_ob-memory-leaks.patch, mssql-null-exception.patch, use_embedded_timezonedb.patch * Removed autogenerated main/php_config.h.in from suhosin.patch (Ubuntu: #493761) * Short open tags are On again in php.ini-dist (Closes: #537099) * Don't leave .start if we are purging (Closes: #561739) * Add README.Debian file to /usr/share/doc/php-pear/PEAR, so the directory is not deleted (Closes: #563437, #542483) [ Upstream ] * Fix default pear.php.net channel definitions (Closes: #559029) -- Ondřej Surý <ondrej@debian.org> Fri, 08 Jan 2010 18:18:43 +0100 php5 (5.2.11.dfsg.1-2) unstable; urgency=high * max_file_uploads: limit the maximum number of file uploads to 50 + Reduces the chances of a temporary file exhaustion DoS * Add libdb4.8-dev as an alternative dependency (Closes: #555945) * Add libdb-dev as another alternative, hopefully the last one (Closes: #548486) * Add a versioned dependency on libtool 2.2 (Closes: #548015) * Use FilesMatch and SetHandler on apache setups (Closes: #491928) * Gentoo patch ext-curl-set_opt-crash has already been merged upstream * Drop unused lintian override -- Raphael Geissert <geissert@debian.org> Sat, 21 Nov 2009 13:37:51 -0600 php5 (5.2.11.dfsg.1-1) unstable; urgency=low * New upstream release [ Fixes incorporated upstream ] * Fix 4-year digit year on big-endian platforms (Closes: #542301) * patch curl_streams_sleep.patch * patch strcmp_null-OnUpdateErrorLog.patch (partially addresses #540605) * patch check_ini_on_modify_status.patch [ Raphael Geissert ] * Add aliases to the mssql functions on the sybase extension (Closes: #523073) * Fix the rows_affected alias, it should be affected_rows * Avoid possible memory dumps via PG on restored ini values (Closes: #540605) [ Ondrej Sury ] * Fix FTBFS with current autoconf/automake (Closes: #542906, #542088) * Add avr32-linux-gnu to no -gstabs toolchains (Closes: #543278) * Fix FTBFS on Debian Hurd (Closes: #530281) * fix whitespace in libapache2-mod-php5.postinst [ Sean Finney ] * incorporate/ack previous NMU's, thanks Andreas. * update debian patch 115-autoconf_ftbfs.patch for new upstream version * update debian patch fix_broken_upstream_tests.patch * update debian patch mssql-null-exception.patch * refresh various quilt patches against new upstream version * remove no longer needed "legacy" support for conffile migration * add dpkg trigger in the apache2 and apache2filter sapis for reloading apache2 on extension updates (Closes: #490023, #524206) * let libmysqlclient15-dev be a fallback alternative for libmysqlclient-dev in case someone wants to backport the package. * update list of installed documentation -- Sean Finney <seanius@debian.org> Sun, 20 Sep 2009 11:05:35 +0200 php5 (5.2.10.dfsg.1-2.2) unstable; urgency=medium * Non-maintainer upload. * Drop hand-crafted dependency on libmysqlclient15. -- Andreas Barth <aba@not.so.argh.org> Mon, 31 Aug 2009 09:22:16 +0200 php5 (5.2.10.dfsg.1-2.1) unstable; urgency=medium * Non-maintainer upload. * Fix FTBFS with new autoconf. Thanks to Russ Allbery for the patch. Closes: #542906 -- Andreas Barth <aba@not.so.argh.org> Sun, 30 Aug 2009 13:49:40 +0200 php5 (5.2.10.dfsg.1-2) unstable; urgency=low * Declare that PEAR replaces XML_UTIL (Closes: #534621) * Bump standards-version, no change needed * Fix an unconditional limit on dblib_driver.c (Closes: #534881) * Fix a segfault on exif_data_read with corrupted jpg files (Closes: #535888) * Recommend php5-suhosin, as suggested by Thijs (Closes: #529760) * Set sysconfig to /etc, to avoid getting /usr/etc in PHP_SYSCONFDIR * Add myself to uploaders * Fix the path to PEAR's config, directly in rules (Closes: #507762) -- Raphael Geissert <geissert@debian.org> Thu, 09 Jul 2009 18:25:48 -0500 php5 (5.3.0-2) experimental; urgency=low * update configuration file names to new upstream naming convention -- Sean Finney <seanius@debian.org> Wed, 01 Jul 2009 09:12:10 +0200 php5 (5.3.0-1) experimental; urgency=low * New Upstream Version [ Sean Finney ] * use ';' instead of '#' as comments in module ini files * remove binary package for php5-mhash which is now built-in * update removed windows modules in 006-debian_quirks.patch * quilt refresh for new upstream release -- Sean Finney <seanius@debian.org> Tue, 30 Jun 2009 20:09:07 +0200 php5 (5.3.0~RC4-1) UNRELEASED; urgency=low * New Upstream Version [ Sean Finney ] * (temporarily) disable suhosin patch while it does not apply to 5.3 * refresh various debian patches, fixing whitespace and offsets * copy the gbp.conf from debian-sid and adapt it for experimental * cherry-pick relevant gentoo patches from unstable * cherry-pick debian fixes in libtool2.2.patch from unstable * Update package sections to match override. [ Raphael Geissert ] * Detect the path to ltmain.sh at build time and set conflicts appropriately * Add libdb4.7-dev as an ORed build dependency to fix FTBFS * Update the Vcs-* fields to reflect the move from svn to git * Turn the phpapi dependencies into php5 | phpapi to fix installability issues * Bump Standards-Version to 3.8.1, no change needed * Add a set of lintian overrides for some FP spelling-error-in-binary [ Thijs Kinkhorst ] * Update php5-cli package description to make it more neutral -- Sean Finney <seanius@debian.org> Mon, 29 Jun 2009 07:54:51 +0200 php5 (5.3.0~RC1-1) unstable; urgency=low * New Upstream Version -- Mark A. Hershberger <mhershberger@intrahealth.org> Wed, 25 Mar 2009 19:39:48 -0400 php5 (5.2.9.dfsg.1-1) unstable; urgency=low * New upstream release (closes: #520538). - fixes regressions with parsing via libxml2 (closes: #520246, #520423). [ Sean Finney ] * Refresh all patches. * Update suhosin patch to 5.2.9, remove autotools-generated files (configure, php_config.h.in) and .dsp files from patch. * remove obsolete configure options from ./configure: --enable-memory-limit, --enable-track-vars, --enable-trans-sid, --enable-filepro and --enable-dbx. * Remove obsoleted patches which have been incorporated upstream: - snmp_leaks.patch - BG-initializing-fix.patch - CVE-2008-2829.patch - CVE-2008-3658.patch - CVE-2008-3659.patch - CVE-2008-3660.patch - CVE-2008-5557.patch - CVE-2008-5658.patch - pdo-fetchobject-prototype-error.patch - zend_object_handlers-invalid-write.patch - dba-inifile-truncation.patch - gentoo/freetds-compat.patch - gentoo/010_ticks-zts-crashes.patch - gentoo/019_new-memory-corruption.patch - gentoo/009_array-function-crashes.patch - gentoo/015_CVE-2008-2665-wrapper-safemode-bypass.patch - gentoo/017_xmlrpc-invalid-callback-crash.patch - gentoo/007_dom-setAttributeNode-crash.patch - gentoo/006_PDORow-crash.patch - gentoo/005_stream_context_set_params-crash.patch * Update fix_broken_upstream_tests.patch, one of the tests is fixed. -- Sean Finney <seanius@debian.org> Tue, 24 Mar 2009 19:05:09 +0100 php5 (5.2.6.dfsg.1-3) unstable; urgency=low [ Sean Finney ] * Do not add -O2 to CFLAGS if DEB_BUILD_OPTIONS contains noopt. * Security related fixes: - php: inifile handler for the dba functions can be used to truncate a file Patch: dba-inifile-truncation.patch (closes: #507101). - CVE-2008-5658.patch: ZipArchive::extractTo directory traversal Patch: CVE-2008-5658.patch (closes: #507857). Thanks to Pierre Joye for help with the patch. [ Raphael Geissert ] * Picked up some patches from Gentoo (most included in PHP 5.2.7 and later): + patches/gentoo/005_stream_context_set_params-crash.patch + patches/gentoo/006_PDORow-crash.patch + patches/gentoo/007_dom-setAttributeNode-crash.patch + patches/gentoo/009_array-function-crashes.patch + patches/gentoo/010_ticks-zts-crashes.patch + patches/gentoo/015_CVE-2008-2665-wrapper-safemode-bypass.patch + patches/gentoo/017_xmlrpc-invalid-callback-crash.patch + patches/gentoo/019_new-memory-corruption.patch + patches/gentoo/freetds-compat.patch - was deprecated_freetds_check.patch -- Sean Finney <seanius@debian.org> Sat, 24 Jan 2009 21:17:13 +0100 php5 (5.2.6.dfsg.1-2) unstable; urgency=low [ Sean Finney ] * Make sure a file used to track state is properly removed in the postinst, thanks Raphael (closes: #511049). [ Thijs Kinkhorst ] * Fix watch file to mangle version. [ Raphael Geissert ] * Ship script used to take an upstream tarball and remove the non DFSG-free stuff, update watch file accordingly. -- Sean Finney <seanius@debian.org> Tue, 13 Jan 2009 08:24:36 +0100 php5 (5.2.6.dfsg.1-1) unstable; urgency=high [ Sean Finney ] * Incorporate previous NMU. * Updated system tzdata patch from Joe Orton. * Removed tzdb-nofree_ents_ifnotzdata.patch, which is now incorporated into Joe's patch. * Two backported fixes from 5.2.8, thanks to Olivier Bonvalet for looking them up. - Upstream bug #46157 (PDOStatement::fetchObject prototype error) Patch: pdo-fetchobject-prototype-error.patch - Upstream bug #46308 (Invalid write in zend object handler / getter) Patch: zend_object_handlers-invalid-write.patch * Security related fixes: - CVE-2008-5624: Incorporate fix from 5.3 for proper initialization of uid/gid for apache2 sapi. Patch: BG-initializing-fix.patch - CVE-2008-5557: heap overflows in the mbstring extension. Patch: CVE-2008-5557.patch (closes: #511493). [ Thijs Kinkhorst ] * Correct description typo, thanks Mathias Brodala (Closes: #508989). -- Sean Finney <seanius@debian.org> Mon, 12 Jan 2009 12:12:36 +0100 php5 (5.2.6.dfsg.1-0.1) unstable; urgency=low * Non-maintainer upload. * Remove exts/dbase from orig tarball (Closes: #341420) -- Ben Hutchings <ben@decadent.org.uk> Sat, 29 Nov 2008 19:19:28 +0000 php5 (5.2.6-5) unstable; urgency=high * Update debian/copyright to document that the DFSG-unfree email requirement in ext/standard/rand.c has been rescinded by the copyrightholder (Closes: #498621). -- Thijs Kinkhorst <thijs@debian.org> Sun, 05 Oct 2008 11:32:35 +0200 php5 (5.2.6-4) unstable; urgency=high [ Sean Finney ] * Take three unreleased fixes from upstream CVS: - CVE-2008-3658: Buffer overflow in the imageloadfont function. Patch: CVE-2008-3658.patch (closes: #499989) - CVE-2008-3659: Buffer overflow in the memnstr function. Patch: CVE-2008-3659.patch (closes: #499988) - CVE-2008-3660: Remote DoS in fastcgi module Patch: CVE-2008-3660.patch (closes: #499987) [ Raphael Geissert ] * snmp_leaks.patch: fixes memory leaks in the snmp extension (Closes: #423296) - Thanks to Rodrigo Campos <rodrigocc@gmail.com> for the follow up - Thanks to Federico Cuello for the original patch * php5-dev.lintian-override: fix it so it actually works -- Sean Finney <seanius@debian.org> Sun, 14 Sep 2008 14:25:11 +0200 php5 (5.2.6-3) unstable; urgency=high [ Thijs Kinkhorst ] * Drop unneeded php5-timezonedb Suggests and obsolete php3 Conflicts. * Add documentation about the timezonedb change (Closes: #492025). [ Adam Conrad ] * Modify 033-we_WANT_libtool.patch to cope with newer versions of libtool that only copy auxilliary files when --install is used, while still working with older versions that DTRT without. [ Raphael Geissert ] * debian/rules: + Avoid installing useless test suites in php-pear (Closes: #478995) + Remove any empty directory in php-pear + Also get rid of usr/share/php/data/Structures_Graph/* - Those were meant to be used by upstream maintainer * debian/php5-dev.lintian-overrides: - usr/lib/php5/build/run-tests.php is not meant to be used directly * debian/control: bumped Standards Version to 3.8.0, no changes needed * bad_whatis_entries.patch: fixes the whatis entries of all the manpages * deprecated_freetds_check.patch: fixes the freetds detection routine + Closes: #494230 - Thanks to jklowden@freetds.org and the Gentoo folks for the patch (RC bugfix, upload urgency bumped) * debian/libapache2-mod-php5*-{prerm,postinst}: - Create a status file when removing the package (but not purging) while having the mod enabled so reinstallation of the package does not end up disabling the module (Closes: #471548) [ Sean Finney ] * Bump dependency on libmysqlclient15off to require the version from lenny or later, in order to avoid subtle problems not previously detected with libmysqlclient_r on mixed etch/lenny/sid systems (closes: #495575). -- Sean Finney <seanius@debian.org> Wed, 20 Aug 2008 19:32:02 +0200 php5 (5.2.6-2) unstable; urgency=high [ Raphael Geissert ] * Lintian-based changes: - also install a lintian override for libapache2-mod-php5filter - fixed the generic lintian overrides so they are meaningful - dropping linda overrides, linda is gone now - s/meta-package/metapackage * debian/control: - Updated php5's description so it mentions three instead of only two server-side SAPIs - Depend on php5-cli in php-pear (Closes: #482517) + Previous change reverted because of PEAR packages FTBFS - {B-,}Depend on tzdata to avoid crashes caused by the tz ext patch - Dropped some versioned {b-,}dependencies that are satisified even on sarge * php.ini-*: state that when using a custom save_path, gc_probability should also be set (Closes: #388808, #321460) * tzdb-nofree_ents_ifnotzdata.patch: avoid free'ing ents when the tz dir does not exist (Closes: #483461) [ Sean Finney ] * Fix for CVE-2008-2829: unsafe usage of deprecated imap functions Patch: CVE-2008-2829.patch * Modifications to suhosin.patch due to alignment problems on some architectures. Thanks to Stefan Esser for the initial suggestion. (Closes: #481737). * Rename the apache2 filter module to libphp5filter.so, to prevent conflicting filenames for symbols in the debug package. -- Sean Finney <seanius@debian.org> Thu, 03 Jul 2008 08:14:45 +0200 php5 (5.2.6-1) unstable; urgency=medium * New upstream release. Fixes several security issues of unknown impact: + possible stack buffer overflow in the FastCGI SAPI + integer overflow in printf() + unknown issue CVE-2008-0599 + a safe_mode bypass in cURL + incomplete multibyte chars inside escapeshellcmd() [ Sean Finney ] * New patch (use_embedded_timezonedb.patch) allows us to default to using the system provided timezone database instead of the one bundled with PHP. Many thanks to Joe Orten from Red Hat for the patch! (closes: #447174, #471104). * Updated the Suhosin patch to v0.9.6 (5.2.6). * New patch: force_libmysqlclient_r.patch, forcing the build system to link against the threadsafe libmysqlclient without having to enable the other zts features in php. This is required since the apr libraries are now linking against this as well and mysql exports the same symbols from both libraries. Thanks to Stefan Fritsch (closes: #469081). * Massaged/updated various other patches in debian/patches * Update copyright information to have information about non-trivial patches worthy of copyright attributions, and update information about current debian maintainers. * Add some useful quilt settings in debian/rules to lower the amount of noise in future quilt updates. * Now building a php5 apache2 module with filter-module support in a new libapache2-mod-php5filter package (closes: #438120). [ Thijs Kinkhorst ] * Checked for policy 3.7.3, no changes. [ Raphael Geissert ] * Build a php5-dbg package with the debug symbols of the SAPIs & extensions + Bump debhelper dependency to >= 5 as dh_strip behaves differently. * debian/watch: refactored so it can actually be used to download the tarball * debian/rules: removed bashisms (Closes: #478613) * debian/control: add a notice about Suhosin being applied (Closes: #471324) + Additionally make sure the PHP boilerplate is the same for each package * debian/patches/manpage_spelling.patch: - fix spelling mistakes in man page (Closes: #413712) * debian/NEWS: s/suhosin/Suhosin (Closes: #434351) * debian/control: removed ORed postgresql-dev build-dep (Closes: #429981) + postgresql-dev is a transitional package since etch * Override the following lintian messages: + SAPI packages package-contains-empty-directory usr/lib/php5/20060613+lfs/ + php5-common package-contains-empty-directory usr/lib/php5/libexec/ * Set our custom PHP_PEAR_DOWNLOAD_DIR when building the pear stuff + Avoids the creation of /tmp/pear (Closes: #463979) * Replaced all 'make' with '$(MAKE)' so any extra flag is preserved * debian/rules: s/DEB_BUILD_ARCH/DEB_HOST_ARCH + HOST is the machine the package is built for. * Recommend php5-cli instead of depending on it in php-pear (Closes: #243214) + php5-cli is only needed by the, rearely used, pear installer * debian/README.source: inform how to generate php5-dbg's Depends * debian/patches/029-php.ini_paranoid.patch: updated (Closes: #459814) + Thanks to Javier Fernández-Sanguino Peña <jfs@computer.org> Changes: - includes some variables which were no present in the first version and removes modules not available in PHP5. Also fixes typos in comments which have since been fixed in php.ini-dist - adds notes (Debian-specific) of which security features applications should not rely on - add more information of why some variables were enabled - reorder the description of changes to suit the location in the config file - add notes of deprecated features in PHP6 - add more (suggested) changes to the session module to make a more secure use and storage of session IDs. - remove the 'include' function from the list of disabled functions as it is quite common for most applications - modify the valid 'include_path' to make it really paranoid ('.' is not allowed anymore) - adjust locations of directories, including the upload dir and session dir - proper definition for sql.safe_mode and description (missing in php.ini-dist of what it is really for) - added session configuration variables which are not available in php.ini-dist together with recommended paranoid values (session.referer_check, session.entropy_file, session.entropy_length) - added more information to session configuration (not available in php.ini) based on the information at php.net * Lintian-based changes: - debian/php5-common.dirs: do NOT create usr/share/doc/php5-common/PEAR/ - fixed a hyphen-used-as-minus-sign in php5(1):319 - get rid of usr/share/php/data/Structures_Graph/LICENSE in php-pear * Move /usr/share/php/docs to /usr/share/doc/pear-php/PEAR (Closes: #331034) [ Steve Langasek ] * Step down from the PHP maintenance team, removing myself from uploaders. So long, and thanks for all the fish! -- Sean Finney <seanius@debian.org> Sun, 04 May 2008 21:15:47 +0200 php5 (5.2.5-3) unstable; urgency=high * zend_parse_parameters does not handle size_t's, causing issues with 043-recode_size_t.patch and segmentation faults for recode-using pages. changed problematic parameters back to "int" and added an overflow check. thanks to Thomas Stegbauer, Tim Dijkstra, Bart Cortooms, Sebastian Göbel, and Vincent Tondellier for their reports. closes: #459020. -- Sean Finney <seanius@debian.org> Thu, 21 Feb 2008 00:59:21 +0100 php5 (5.2.5-2) unstable; urgency=low * debian/patches/libdb_is_-ldb: reorder the search for db4 instances to give precedence to -ldb, so that we always get the version that matches the installed -dev package instead of whichever most recent version php upstream currently knows about. Closes: #463397. * Update suhosin patch to not patch .dsp files (and config.w32), which are irrelevant to Unix builds and seem to cause problems for clean patching/unpatching. -- Steve Langasek <vorlon@debian.org> Fri, 01 Feb 2008 18:46:15 +0000 php5 (5.2.5-1) unstable; urgency=low [ Sean Finney ] * New upstream release * Updated suhosin patch for 5.2.5 minus ./configure as before. * Workaround for xargs not handling extra long cmdlines in session cleanup script (Closes: #461755). * Remove unneccesary DEB_BUILD_GNU_TYPE fudging (Closes: #429066). Thanks to Riku Voipio for the report/patch. [ Raphael Geissert ] * debian/rules: now DEB_BUILD_OPTIONS=nocheck aware * Updated description of the php5 meta-package to reflect removal of apache (Closes: #418038) * Capitalise apache where needed (Closes: #439575) * Homepage is now a control entry (moved from Description), Closes: #439578 * Fixed test-results.txt target so parallel package building doesn't fail * Added Suggests: php5-timezonedb to all the SAPIs [ Steve Langasek ] * Add ${shlibs:Depends} to php5-common, since it does build ELF objects now (pdo.so) * Update build-deps to libdb4.6-dev now that libaprutil1-dev has switched. Closes: #461192. -- Steve Langasek <vorlon@debian.org> Thu, 17 Jan 2008 13:39:17 -0800 php5 (5.2.4-2) unstable; urgency=low [ sean finney ] * for posterity revised previous changelog to reference the CVE id's of security issues resolved by the latest upstream release. * lintian: use debian/compat instead of DH_COMPAT in debian/rules. * lintian: use source:Version and binary:Version where appropriate, instead of Source-Version * lintian: remove a couple pieces of cruft in the changelog that were causing false-postive wrong-bug-number-in-closes, but were generally useless anyway. [ Raphael Geissert ] * Using test-results.txt as a target * cronjob now checks for existance of /usr/lib/php5/maxlifetime (Closes: #439286) * Fixed memory limit of 1232M in php.ini for cli (Closes: #440624) * Build the interbase extension using firebird2.0-dev (Closes: #433736) * Unapply patches with debian/rules clean [ Steve Langasek ] * Don't patch configure or php_config.h.in in suhosin.patch, as these are auto-generated and including them in the patch results in a race condition for the necessary build-time regeneration. Thanks to Daniel Schepler for reporting, and to Damyan Ivanov for helping to sort out the fix. Closes: #443637. * Also remove the modified auto-generated files in the clean target, which triggers a warning about disappearing files when building the source package but avoids carrying irrelevant diffs to these files in the Debian diff. * Now that the testsuite is being run at build time, test failures cause a bunch of junk files to be left around in the Debian diff. So clean up several false-positive failures: - 052-phpinfo_no_configure.patch: we're patching the output of phpinfo(), so patch the test as well - fix_broken_upstream_tests.patch: use a local directory for tests that use sessions, skip the phpinfo test after all because it doesn't appear to be compatible with current testsuite behavior, and disable the moneyformat test if en_US locale is not available. There are still several other failing tests, but these are not false positives and remain enabled pending investigation. -- sean finney <seanius@debian.org> Wed, 24 Oct 2007 21:51:14 +0200 php5 (5.2.4-1) unstable; urgency=low * New upstream release. * Security issues resolved in the latest release: - CVE-2007-2519 - Directory traversal vulnerability in PEAR [ sean finney ] * patch from Jan Wagner to be able to conditionally disable any patches that break binary-compatibility with official php binary-only extensions. see debian/rules for more information. * now incorporate the php unit tests into the build process. for those interested the output is stored in the file /usr/share/doc/php5-common/test-results.txt . * by default we now ship with enable_dl = Off, as there are some fairly significant ramifications security-wise to having it on. * we shipping with the suhosin patch enabled by default. special thanks to Blars Blarson for providing a sparc machine for testing purposes with 5.2.3 (closes: #397179). * new binary package php5-gmp, with the newly enabled gmp extension, since whatever reason for not doing so either never existed or no no longer exists (closes: #344137). Build-Depends added for libgmp3-dev. [ Steve Langasek ] * php5-module.postinst: don't assume that the postinst is only relevant when called with 'configure' as an argument, some future debhelper code could apply in the case of other methods of invocation. * Clean up build dependencies for recent library transitions: - libsnmp-dev is now the real package name, and is supported as a virtual package for backports. - re-add firebird2-dev as an alternative to firebird1.5-dev, to support backports. - the curl -dev package name has changed from libcurl3-openssl-dev to libcurl4-openssl-dev; update to the proper name, with libcurl-dev as an alternative. * Switch php5-sybase to use the mssql extension instead of the sybase_ct extension. Closes: #418734, #329065. -- sean finney <seanius@debian.org> Sun, 16 Sep 2007 14:46:06 +0200 php5 (5.2.3-1) unstable; urgency=low * new upstream release. * upstream has incorporated the last of the recent CVE fixes, so the patches have been removed. * change build dependencies for firebird2-dev -> firebird1.5-dev, as the firebird maintainer has changed names in order to provide more clarity since there's also a firebird2.0 now (closes: #427181). * now include, but do not apply by default, the suhosin patch. see NEWS.Debian for more information. -- sean finney <seanius@debian.org> Mon, 04 Jun 2007 22:02:10 +0200 php5 (5.2.2-2) unstable; urgency=low [sean finney] - build with --with-ldap-sasl and modify build-depends to include libsasl2-dev in order to get the ldap_sasl_bind function (closes: #422490). - the json extension is now on by default in php builds, so there's no need for the php5-json package. added a Provides/Conflicts to help set an upgrade path. - apache 1.x support is soon disappearing. as a consequence we are no longer building the libapache-mod-php5 module. the php5 metapackage should as a result bring in libapache2-mod-php5 by default for those who already have it installed. -- sean finney <seanius@debian.org> Sun, 20 May 2007 21:59:56 +0200 php5 (5.2.2-1) unstable; urgency=low [ sean finney ] * new upstream release (closes: #422405). * /most/ of the previous CVE patches have been committed upstream, though: - the patch for MOPB-41 was fixed in a different way and we'll be keeping our fix for the time being. - it doesn't seem like MOPB-45 has been fixed yet. * remove build-dependency option on libmysqlclient12-dev, since the mysqli option requires it, and 15 is in stable now anyway. thanks to Henk van de kamer for finding this (closes: #422224). * now includes requested fix for mysql row counts (closes: #418471). * needle/haystack issues are reported fixed (closes: #399924). * oh yeah, because we're using quilt now: (closes: #338315). * update build-deps to libdb4.5-dev | libdb4.4-dev (closes: #421929). note that the resulting php packages won't actually build against libdb4.5 until all of our build-dependant packages do too. -- sean finney <seanius@debian.org> Sat, 05 May 2007 19:56:30 +0200 php5 (5.2.0-12) unstable; urgency=high [ sean finney ] * modify the build-depends to play more nicely when the net-snmp maintainers decide to change their package names (closes: #421061). -- sean finney <seanius@debian.org> Tue, 01 May 2007 14:24:01 +0200 php5 (5.2.0-11) unstable; urgency=high [ sean finney ] * The following security issues are addressed with this update: - CVE-2007-0910/MOPB-32 session_decode() Double Free Vulnerability * note that this is an update to the previous version of the upstream fix for CVE-2007-0910, which introduced a seperate exploit path. - CVE-2007-1286/MOPB-04 unserialize() ZVAL Reference Counter Overflow - CVE-2007-1380/MOPB-10 php_binary Session Deserialization Information Leak - CVE-2007-1375/MOPB-14 substr_compare() Information Leak Vulnerability - CVE-2007-1376/MOPB-15 shmop Functions Resource Verification Vulnerability - CVE-2007-1453/MOPB-18 ext/filter HTML Tag Stripping Bypass Vulnerability - CVE-2007-1453/MOPB-19 ext/filter Space Trimming Buffer Underflow Vuln. - CVE-2007-1521/MOPB-22 session_regenerate_id() Double Free Vulnerability - CVE-2007-1583/MOPB-26 mb_parse_str() register_globals Activation Vuln. - CVE-2007-1700/MOPB-30 _SESSION unset() Vulnerability - CVE-2007-1718/MOPB-34 mail() Header Injection - CVE-2007-1777/MOPB-35 zip_entry_read() Integer Overflow Vulnerability - CVE-2007-1887-1888/MOPB-41 sqlite_udf_decode_binary() Buffer Overflow - CVE-2007-1824/MOPB-42 php_stream_filter_create() Off By One Vulnerablity - CVE-2007-1889/MOPB-44 Memory Manager Signed Comparision Vulnerability - CVE-2007-1900/MOPB-45 ext/filter Email Validation Vulnerability * The other security issues resulting from the "Month of PHP bugs" either did not affect the version of php5 shipped in unstable, or did not merit a security update according to the established security policy for php in debian. You are encouraged to verify that your configuration is not affected by any of the other vulnerabilities by visiting: http://www.php-security.org/ * other, less interesting changes: - now use quilt for managing local patches. - massage all of the patches, eliminating fuzz and offsets. -- sean finney <seanius@debian.org> Mon, 23 Apr 2007 19:02:51 +0200 php5 (5.2.0-10) unstable; urgency=high [ sean finney ] * The php security update contained a regression in the streams module. this version contains an updated version of the patch for CVE-2007-0906 (116-CVE-2007-0906_streams.patch), which should fix the regression. Thanks to Martin Pitt for noticing this. * Fix the patch names in the previous changelog entry, and fix a factual inaccuracy that was accidentally pasted from the php4 changelog. * The previous update was missing two fixes from CVE-2007-0906: * interbase: (116-CVE-2007-0906_interbase.patch) * zip: (116-CVE-2007-0906_zip.patch) -- sean finney <seanius@debian.org> Wed, 07 Mar 2007 23:11:29 +0100 php5 (5.2.0-9) unstable; urgency=high [ sean finney ] * The following security issues are addressed with this update: - CVE-2007-0906: Multiple buffer overflows in various code: * session (116-CVE-2007-0906_session.patch) * imap (116-CVE-2007-0906_imap.patch) * str_replace: (116-CVE-2007-0906_string.patch) * the sqlite and mail related vulnerabilities in this CVE do not affect the php5 source packages. - CVE-2007-0907: sapi_header_op buffer underflow (116-CVE-2007-0907.patch) - CVE-2007-0908: wddx information disclosure (116-CVE-2007-0908.patch) - CVE-2007-0909: More buffer overflows: * the odbc_result_all function (116-CVE-2007-0909_odbc.patch) * various formatted print functions (116-CVE-2007-0909_print.patch) - CVE-2007-0910: Clobbering of super-globals (116-CVE-2007-0910.patch) - CVE-2007-0988: 64bit unserialize DoS (116-CVE-2007-0988.patch) Closes: #410995. * The package maintainers would like to thank Joe Orton from redhat and Martin Pitt from ubuntu for their help in preparation of this update. * backport upstream fix for AUTH PLAIN support in imap extension Closes: #401712. -- sean finney <seanius@debian.org> Sat, 03 Mar 2007 11:13:33 +0100 php5 (5.2.0-8) unstable; urgency=high [ sean finney ] * Update package information to say simply "Apache 2" instead of "Apache 2.0" (ref: #400306). * Update package description for php-pear to mention needing phpN-dev for building PECL extensions (closes: #401825). * Add mention of Freetype fonts to php5-gd package description, thanks to Ole Laursen for the suggestion (closes: #387881). * Include a backported version of upstream's fix for alignment calculatations which cause FTBFS problems for some arches. Thanks to Roman Zippel for finding this (closes: #401129). patch: 114-zend_alloc.c_m68k_alignment.patch * Remove --enable-yp, as it's no longer used and seperately packaged. Thanks to Martijn Grendelman for mentioning this (closes: #402161). * Add mention to README.Debian of needing to restart apache when installing modules (closes: #392249). * Don't strip the DSO modules if building with DEB_BUILD_OPTIONS containing nostrip * Backported a patch from upstream CVS to fix a rather nasty memory leak in zend_alloc (closes: #402506). patch: 115-zend_alloc.c_memleak.patch * The memleak and FTBFS are targeted at etch, and there aren't any other significant changes, so priority=high. -- sean finney <seanius@debian.org> Sun, 17 Dec 2006 16:49:35 +0100 php5 (5.2.0-7) unstable; urgency=high [ Steve Langasek ] * Also disable firebird in the PDO config for archs other than i386/amd64. -- sean finney <seanius@debian.org> Fri, 24 Nov 2006 15:20:53 +0100 php5 (5.2.0-6) unstable; urgency=high [ sean finney ] * firebird2-dev (and thus php5-interbase) is only available on i386/amd64, so update the control/rules information accordingly. thanks to Bastian Blank for reporting this (closes: #399558). -- sean finney <seanius@debian.org> Wed, 22 Nov 2006 19:04:04 +0100 php5 (5.2.0-5) unstable; urgency=high [ sean finney ] * bring some of the mainline php4 modules back into the php source package instead of distributing them in independant source packages: - php5-imap - php5-interbase - php5-mcrypt - php5-pspell - php5-tidy these modules are still provided in the same binary packages as before, but will now be built in tandem with the core php packages. * fix for pdo.so duplicate loading warnings, thanks to Jan Wagner (closes: #398367, #399248). -- sean finney <seanius@debian.org> Mon, 20 Nov 2006 12:41:37 +0100 php5 (5.2.0-4) unstable; urgency=high * Re-re-enable LFS support, forward-porting vorlon's fixes in the php4 tree. * Add a bit of support in upgrade scripts to avoid unnecessary ucf prompting during upgrades (closes: #398363). * Update build-dependencies to reflect that libpcre3-dev >= 6.6 is required. Thanks to Jan Wagner for pointing this out. * loosen dependencys for libapache2-mod-php5 to allow usage with apache2-mpm-itk as an alternative to prefork. Closes: #398580, #398481. -- sean finney <seanius@debian.org> Wed, 15 Nov 2006 08:33:28 +0100 php5 (5.2.0-3) unstable; urgency=high * Unify PHP options for pear binaries to: -d output_buffering=1 -d open_basedir="" -d safe_mode=0 -d memory_limit="-1" (Closes: #397625) * [debian/rules]: Enable PDO building only in apache2 build. -- Ondřej Surý <ondrej@debian.org> Fri, 10 Nov 2006 14:09:00 +0100 php5 (5.2.0-2) unstable; urgency=high [ Ondřej Surý ] * Revert Large File Support for this moment. We will try to found root of the problem for etch, but we do not promise anything. (Closes: #397465) -- Ondřej Surý <ondrej@debian.org> Wed, 8 Nov 2006 01:13:48 +0100 php5 (5.2.0-1) unstable; urgency=high [ sean finney ] * new upstream release. since this means the 5.1 series is deadware in the eyes of its developers, we better get on this train before it's too late. Note: this also fixes the htmlentities() exploit. Reference: CVE-2006-5465. Closes: #396766. * s/postinst/postrm/ on one critical line in debian/rules. whoops. Thanks to Bart Martens for finding this (closes: #396873). * as a pennance i've enabled LFS support (closes: #359686). * new version now includes all mbstring headers (closes: #391368). * enable new built-in zip support. * enable pdo support for currently supported db types, and place the extensions in the respective extension packages. future db types will be added, but probably post-etch as they will probably introduce new packages/dependencies (closes: #348882). * move the mysqli module into the mysql module's package, and remove the no longer necessary mysqli package. * massaging/removal of various patches to upstream changes: D patches/106-strptime_xopen.patch D patches/110-CVE-2006-4812_zend_alloc.patch M patches/006-debian_quirks.patch D patches/111-mbstring-headers.patch M patches/053-extension_api.patch [ Ondřej Surý ] * Package checked, upload to unstable. -- Ondřej Surý <ondrej@debian.org> Tue, 7 Nov 2006 09:26:51 +0100 php5 (5.1.6-6) unstable; urgency=high [ sean finney ] * add notes to php.ini(-dist) about "unsupported" security features. patch: 113-php.ini_securitynotes.patch [ Ondřej Surý ] * SECURITY: include patch for html buffer overflows in ext/standard/html.c Reference: CVE-2006-5465 Patch: 114-CVE-2006-5465_htmlentities.patch Closes: #396766 -- Ondřej Surý <ondrej@debian.org> Fri, 3 Nov 2006 12:32:50 +0100 php5 (5.1.6-5) unstable; urgency=high [sean finney] * add a README.Debian.security to clarify how we handle/respond to security problems in stable releases. * SECURITY: include patch for integer overflow in zend_alloc.c. Reference: CVE-2006-04812 (closes: #391586). patch: 110-CVE-2006-4812_zend_alloc.patch * bump the debhelper compatibility level to 4. * remove cyclic depends for mysql/mysqli. * the long overdue rework of configuration file handling. this also removes the need for debconf and template translations (closes: #361211, #393788, #388697). * start using ucf to manage the the various SAPI php.ini files. * cleanup and consolidation of a few things in the ./debian dir * bump the memory limit to 32M for the cli API (closes: #375070, #340586). * include a fix for missing mbstring headers reported by Jan Wagner (closes: #391368). patch: 111-mbstring-headers.patch. * include support for PTY's in proc_open, as reported by Eike Dehling. according to php's BTS (http://bugs.php.net/bug.php?id=39224) the feature was disabled only because the configure script couldn't accurately determine whether the feature was available, and we know it is :) (closes: #381438). patch: 112-proc_open.patch. * update standards-version to 3.7.2 -- sean finney <seanius@debian.org> Sat, 28 Oct 2006 14:29:44 +0200 php5 (5.1.6-4) unstable; urgency=high [sean finney] * no longer build against GPL'd gdbm library (closes: #390452). * updated apache2 module dependencies to build against and coexist with apache2.2 (closes: #390455). -- sean finney <seanius@debian.org> Sat, 07 Oct 2006 12:06:09 +0200 php5 (5.1.6-3) unstable; urgency=low [ sean finney ] * php5 was building against db4.3 even though db4.4 headers were installed. fix applied to ./ext/dba/config.m4 while we wait for a real fix from upstream (closes: #388601). -- sean finney <seanius@debian.org> Mon, 02 Oct 2006 17:42:50 +0200 php5 (5.1.6-2) unstable; urgency=low [ sean finney ] * enable the mysqli extension (closes: #320835). -- sean finney <seanius@debian.org> Tue, 19 Sep 2006 19:31:27 +0200 php5 (5.1.6-1) unstable; urgency=high [ Adam Conrad ] * Drop 041-shut_up_snmp.patch, which was no longer needed as of 5.1.0. [ Ondřej Surý ] * Acknowledge NMU. * New upstream release (Closes: #383596) - Added missing safe_mode/open_basedir checks inside the error_log(), file_exists(), imap_open() and imap_reopen() functions. - Fixed overflows inside str_repeat() and wordwrap() functions on 64bit systems. - Fixed possible open_basedir/safe_mode bypass in cURL extension and with realpath cache. (CVE-2006-2563) (Closes: #370165) - Fixed overflow in GD extension on invalid GIF images. - Fixed a buffer overflow inside sscanf() function. (CVE-2006-4020) (Closes: #382256) - Fixed an out of bounds read inside stripos() function. - Fixed memory_limit restriction on 64 bit system (really with 5.1.6). * Bump libdb build-dep from libdb4.3 to libdb4.4, to match with apache. -- Ondřej Surý <ondrej@debian.org> Sat, 19 Aug 2006 14:41:43 +0200 php5 (5.1.4-0.1) unstable; urgency=high * Non-maintainer upload. * New upstream release. (Closes: #366109) * Fixes information leak in html_entity_decode() (CVE-2006-1490). (Closes: #359907) * Fixes phpinfo() XSS (CVE-2006-0996). (Closes: #361914) * Fixes copy() safe mode bypass (CVE-2006-1608). (Closes: #361915) * Fixes tempnam() open_basedir bypass (CVE-2006-1494). (Closes: #361916) * Fixes wordwrap() buffer overflow (CVE-2006-1990). (Closes: #365312) * Fixes substr_compare() DoS condition (CVE-2006-1991). * Fixes crash during too deep recursion (CVE-2006-1549). (Closes: #361917) * Fixes injection in mb_send_mail() (CVE-2006-1014, CVE-2006-1015); not mentioned in upstream changelog. (Closes: #368595) * 044-strtod_arm_fix.patch: Adapted for new upstream; pulled in from Piotr Roszatycki's packages. * 108-64bit_datetime.patch: Patch to fix possible segfault on systems where sizeof(void*) > sizeof(int); patch from David Mosberger-Tang. -- Steinar H. Gunderson <sesse@debian.org> Tue, 13 Jun 2006 22:38:33 +0200 php5 (5.1.2-1) unstable; urgency=low * New upstream bugfix and security update release (closes: #347894) - Fixes multiple cross-site-scripting vulnerabilities; CVE-2006-0208 - Resolves multiple HTTP response splitting vulnerabilities, allowing arbitrary header injection via Set-Cookie headers; see CVE-2006-0207 - While we don't currently build it, this release also fixes a format string vulnerability in the mysqli extension; see CVE-2006-0200 - Includes a new version of the PEAR installer that seems to have a slightly better clue about the difference between INSTALL_ROOT and PHP_PEAR_INSTALL_DIR, fixing pear.conf (closes: #346479, #346501) * While the above is partially true, the PEAR installer is still a bit broken (it won't install correctly under fakeroot anymore, YAY), so shuffle debian/rules to have a build-pear-stamp target, as a stopgap. * Add 106-strptime_xopen.patch, moving the _XOPEN_SOURCE definition down in ext/standard/datetime.c, below the php.h include (closes: #346550) * Add 107-reflection_is_ext.patch, munging ext/reflection/config.m4 to properly call the PHP_ARG_ENABLE macro for an extension, not built-in. * Stop php-pear from Replacing and Conflicting with php-html-template-it, as we only now ship the bare essential to make the pear installer go. -- Adam Conrad <adconrad@0c3.net> Mon, 16 Jan 2006 16:12:31 +1100 php5 (5.1.1-1) unstable; urgency=low * New upstream bugfix release, skipping the problematic 5.1.0 release: - Fixes a zend.ze1_compatibility_mode segfault (closes: #333374) - Remove libtool patch from acinclude.m4, now integrated upstream. - Remove 038-round_test_fix.patch, now integrated upstream. - Remove 049-exported-headers.patch, as upstream's build system has gotten more clever about what they should and shouldn't export. - Remove 054-open_basedir_slash.patch, now integrated upstream. - Remove 055-gd_safe_mode_checks.patch, fixed differently upstream. - Mangle 101-sqlite_is_shared.patch, to deal with upstream changes. - Remove 104-64_bit_serialize.patch, now integrated upstream. - Remove 105-64_bit_imagettftext.patch, now integrated upstream. * Many security vulnerabilities fixed (closes: #341368, #336005, #336654): - Resolves a local denial of service in the apache2 SAPI, which can be triggered by using session.save_path in .htaccess; CVE-2005-3319 - Resolves an infinite loop in the exif_read_data function which can be triggered with a specially-crafted JPEG image; CVE-2005-3353 - Resolves a vulnerability in the parse_str function whereby a remote attacker can fool PHP into turning on register_globals, thus making applications vulnerable to global variable injections; CVE-2005-3389 - Resolves a vulnerability in the RFC1867 file upload feature where, if register_globals is enabled, a remote attacker can modify the GLOBALS array with a multipart/form-data POST request; see CVE-2005-3390 - Resolves numerous safe_mode and open_basedir bypasses; CVE-2005-3391 - Resolves INI settings leaks in the apache2 SAPI, leading to safe_mode and open_basedir bypasses between virtual hosts; CVE-2005-3392 - Resolves a CRLF injection vulnerability in the mb_send_mail function, allowing injection of arbitrary mail headers; see CVE-2005-3883 - Includes PEAR 1.4.5, resolving a vulnerability in the pear installer which could lead to arbitrary code execution; see CVE-2005-4154 * Bump libdb build-dep from libdb4.2 to libdb4.3, to match with apache. * Bump our MySQL build-dep to 5.0's libmysqlclient15-dev (closes: #343793) * Automate the process of getting the list of built-in modules into the package descriptions, so it stays fresh in the future (closes: #341867) * Intentionally disable PDO support until I've sorted out the best way to deal with shipping this shiny new feature that won't break the world. * The new PEAR happens to fix the Command.php greedy match bug filed in Debian as part of the fix for the wider security issue (closes: #334969) * Create 056-mime_magic_strings.patch, making the mime_magic extension more liberal about what mime-types is accepts, as well as making it skip over ones it dislikes, rather than disabling itself (closes: #335674) * Add 057-no_apache_installed.patch, to stop spewing a mess of errors in configure because we don't have the apache binaries in the build chroot. * Fix small typo in the php5-xsl package description (closes: #344816) -- Adam Conrad <adconrad@0c3.net> Thu, 15 Dec 2005 14:46:56 +1100 php5 (5.0.5-3) unstable; urgency=low * Build-Depend on libcurl3-openssl-dev, since libcurl3-dev is going away soon. Keep libcurl3-dev as an alternate for backporting (see: #334367) * Switch from libmysqlclient12 to libmysqlclient14; this puts us on the *other* side of the line regarding which combinations of DSOs cause segfaults, so hopefully the others catch up with us soon (closes: #332453) * Look for magic.mime in /usr/share/file now instead of /usr/share/misc/file, as the path has been changed to comply with the FHS (see: #334510) * Make the above backportable as well, by searching for both files, and picking the one that's currently installed on the user's system. * Include swedish debconf translation from Daniel Nylander (closes: #330763) * Make pear use '/usr/bin/php' instead of just 'php' to make sure we don't get some random binary on $PATH that won't work right (closes: #329415) * Set PHP_PEAR_SIG_BIN to /usr/bin/gpg, and have php-pear Recommends: gnupg -- Adam Conrad <adconrad@0c3.net> Fri, 21 Oct 2005 02:30:19 +1000 php5 (5.0.5-2) unstable; urgency=medium * Remove Andres Salomon from the Uploaders field, at his request. Thanks for all your work on the PHP packages, Andres, now fix our kernel bugs. * Add 054-open_basedir_slash.patch, which fixes a bug where if open_basedir is set to "/foo/", users can access files in "/foobar/", which is not the documented behaviour; this addresses CAN-2005-3054 (see: #323585) * Add 104-64_bit_serialize.patch from Joe Orton, resolving a segfault when serializing objects on all 64-bit architectures (closes: #329768) * Add 105-64_bit_imagettftext.patch, fixing a type mismatch in the GD extension, causing memory corruption on 64-bit arches (closes: #331001) * Add 055-gd_safe_mode_checks.patch from PHP CVS, adding missing safe_mode checks to the _php_image_output and _php_image_output_ctx GD functions. * Make php-pear Provide, Replace, and Conflict php-html-template-it, which we appear to have absorbed into the main PEAR packaging (closes: #332393) -- Adam Conrad <adconrad@0c3.net> Tue, 27 Sep 2005 16:09:29 +1000 php5 (5.0.5-1) unstable; urgency=low * New upstream release, adjust patch offsets and fuzz, and drop patches: - Drop 009-snmp-int-sizes.patch, finally fixed upstream. - Drop 051-gcc-4.0.patch, fixed differently upstream. - Drop 102-php_streams.patch, fixed upstream. - Drop 103-catch_segv.patch, also fixed upstream. - Includes PEAR XML_RPC fix for CAN-2005-2498. - Includes phpinfo() XSS fix for CVE-2005-3388. * Distribute the shiny new manpages for php-config and phpize. -- Adam Conrad <adconrad@0c3.net> Mon, 12 Sep 2005 02:29:24 +1000 php5 (5.0.4-4) unstable; urgency=low * Ondřej Surý <ondrej@sury.org>: - Add patch from CVS to fix regression in PHP 5.0.4, where file related functions all stop reading at 2,000,000 bytes (closes: #321930) * Adam Conrad <adconrad@0c3.net>: - Enable support for gdbm files in the dba handler; half the base system already appears to depend on libgdm, so we can't make things worse. - Add another patch from CVS to fix a segfault in the catch/throw handler under interesting nesting cases (closes: #322507) - Rebuild against libsnmp9-dev for new libsnmp SOVER (closes: #327107) -- Adam Conrad <adconrad@0c3.net> Thu, 8 Sep 2005 00:36:36 +1000 php5 (5.0.4-3) unstable; urgency=low * And fix the module/extension API situation one last time, this time we read ZEND_EXTENSION_API_NO, ZEND_MODULE_API_NO, and PHP_API_VERSION, pick the most recent of the three, assume things broke in ways we're not willing to cope with, and both change the extension directory to use that value, as well as setting it to the provides/depends for the various SAPI and extension packages. * Add a new option to php-config, 'php-config --phpapi', which extension packagers should now be using to get the current phpapi they're building against and set their dependencies accordingly. * Strip the -gnu off the end of the DEB_*_* variables and drop the versioned dpkg-dev build-dep to ease backporting to sarge and hoary; doing so in such a way as to still allow for easy cross-compiling. * Add postgresql-dev build-dep alternate for easy hoary/sarge backports. * Make libapache2-mod-php5 the default alternate dependency for the php5 metapackage, since we really do want to encourage the apache upgrade. * Make php5-dev stop shipping copies of files from autotools-dev, shtool, and libtool, and instead symlink to them and depend on those packages, thus avoiding the shtool issues from CAN-2005-1751 and CAN-2005-1759. -- Adam Conrad <adconrad@0c3.net> Sun, 31 Jul 2005 03:05:08 +1000 php5 (5.0.4-2) unstable; urgency=low * We now have a mailing list. Set the maintainer to the list, and move myself to Uploaders where, apparently, I belong. * Use ZEND_MODULE_API_NO rather than PHP_API_VERSION for extension deps, as recent upstream ABI breakage in 4.4.0 leads me to believe this is the only constant they actually bother to update on ABI changes. * Bring back some concflicts that went missing (libapache-mod-php5 needs to conflict with libapache-mod-php4 and older versions of php4, while the two libapache2-mod-php[45] modules also need to conflict). * Adjust debian/watch to not match on upstream's alpha/beta/rc releases. -- Adam Conrad <adconrad@0c3.net> Wed, 27 Jul 2005 22:30:42 +1000 php5 (5.0.4-1) unstable; urgency=low * Initial PHP5 release; packaging forked from php4 4:4.3.11-1. - Closes: #262977, #293832 * Ondrej Sury <ondrej@sury.org>: - Removed some obsolete cruft, since there wasn't any previous php5 packages there is no need, to check /usr/share/doc/*, etc. - Removed apache2 IfModule hack, it's been fixed in php5. - Updated patches to php5, removing those which are obsolete. - Changes xslt extension to xsl (using libxslt). - Updated debian/* including changelog. - Raised update-alternatives priority to 50. * Adam Conrad <adconrad@0c3.net>: - Merged with php4 4:4.4.0-1 packaging. - Re-roll upstream tarball to include PEAR::XML_RPC 1.3.3, which includes a security fix for CVE CAN-2005-1921. - Bump to Standards-Version 3.6.2, with no source changes. - Stop distributing the phpextdist binary, as upstream has stopped. - Drop the ext_skel binary and skeleton dir from php5-dev, as it has been deemed obsolete upstream and the version in the tarball is not considered useful anymore. PEAR::PECL_Gen upstream will replace it. - Fix longstanding broken shebang lines in debconf config scripts. - Remove lintian overrides for modules; lintian no longer complains about missing shlibs for libraries outside the linker path. - Add a linda override for the non-standard directory permissions on /var/lib/php5 in php5-common. - Rename php5-pear to php-pear, have it replace php4-pear, and depend on php5-cli OR php4-cli; make sure it works with both. - Compile in SOAP extension (closes: #307580) - Enable SQLite extension as shared, make the xmlrpc extension shared. - Enabled the pgsql extension, and disabled the imap extension (which will be moving to another source package and become the example package for out-of-tree builds). -- Adam Conrad <adconrad@0c3.net> Sat, 16 Jul 2005 23:42:36 +1000 php4 (4:4.3.11-1) unstable; urgency=low * New upstream release (closes: #304052) - Drop CVS patches, we're back in step with upstream versions. - Remove 048-x509_multiple_orgUnits.patch, incorporated in 4.3.11. - Remove 050-4.3.11_file_copy_fix.patch, incorporated in 4.3.11. - Remove 040-curl_open_basedir.patch, as upstream has solved this in a different fashion. - Adjust patches for offset and fuzz. - Remove bits from debian/rules dealing with the DB PEAR extension, since it's no longer shipped in the php4-pear package. * Rebuild against newer version of freetds library (closes: #317369) * Add 052-phpinfo_no_configure.patch, which disables the display of our "Configure Command" in phpinfo(), which was the source of many bogus bug reports over the years, due to people misinterpreting its meaning. * New translations to Vietnamese and Russian (closes: #316821, #310199) - vi.po contributed by Clytie Siddall <clytie@riverland.net.au> - ru.po contributed by Yuriy Talakan' <yt@amur.elektra.ru> * Mention FastCGI in the description of php4-cgi (closes: #310810) -- Adam Conrad <adconrad@0c3.net> Mon, 4 Jul 2005 17:47:32 +1000 php4 (4:4.3.10-15) unstable; urgency=low * Bring back the shipping of /usr/share/doc symlinks in our packages, as this, in concert with moving the migration detection from preinst to postinst (which was done in the last upload), seems to give us the sanest upgrade path. Thanks to Steve Langasek for smacking me around with unpack/upgrade scenarios for a while to convince me of this. -- Adam Conrad <adconrad@0c3.net> Mon, 9 May 2005 02:13:19 -0600 php4 (4:4.3.10-14) unstable; urgency=high * Revert the directory->symlink magic to work how it used to, since the new behaviour broke hideously on upgrades from Woody, causing certain files (like the changelog) to mysteriously go missing (closes: #307591) * Move our template php.ini to /usr/share/php4, so we stop violating policy by using files from /usr/share/doc (as seen in #307591) * Remove 'readline' from the php4-cli package description, since we don't actually build with readline support enabled anymore (closes: #306571) -- Adam Conrad <adconrad@0c3.net> Wed, 4 May 2005 01:48:19 -0600 php4 (4:4.3.10-13) unstable; urgency=low * Update email address for Andres Salomon <dilinger@debian.org> * Add Portuguese translation from Miguel Figueiredo (closes: #305038) * Include 051-gcc-4.0.patch, which resolves a build failure in libxmlrpc (from the xmlrpc extension) with gcc-4.0 (closes: #287956) -- Adam Conrad <adconrad@0c3.net> Mon, 18 Apr 2005 00:29:54 -0600 php4 (4:4.3.10-12) unstable; urgency=low * Add 050-4.3.11_file_copy_fix.patch, which reverts a broken 'fix' made to the copy() function, causing it to fail in particularly spectacular ways when used on remote files (closes: #304601) * Use -g instead of -gstabs on powerpc64-linux (closes: #301571) -- Adam Conrad <adconrad@0c3.net> Thu, 14 Apr 2005 03:53:27 -0600 php4 (4:4.3.10-11) unstable; urgency=medium * Address an FTBFS waiting to happen in the php4-dev package: - Remove Win32 and Netware specific headers. - Stop shipping php4-pgsql headers. - Stop shipping the expat headers, since we don't even use the bundled expat library. - Make php4-dev depend on libssl-dev, since it wants to include ssl.h when you use it to build network-using extensions. * Stop building extensions twice; we don't need two copies. -- Adam Conrad <adconrad@0c3.net> Tue, 12 Apr 2005 03:14:03 -0600 php4 (4:4.3.10-10) unstable; urgency=low * Update to 200503131325 CVS (AKA: 4.3.11RC1), fixing several bugs including a segfault in mysql_fetch_field() (closes: #299608) * Remove 042-remove_windows_paths.patch, incorporated upstream. * Add 048-x509_multiple_orgUnits.patch to bring the openssl extension in line with the upcoming 4.3.11 behaviour of listing multiple Organisational Units in an x509 cert as an array, rather than only listing the last in the list. * After much talk with upstream, revert the ZTS changes. We are no longer building a thread-safe PHP. (closes: #299820, #297223, #297679) * ZTS was breaking file search paths, leading to errors loading files from the cwd (closes: #298282, #298518, #299089, #299356) * Stop building caudium-php4 (closes: #294718, #297702, #295100) - We can't link against the GPL pike7.2, which we've been doing. Oops. - Even if the above weren't true, upstream has insisted that ZTS is a horribly broken solution, slated for eventual removal, and should never, ever be used. In light of that, caudium users should instead use php4-cgi, either as a plain CGI, or as a FastCGI backend. - Not even attempting to provide an upgrade path, as it would be needlessly complex, and caudium-php4 in previous stable releases was nothing more than a useless toy, given that it had nearly no useful extensions built-in or supported. * Rewrite 041-shut_up_snmp.patch to take a different approach, this time regrettably reverting a fix for a memory leak, in the name of making things work properly, including squashing the putenv() intecaction bug between PHP and other apache modules (closes: #298511, #300628) * On sidegrades from distributions where different modules may be built from their own source, and thus have their own doc directories, bad things happen when we try to replace those with symlinks, so now we check for this in preinst, and fix stuff up magically to Just Work. * Add Jeroen van Wolffelaar <jeroen@wolffelaar.nl> to Uploaders. * Fix up modules regexes to use "\.so" instead of ".so" (cf: #300998) -- Adam Conrad <adconrad@0c3.net> Wed, 16 Mar 2005 22:46:05 -0700 php4 (4:4.3.10-9) unstable; urgency=low * Update 040-curl_open_basedir.patch once more to make sure it doesn't segfault when fed a null or uninitialised URL (closes: #295447) * Add 047-zts_with_dl.patch, courtesy of Steve Langasek to re-enable the dl() function in our builds, despite upstream's claim that it "might not be threadsafe on all platforms"; it is on ours (closes: #297839) * Make the php4-dev binaries versioned with alternatives (closes: #295903) * Update build-deps to libmysqlclient12-dev (closes: #290989, #227549) -- Adam Conrad <adconrad@0c3.net> Sun, 6 Mar 2005 07:30:35 -0700 php4 (4:4.3.10-8) unstable; urgency=high * Add 046-zend_plist_buggery.patch which unrolls the changes made to zend.c in CVS post-4.3.10. The memory leaks fixed by these changes seem to not have been hurting us terribly so far, while the "fix" (breaking persistent lists) was, uhm, bad (closes: #295998, #296694) * Revise 041-shut_up_snmp.patch to call init_snmp with 'snmpapp' as the appname, rather than 'php', to maintain backward compatibility, and to wrap our setenv/unsetenv magic only around snmp_shutdown, which seems to solve a segfault when php4-snmp is loaded with mod_perl (closes: #296282) * Fix 042-remove_windows_paths.patch to catch both cases where windows path stripping should occur (closes: #296406) -- Adam Conrad <adconrad@0c3.net> Tue, 22 Feb 2005 07:49:32 -0700 php4 (4:4.3.10-7) unstable; urgency=high * Rewrite 040-curl_open_basedir.patch, so it now does what it's supposed to (addressing CAN-2004-1392) and no longer segfaults (closes: #295447) -- Adam Conrad <adconrad@0c3.net> Thu, 17 Feb 2005 00:06:36 -0700 php4 (4:4.3.10-6) unstable; urgency=high * Add 044-strtod_arm_fix.patch to fix the FPU confusion FTBFS on arm. * Add 045-exif_nesting_level.patch to bump the exif header parsing max nesting level to something that actually works with most JPEG images. -- Adam Conrad <adconrad@0c3.net> Mon, 14 Feb 2005 16:04:28 -0700 php4 (4:4.3.10-5) unstable; urgency=low * Add 043-recode_size_t.patch to fix 32/64-bit issues causing the recode extension to segfault on alpha/amd64/ia64 (closes: #294986) * Move the ./buildconf stuff in the unpatch target inside the test for patch-stamp, as it's uselss unless we're unpatching. -- Adam Conrad <adconrad@0c3.net> Sun, 13 Feb 2005 19:09:39 -0700 php4 (4:4.3.10-4) unstable; urgency=medium * Make php4-dev arch:any, as it contains some arch-specific defines. * Add 042-remove_windows_paths.patch, a patch to rfc1867.c to strip Windows paths from uploaded filenames, like it used to. (closes: #294305) * Fix up caudium description to reflect the fact that caudium it is no longer restricted from sharing extensions with other SAPIs. * Build-dep on apache2-threaded-dev (>= 2.0.53-3) to make sure we get a version with non-broken headers. -- Adam Conrad <adconrad@0c3.net> Wed, 9 Feb 2005 11:52:10 -0700 php4 (4:4.3.10-3) unstable; urgency=medium * Update to CVS, as of 200502060530 (closes: #288672) - Fixes two vulnerabilities in exif.c, CAN-2005-1042 and CAN-2005-1043 - Fixes two vulnerabilities in image.c, CAN-2005-0524 and CAN-2005-0525 - File uploads with "'" in them aren't cut off anymore (closes: #288679) - unserialize() is no longer ridiculously slow (closes: #291392) - Add 000-200502060530_CVS.patch - Adapt debian/rules to the realities of upstream's new buildconf - Add 033-we_WANT_libtool.patch, to force relibtoolizing with Debian's libtool, rather than using upstream's broken bundled libtool - Drop 031_zend_strtod_1.1.2.10.patch and 032_zend_strtod_debian.patch - Adjust patches for offsets and fuzz - Force --with-pic, as policy demands it, and the build system doesn't * Added several patches, yanked from the Fedora PHP sources: - 034-apache2_umask_fix.patch, fixes umask not being properly reset after each request (closes: #286225) - 036-fd_setsize_fix.patch, fixes misuse of FD_SET() - 038-round_test_fix.patch, makes the rounding test work on gcc-3.3 * Removed --with-libedit, as being able to background php is more useful, in my opinion, than using readline functions (see #286356) * Include zip support in all SAPIs (closes: #288534, #288909) * Enable Zend Thread Safety for all SAPIs, meaning that our modules are now compiled for ZTS APIs as well. (closes: #278212, #264015) - Make sure caudium-php4 now provides phpapi-$(ver), and modules can be configured with the caudium SAPI. - Add 039-reentrant_libs.patch to link to the reentrant versions of libldap and libmysqlclient * Stop suggesting phpdoc, as it's undistributable anyway. * Add 040-curl_open_basedir.patch, to make php4-curl respect the value of open_basedir, thanks to Martin Pitt (closes: #291410) * Add 041-shut_up_snmp.patch, to prevent libsnmp5 from attempting (and failing) to write persistent data every time it shuts down. Ugh. -- Adam Conrad <adconrad@0c3.net> Sun, 6 Feb 2005 05:32:11 -0700 php4 (4:4.3.10-2) unstable; urgency=high * Patch Zend/zend_strtod.c twice: - Patch from upstream CVS to fix FTBFS on Sparc/Linux systems - Patch from me to fix FTBFS on __mc68000__, __ia64__, and __s390__ -- Adam Conrad <adconrad@0c3.net> Sat, 18 Dec 2004 19:35:30 -0700 php4 (4:4.3.10-1) unstable; urgency=high * New upstream release, including the following security fixes: - CAN-2004-1018 - shmop_write() out of bounds memory write access. - CAN-2004-1018 - integer overflow/underflow in pack() and unpack() functions. - CAN-2004-1019 - possible information disclosure, double free and negative reference index array underflow in deserialization code. - CAN-2004-1020 - addslashes() not escaping \0 correctly. - CAN-2004-1063 - safe_mode execution directory bypass. - CAN-2004-1064 - arbitrary file access through path truncation. - CAN-2004-1065 - exif_read_data() overflow on long sectionname. - magic_quotes_gpc could lead to one level directory traversal with file uploads. * Adjust patch offsets for new upstream, fix 013-force_getaddrinfo.patch to match with new configure.in and drop 026-4.3.10_session_fixes.patch which is included in 4.3.10. -- Adam Conrad <adconrad@0c3.net> Wed, 15 Dec 2004 17:17:40 -0700 php4 (4:4.3.9-2) unstable; urgency=low * Adam Conrad <adconrad@0c3.net>: - Add -fno-strict-aliasing to CFLAGS, as the (several thousand) warnings I'm getting from GCC are frightening me a tad. - Remove the php-cgi alternative in php4-cgi's prerm, to avoid leaving dangling symlinks (closes: #275962, #282315) - Include 030-imap_getacl.patch, adding the imap_getacl() function required by the GOsa project (closes: #282484) - Include php.ini-paranoid in doc/examples, provided and maintained by Javier Fernández-Sanguino Peña (closes: #274374) - Make /cgi-bin/php4 an alternative for /cgi-bin/php (closes: #282464) - Remove obsolete info from README.Debian relating to session_mm, since we stopped building with libmm a while back. - Reintroduce /usr/lib/php4/libexec that went missing in a previous upload, since the build uses it as the default safe_mode exec dir. * Andres Salomon <dilinger@voxel.net>: - Add patch to include gd headers in php4-dev, as some PECL modules (notably, pdflib) expect it; 028-export_gd_headers.patch. - Lintian fix: Add missing #DEBHELPER# token to php4-common.postrm. -- Adam Conrad <adconrad@0c3.net> Wed, 01 Dec 2004 18:48:13 -0700 php4 (4:4.3.9-1) unstable; urgency=high * New upstream release, removed the following patches fixed upstream: 014-apache2handler_CVS_fixes.patch, 015-gdNewDynamicCtx_Add_Ex.patch, 018-unix_socket_fd_leak.patch, 020-4.3.9_overflow_fixes.patch, 021-4.3.9_sybase_ct_fixes.patch, 022-4.3.9_sprintf_fixes.patch, 023-4.3.9_array_fixes.patch, 024-4.3.9_glob_fix.patch, and 025-4.3.9_domxml_segfaults.patch * Resolves undiscolsed vulnerabilities in GPC processing and rfc1867 handling of file uploads via the $_FILES array; these have since been assigned CVE CAN-2004-0958 and CAN-2004-0959 (closes: #274206) * After some fairly heavy testing from several users and developers, finally update php4-snmp to use libsnmp5 (closes: #195929) * Add 026-4.3.10_session_fixes.patch from CVS, which prevents PHP from segfaulting when a nonexistant or unsupported save_handler or serialize_handler is specified in php.ini. * Add /etc/apache/conf.d/php4.conf, setting up our mime-types, on the off chance that the user's /etc/mime.types is broken (closes: #271171) * Reintroduce a CGI binary at /usr/bin/php4-cgi, so people who can't make use of the --force-cgi-redirect CGI binary in /usr/lib/cgi-bin can instead use #!/usr/bin/php4-cgi scripts (closes: #273143) * Enable FastCGI for both CGI binaries, now that it no longer conflicts with, but rather complements, the CGI SAPI (closes: #233849) * Bump libgd2 build-dep a notch to make sure we build against a version that actually has XPM support built in (closes: #270435) * Finally drop the bogus libapache-mod-ssl dependency from the apache1.3 php4 module, as glibc (>= 2.3.2.ds1-17) has fixed the dlopen refcount bug that we were hacking around (closes: #205553, #230956, #271000) * Remove the mm session handler from the apache1.3 build. Since the files handler now works on all arches, and is configured to be secure by default, mm seems to have outlived its usefulness. (closes: #119902, #149430, #166811, #272463, #232840) * Rename sapi/apache2handler/sapi_apache2.c to mod_php4.c so that <IfModule> directives aren't ambiguous between php4 and php5. * Add Czech translation, thanks to Miroslav Kure (closes: #274038) * Configure CLI with --with-libedit for readline support, and add 027-readline_is_editline.patch, since Debian's libedit headers are not installed in /usr/include/readline (closes: #274031) * libcurl grew a new SONAME somewhere along the way, and upgrading doesn't seem to cause regressions in php4-curl, so upgrade we shall, changing build-deps accordingly (closes: #260389) -- Adam Conrad <adconrad@0c3.net> Mon, 4 Oct 2004 22:57:37 -0600 php4 (4:4.3.8-12) unstable; urgency=high * On new php4-cli installations, if php4-cgi is installed, we copy its php.ini as a starting reference, so that command line scripts that used to work don't start mysteriously failing (closes: #270153) * php4-common has grown a postrm script to make sure we completely clean out and remove /var/lib/php4 during the purge phase. * Optimize garbage collection cronjob to use 'xargs -r -0 rm', so we aren't forking for every session file we delete (closes: #268918) -- Adam Conrad <adconrad@0c3.net> Sun, 5 Sep 2004 19:17:42 -0600 php4 (4:4.3.8-11) unstable; urgency=high * Andres Salomon <dilinger@voxel.net>: - Fix bashism in maxlifetime script (closes: #270015) * Adam Conrad <adconrad@0c3.net>: - Clarify setup instructions in README.Debian for using php4-cgi with the apache and apache2 packages (closes: #228342, #228343) -- Adam Conrad <adconrad@0c3.net> Sat, 04 Sep 2004 23:21:21 -0600 php4 (4:4.3.8-10) unstable; urgency=high * Andres Salomon <dilinger@voxel.net>: - Change frequency of session file cleansing, based on the maximum value of session.gc_maxlifetime from all php.ini files (closes: #269688). - Update README.Debian to mention session cleaning cron job. * Adam Conrad <adconrad@0c3.net>: - Drop php4-cgi from the list of alternate dependencies for the php4 metpackage to smooth upgrades for woody users who have both php4 and php4-cgi installed (closes: #269628, #269348, #269377) - Fix cut-n-paste issue in php4-cli postinst (closes: #269466) - Add 023-4.3.9_array_fixes.patch, which fixes problems with the extract() function misbehaving with multiple element references. - Add 024-4.3.9_glob_fix.patch to fix broken return values from glob() when it succeeds with no matches (closes: #269287) - Add 025-4.3.9_domxml_segfaults.patch, fixing segfaults in the domxml extension when it shares memory space with other libxml2-using libs. - Update the comments in php.ini to point out that, due to dilinger's changes above, session.gc_maxlifetime is honoured by the gc cronjob. -- Adam Conrad <adconrad@0c3.net> Fri, 03 Sep 2004 20:42:56 -0600 php4 (4:4.3.8-9) unstable; urgency=high * Re-introduce the changelog.Debian that went missing in the last upload due to the php4-common move from arch:all to arch:any * Clean up lintian warnings regarding scripts that weren't executable and executables that weren't scripts. * Add a lintian override for the non-standard-dir-perm of /var/lib/php4 * Update to Standards-Version 3.6.1 (no changes, other than the above) -- Adam Conrad <adconrad@0c3.net> Thu, 26 Aug 2004 21:53:27 -0600 php4 (4:4.3.8-8) unstable; urgency=low * Default session.save_path is now compiled in to php4, allowing us to, again, comment out the value in php.ini. * Comment out session.gc_probability in the default php.ini, as we've now compiled in a default of 0, allowing the cronjob to do the garbage collection for us instead. (closes: #267720) * Make the 5 SAPI postinsts smarter, allowing them to poke around in people's configs and make sure that sessions won't be broken after we upgraded them from a perfectly functional system. * Add 022-4.3.9_sprintf_fixes.patch, fixing incorrect formatting of floats with padding by sprintf(). * Make php4-common arch:any, and loosen up some of the other any->all package dependencies to make sure binNMUs won't break. -- Adam Conrad <adconrad@0c3.net> Tue, 24 Aug 2004 03:09:43 -0600 php4 (4:4.3.8-7) unstable; urgency=high * Back out LFS support AGAIN, as we're disabling LFS in apache2 for the Sarge release. (closes: #266869) * Add 021-4.3.9_sybase_ct_fixes.patch, backporting several fixes for the sybase_ct extension from 4.3.9rc1. * Tidy up descriptions a fair bit: - Disambiguate short descriptions of SAPIs. (closes: #244571) - Refresh the (now much longer) lists of built-in modules for each SAPI. - Explain why caudium-php4 can't use any loadable extensions. - Remove silly advertising blurb for Zend, since very few people are still using php3, and those who are can't be convinced to upgrade just by telling them "Hey, it's faster!". - Add Homepage URI to each SAPI description. - Fix typo in php4-domxml description. (closes: #146124) * Make caudium-php4 provide php4-mysql and php4-pgsql, so it can be used with packages that depend on something like "php4, php4-mysql". * Enable --with-mime-magic and make sure all SAPIs depend on libmagic1 to pull in /usr/share/misc/file/magic.mime (closes: #175136) -- Adam Conrad <adconrad@0c3.net> Thu, 19 Aug 2004 18:27:17 -0600 php4 (4:4.3.8-6) unstable; urgency=high * Add libgcrypt11-dev to the build-depends, as something seems to be pulling it in and causing an FTBFS (closes: #265952) * Add 020-4.3.9_overflow_fixes, backporting fix for integer overflows in array_slice(), array_splice(), substr(), substr_replace(), strspn() and strcspn(). * Bump the apache2 build-dep to (>= 2.0.50-9) to ensure we're building against the new ABI-incompatble libapr0, which brings in proper large file support. Bump the apache2 binary dependency as well. (closes: #266210, #266192) * Enable large file support on all SAPIs except for caudium, as I'm not sure how caudium will react to the change, and I don't want to destabilise anything just before release. This change has been heavily tested with apache2/apache/cgi/cli, and all is well there. * Re-enable 019-z_off_t_as_long.patch, which is needed to make sure that LFS-enabled SAPIs can still use zlib file functions correctly. * Rework the apache2 restarting logic to only restart apache2 if apache2ctl configtest succeeds, otherwise kick out a warning to the user. Even then, we run force-reload with ||true, in case apache2 fails to start for other reasons (closes: #264958) * Make php4-gd Provide php4-gd2, so packages which still depend on php4-gd2 are installable (and so packaging frontends can take the provides/conflicts/replaces hint and DTRT with it) * Split php4-cgi to php4-cgi and php4-cli (closes: #227915) - Add php4-cli to debian/control, replaces older php4-cgi versions - php4-cgi depends on php4-cli for smooth transitions - php4-pear now depends on php4-cli (closes: #243214, #221434) - Add php4-cli to list of SAPIs configurable for modules - Munge php.1 manpage to include -cli info - Enable pcntl and ncurses in -cli (closes: #135861, #190947, #241806) * Move all of php4's files to libapache-mod-php4, and make php4 a metapackage that depends on libapache-mod-php4 | libapache2-mod-php4 | php4-cgi | caudium-php4 (closes: #244573, #246654, #244571, #266517) * Include skeleton directory in php4-dev (closes: #95832, #211338) * Include php.ini-recommended in php4-common's examples (closes: #181396) * Move /var/lib/php4 to php4-common and install a cronjob that cleans out old sessions every 30 minutes (closes: #256831, #257111) * Move the libapache-mod-ssl dependency from php4-imap to libapache-mod-php4 to stop irritating users of other SAPIs (closes: #240003, #246887, #263381) * Compile pgsql and mysql support into the caudium SAPI, so it's slightly less useless (closes: #181175) -- Adam Conrad <adconrad@0c3.net> Sun, 15 Aug 2004 19:56:14 -0600 php4 (4:4.3.8-5) unstable; urgency=low * Build-depend on chrpath and use it to nuke rpath from modules during the install target of debian/rules. * Add 018-unix_socket_fd_leak.patch to get rid of UNIX socket file descriptor leak on failed fsockopen() calls. (closes: #257269) * It would seem that if we want LFS support, all SAPIs and all extensions that do file access need to be built with LFS support, and since apache2 currently doesn't have LFS, this presents a problem. As such, I'm disabling LFS accross the board until apache2 supports it. (closes: #263962) * Add 019-z_off_t_as_long.patch, including local headers for zlib, forcing off_t = long for gzip file functions, however disable it for now, as we'll only need it if we reenable LFS (closes: #208608) * Add the Debian package revision as EXTRAVERSION to PHP, so one can more easily tell what version is currently running (for instance, if a user fails to restart Apache after an upgrade of php4, this would become obvious to them in the version banner and in phpinfo() * Fixed up debian/patches, adjusting offsets and adding newlines, so patch stops complaining and applies them cleanly. * libapache2-mod-php4 postinst now forces a reload of apache2, which should get the module properly working in all cases where people previously thought 'apachectl graceful' would cut it. (closes: #241352, #263424, #228343) * debian/rules explicitly sets PROG_SENDMAIL during configure so that builds on buildds with no sendmail installed don't get the mail() function disabled. (closes: #180734) * Enable XMLRPC-EPI support for all SAPIs (closes: #228825, #249368) * Enable sysvmsg support for all SAPIs (closes: #236190) * Enable dbx support for all SAPIs (closes: #229508, #249797) * Nuke aclocal.m4 before we run ./buildconf to ensure we get it regenerated correctly, and we get an up-to-date libtoolization. -- Adam Conrad <adconrad@0c3.net> Mon, 9 Aug 2004 07:47:46 -0600 php4 (4:4.3.8-4) unstable; urgency=low * Drop 016-pread_pwrite_XOPEN_SOURCE_500.patch, as it didn't seem to solve anything, really, and add 017-pread_pwrite_disable.patch, wich completely disables pread/pwrite usage, fixing session support on sparc, and pread/pwrite usage on amd64. (closes: #261311) -- Adam Conrad <adconrad@0c3.net> Mon, 26 Jul 2004 06:15:59 -0600 php4 (4:4.3.8-3) unstable; urgency=low * Steve Langasek <vorlon@debian.org>: - Give php4-pear a versioned dependency on php4-cgi, due to backwards-compatibility issues (closes: #260924). * Adam Conrad <adconrad@0c3.net>: - Added a debian/watch file for the curious, or people running automated uscan scripts over the entire archive. - Bump libgd2 build-dep to 2.0.28 to buy us guaranteed GIF support in php4-gd (closes: #66293) - Add 015-gdNewDynamicCtx_Add_Ex.patch, which fixes three double-free errors in php4-gd. This, in concert with the librrd0 update (see #261323) should clear up all known segfaults in php4-gd (closes: #220196, #234571, #241270, #246833, #251220, #260790) Thanks to Klaus Reimer <k@ailis.de> for the tip. - Add 016-pread_pwrite_XOPEN_SOURCE_500.patch, which fixes use of pread/pwrite in conjunction with LFS64. This should fix the files session handler on sparc, as well as the amd64 build failure. (closes: #234766, #239420, #261311, #248765) - Clean up debian/rules to remove a bunch of obsolete cruft, as well as introducing an LFSFLAGS, allowing us to easily turn LFS support on and off for each SAPI. - Re-enable LFS for apache 1.3, as it was enable in Woody and we should remain backward compatible. -- Adam Conrad <adconrad@0c3.net> Sun, 25 Jul 2004 18:49:31 -0600 php4 (4:4.3.8-2) unstable; urgency=high * Urgency "high" to make up for the last upload which contained security fixes but was uploaded urgency "low". * Adam Conrad <adconrad@0c3.net>: - Bump debhelper build-dep to >= 3, as we were using DH_COMPAT=3 in debian/rules. Not sure how this was missed for so long. - Add 014-apache2handler_CVS_fixes.patch, which fixes a memory leak in the apache2handler SAPI, as well as a logical mishandling of fatal errors during activation. * Steve Langasek <vorlon@debian.org>: - Revert large file support, which appears to cause ABI-incompatibilities (and therefore segfaults) for apache2 (closes: #259659). -- Adam Conrad <adconrad@0c3.net> Mon, 19 Jul 2004 20:44:00 -0600 php4 (4:4.3.8-1) unstable; urgency=low * Adam Conrad <adconrad@0c3.net>: - New upstream release (4.3.8). Fixes several security issues: + Fixed strip_tags() to correctly handle '\0' characters. + Improved stability during startup when memory_limit is used. + Replace alloca() with emalloc() for better stack protection. + Added missing safe_mode checks inside ftok and itpc. + Fixed address allocation routine in IMAP extension. + Prevent open_basedir bypass via MySQL's LOAD DATA LOCAL. + Fixes DoS in readfile() function, see CAN-2005-0596. - php4-pear now includes PEAR::Mail 1.1.3 (closes: #257688) - debian/control: change libpng3-dev build-dep to libpng12-dev - Add Turkish debconf translation, thanks to Osman Yuksel. (closes: #252940) * Andres Salomon <dilinger@voxel.net>: - New upstream release (4.3.7). The following patches are dropped: 007-dba_fix.patch 008-xbithack.patch 011-curl_api_update.patch 012-curl_deprecated_opts.patch. - Add 013-force_getaddrinfo.patch, so that getaddrinfo support is always enabled (instead of doing check during build). * Steve Langasek <vorlon@debian.org>: - Enumerate supported SAPIs in both the module postinst and the module config script, to avoid "question not found" errors from debconf. This doesn't give us automatic support for new SAPIs as they're added, but it avoids trying to configure SAPIs that we don't support (e.g., caudium), and it also sidesteps shell syntax errors caused by strangely-named subdirectories. - Remove apache2 from the TODO list, because it's done (closes: #243793). - Add /var/lib/php4 to the list of directories for the apache2 module, so we don't end up with a missing session dir (closes: #240962). - s/modules-config/apache-modconf/, now that the canonical name of the apache-common tool has changed - Drop references to php3 in README.Debian, and document the simplified process for enabling php4 in apache 1.3 (closes: #244564). - Enable large files support for all SAPIs (closes: #249500). - Fix commented-out default include path in php.ini (closes: #250274). -- Adam Conrad <adconrad@0c3.net> Wed, 14 Jul 2004 18:06:42 -0600 php4 (4:4.3.4-4) unstable; urgency=low * Drop apache2 work-around patch and add build-dep on apache2 2.0.48-8, now that #228840 is fixed. * Fix FTBFS problem caused by curl api changes, adding patches 011 and 012 (closes: #239159). * Add phpapi Provides for libapache2-mod-php4 (closes: #240386). * Add versioned build-dep for pcre, as apache2 has proven that pcre-3.9 and older won't work (closes: #215069). * Tighten build-dep versions to match upstream's autoconf version checks (closes: #214060). -- Andres Salomon <dilinger@voxel.net> Fri, 26 Mar 2004 23:27:27 -0500 php4 (4:4.3.4-3) unstable; urgency=low * Andres Salomon <dilinger@voxel.net>: - Fix incorrect php.ini path in CLI manpage (closes: #233757). - Add libapache2-mod-php4 module (closes: #214611). * Updated Japanese debconf translation; thanks to Kenshi Muto <kmuto@debian.org> (closes: #222424). * Build php4-gd against libgd2-xpm, removing the need for a separate php4-gd2 package (closes: #235390, #206045, #135664). * Add new Catalan debconf translation; thanks to Aleix Badia i Bosch <abadia@ica.es> (closes: #236630). * Add new Spanish debconf translation; thanks to Carlos Valdivia Yagüe <valyag@dat.etsit.upm.es> (closes: #235052). -- Steve Langasek <vorlon@debian.org> Sat, 28 Feb 2004 12:11:57 -0600 php4 (4:4.3.4-2) unstable; urgency=low * Add build-depends on autoconf, missed earlier (closes: #235012). * Minor updates to README.Debian list of supported extensions. * Fix integer size mismatch in snmp extension affecting 64-bit platforms -- Steve Langasek <vorlon@debian.org> Thu, 26 Feb 2004 22:25:27 -0600 php4 (4:4.3.4-1) unstable; urgency=low * New upstream version. Update local patch set accordingly, with help from Andres Salomon <dilinger@voxel.net>. - includes fix for snmpget() not closing its socket (closes: #207363). * Update build-depends to libdb4.2-dev, to match apache-dev (closes: #231692). * Drop translations of stale templates, and add new German debconf translation; thanks to Alwin Meschede <ameschede@gmx.de> (closes: #232270). * Add new Danish debconf translation; thanks to Claus Hindsgaul <claus_h@image.dk> (closes: #233887). * Move local patches into debian/patches/ for easier management, and add debian/rules targets for build-time application of patches. * Fix a problem with PHP "xbithack" causing ini scope leakage (closes: #230047). * Re-enable the openssl extension statically, since we now know for sure that the php4-imap problems are a glibc bug (closes: #197450). * Fix pear to set /usr/bin/php4 instead of /usr/bin/php for the value of php_bin, so PEAR-managed scripts work correctly (closes: #228381). In addition, use alternatives for /usr/bin/php for the benefit of user scripts (closes: #185283). * Set the default session save_path to /var/lib/php4 instead of to /tmp, and create this directory such that all users (for php4-cgi) can create files there and access their own files once created, but not see the names of other files in the directory (closes: #139810). * Drop our override of upstream's register_globals default (closes: #230878). -- Steve Langasek <vorlon@debian.org> Sat, 14 Feb 2004 10:23:24 -0600 php4 (4:4.3.3-5) unstable; urgency=low * Have php4-pear Suggest: php4-dev, for PECL extensions (closes: #225969). * Recompiled against the new version of libxslt, to get rid of the dependency on libxsltbreakpoint (closes: #224806). * Also recompiled against the new version of libc-client (closes: #227347). * Fix pear to not expect to be able to twiddle locks when running as non-root, which also seems to fix a memory utilization problem (closes: #225026). * Make php4-imap depend on libapache-mod-ssl, since this seems to be the only reliable way of getting apache to stop segfaulting. * Build-depend on libt1-dev, which replaces t1lib-dev. -- Steve Langasek <vorlon@debian.org> Mon, 5 Jan 2004 22:53:18 -0600 php4 (4:4.3.3-4) unstable; urgency=low * Fix prerm script to remove mod_php4, *not* mod_perl, from the config (Closes: #216889). * Use /etc/$i/httpd.conf instead of /etc/$i to decide whether to call modules-config. * Don't invoke debconf unless we have to in the postinst, to reduce the risk of interactions between modules-config and our questions. * Add Dutch debconf translation; thanks to Tim Dijkstra <tim@famdijkstra.org> (closes: #221439). * Sync dba lock handling against upstream CVS HEAD, to fix a bug with truncating db4 files when opening with 'c' (create). (Closes: #221559). -- Steve Langasek <vorlon@debian.org> Tue, 21 Oct 2003 16:49:03 -0500 php4 (4:4.3.3-3) unstable; urgency=low * Disable -gstabs on ia64, since this debugging symbol type is apparently unknown there; we should now have clean builds (with appropriate debugging symbols) on all archs. -- Steve Langasek <vorlon@debian.org> Mon, 20 Oct 2003 19:07:40 -0500 php4 (4:4.3.3-2) unstable; urgency=low * Don't call db_stop in the postinst, as this seems to cause problems for modules-config (closes: #215663, #215584). * Remove duplicate -prefer-pic flag on caudium build, in hope of making libtool do something sensible on ia64,hppa (closes: #216020). * Always build with debugging symbols, per current policy. * Unconditionally call dh_strip, which knows about DEB_BUILD_OPTIONS; and call install -s when installing shared extensions by hand. * Fix upstream build rules to not call libtool --silent. -- Steve Langasek <vorlon@debian.org> Wed, 15 Oct 2003 23:19:55 -0500 php4 (4:4.3.3-1) unstable; urgency=low * New upstream release. * Add Japanese debconf translation; thanks to Kenshi Muto <kmuto@debian.org> (closes: #211961). * Fix caudium handling to always grab the current pike version from dpkg when constructing include paths (closes: #212585). * Bump the c-client build dependencies to use the new -dev package name. * Convert php4 postinst/prerm scripts to use the new apache modules-config interface. -- Steve Langasek <vorlon@debian.org> Sun, 21 Sep 2003 17:26:31 -0500 php4 (4:4.3.2+rc3-6) unstable; urgency=low * Add Brazilian Portuguese debconf translation; thanks to André Luís Lopes <andrelop@debian.org> (closes: #207078). * Catch debian/control up with debian/rules for the zendapi -> phpapi transition. -- Steve Langasek <vorlon@debian.org> Sun, 31 Aug 2003 20:35:57 -0500 php4 (4:4.3.2+rc3-5) unstable; urgency=low * Kill the lintian warning on the grammar in the copyright file. * Redirect apacheconfig I/O to /dev/tty, to work around debconf behavior (for real this time). Closes: #207468, #206404. * Replace 'zendapi' with 'phpapi', since the former does not accurately describe the ABI changes that affect modules and can leave some packages installable but broken (closes: #208020). Also, remove the versioned conflicts with php4-{mysql,pgsql}, since this now supersedes. * Add French debconf translation; thanks to Michel Grentzinger <mic.grentz@online.fr> (closes: #207662). -- Steve Langasek <vorlon@debian.org> Sat, 23 Aug 2003 21:43:24 -0500 php4 (4:4.3.2+rc3-4) unstable; urgency=low * Have all php extensions automatically detect and configure for any installed SAPIs (closes: #143436). * Remove spurious dependencies from php4-dev, and replace autoconf2.13 with autoconf (closes: #180497). * Conflict with old php4-pgsql as we do with php4-mysql, as it manifests the same bug. * Add preliminary rules for building apache2 SAPI, but don't enable. * Call db_stop before trying to run apacheconfig (closes: #206404). * Check for the existence of /etc/php4 before trying to rmdir it, since there are apparently those who remove such directories prematurely (closes: #206120). -- Steve Langasek <vorlon@debian.org> Sun, 17 Aug 2003 00:19:38 -0500 php4 (4:4.3.2+rc3-3) unstable; urgency=low * Fixes for spurious package dependencies * Fix the paths emitted by php-config, so we can build php4-pgsql et al. -- Steve Langasek <vorlon@debian.org> Fri, 15 Aug 2003 23:44:55 -0500 php4 (4:4.3.2+rc3-2) unstable; urgency=low * Make sure pear.conf is properly marked as a conffile, by bumping DH_COMPAT to 3. * Generate all per-extension postinsts/prerms at build time, instead of managing them by hand. * Get rid of bogus, non-FHS directories from the caudium build. * Install the upstream php manpage in the php4-cgi package (closes: #175836). * Prevent null dereferencing in ldap_explode_dn() (closes: #205405). * Hard-code /usr/share/pear at the end of the include path, for backwards compatibility. * Debconf support for PHP extension registration, including po-debconf support (closes: #122353). * Fix interpreter path in /usr/bin/pear. * Make php4-pear depends: php4-cgi (closes: #182393). -- Steve Langasek <vorlon@debian.org> Wed, 13 Aug 2003 22:39:08 -0500 php4 (4:4.3.2+rc3-1) unstable; urgency=low * New upstream version. - includes fix for buffer overflow crashes in imap module (closes: #191640) - includes fix for dysfunctional open_basedir directive (closes: #197803) - include fix for various XSS vulnerabilities (closes: #200736) * Recompile against newest libc-client libs, following another soname change (closes: #199049) * Replace db2 with db4. * Trim down the cgi sapi rules, since it will now build both cli and cgi for us by default. * Kludge the caudium sapi, by hard-coding the include path we need for pike headers. * Copy the lex/yacc-generated .c and .h files into the build directories, since generating them at build time gives wildly different, and undisputably broken, results. * Update the install rules so they're compatible with current upstream handling of pear and the various SAPIs. * Add '=shared' to the --enable-xslt option, to get the right results for that extension. * Move PEAR extensions from /usr/share/pear to /usr/share/php. * Conflict with php4-mysql=4:4.2.3-14, due to bizarre Zend errors. -- Steve Langasek <vorlon@debian.org> Wed, 6 Aug 2003 22:43:28 -0500 php4 (4:4.2.3-14) unstable; urgency=low * Disable openssl extensions AGAIN. It appears that this double-linking mess is still causing nasty segfaults. (closes: #188014, #188025, #188058, #189202, #189653) -- Adam Conrad <adconrad@0c3.net> Sun, 20 Apr 2003 17:31:59 -0600 php4 (4:4.2.3-13) unstable; urgency=low * Revert NET-SNMP patch and build php4-snmp against UCD-SNMP again (closes: #185534) * Build against libmm13, as libmm12 no longer exists (closes: #187401) * Rebuild caudium-php4 against latest caudium-dev * Re-enable openssl linking and functions, now that our glibc 2.3 problems appear to be ironed out. * Enable xslt and exslt support in php4-domxml (closes: #172881) -- Adam Conrad <adconrad@0c3.net> Thu, 3 Apr 2003 05:53:24 -0700 php4 (4:4.2.3-12) unstable; urgency=low * Rebuild php4-sybase against libct1 (closes: #184461) -- Steve Langasek <vorlon@debian.org> Sat, 8 Mar 2003 20:03:33 -0600 php4 (4:4.2.3-11) unstable; urgency=low * Remove pike header location detection from debian/rules and do it properly in sapi/caudium/config.m4, using pike7.2-config --version -- Adam Conrad <adconrad@0c3.net> Mon, 3 Mar 2003 23:33:26 -0700 php4 (4:4.2.3-10) unstable; urgency=low * Added patch to build with NET-SNMP 5.x * Updated build-dep for libc-client to 2003debian (closes: #181565, #182854, #169886) * Updated build-dep for libcurl to libcurl2-dev (closes: #179722) * Added -mieee to alpha build to solve FPE errors (closes: #180656) * Removed arch-specific logic to build with gcc-3.2 on arm, since gcc-3.2 is now the default compiler on all architectures. * Add libwrap0-dev to the end of the build-depends to work around #183041. Someone remember to remove this later when the bug is fixed. :) * Build against newer libsablot0-dev (closes: #179886, #181550) * Introduce ugly hack in debian/rules to get the pike includes directory right for the caudium SAPI. -- Adam Conrad <adconrad@0c3.net> Sun, 2 Mar 2003 12:49:07 -0700 php4 (4:4.2.3-9) unstable; urgency=low * Fix caudium-php4 to not conflict with php4-pear (closes: #175415). -- Steve Langasek <vorlon@debian.org> Sun, 5 Jan 2003 16:40:20 -0600 php4 (4:4.2.3-8) unstable; urgency=low * Fix typo in debian/rules * Rebuild to bring in sync with latest caudium packages -- Adam Conrad <adconrad@0c3.net> Wed, 25 Dec 2002 20:00:59 -0700 php4 (4:4.2.3-7) unstable; urgency=low * Set a sane default for safe_mode_exec_dir (closes: #122920). * Rebuild against libmm-dev on i386, instead of against the no-longer-available libmm11-dev which Provides: the same (closes: #173509). -- Steve Langasek <vorlon@debian.org> Mon, 16 Dec 2002 22:48:40 -0600 php4 (4:4.2.3-6) unstable; urgency=low * Build with PEAR for all SAPIs, so that the built-in include_path is set correctly (overkill?). Closes: #169786, #172321 * Change section of php4-dev package to devel. * Add libkrb5-dev to build-depends, since libc-client2002-dev doesn't pull it in (closes: #173313). * Depend on coreutils instead of fileutils, since the latter is now an empty package (closes: #171265). -- Steve Langasek <vorlon@debian.org> Sun, 15 Dec 2002 23:20:30 -0600 php4 (4:4.2.3-5) unstable; urgency=low * Fix (snip, snip) the upstream build scripts, so that libphp4.so isn't worthlessly linked against the problematic openssl libs (closes: #165699, #165718, #165719, #166414). * Update config.{sub,guess} so that the package builds on mips platforms (closes #173218) * Replace libc-client-ssl2001-dev with libc-client2002-dev in build dependencies, fixing various php4-imap segfaults (closes: #169610, #169769). -- Steve Langasek <vorlon@debian.org> Sun, 15 Dec 2002 19:42:43 -0600 php4 (4:4.2.3-4) unstable; urgency=low * Remove build dependency on non-extant libmagick5-dev, which is no longer used anyway (closes: #169829, #172402). * Add myself to the Uploaders: field of the control file. -- Steve Langasek <vorlon@debian.org> Sat, 14 Dec 2002 12:52:06 -0600 php4 (4:4.2.3-3) unstable; urgency=low * Backport a patch from CVS to sanitize control characters in php_url_parse() to prevent ASCII control injection in fopen() calls. -- Adam Conrad <adconrad@0c3.net> Thu, 12 Sep 2002 16:29:46 -0600 php4 (4:4.2.3-2) unstable; urgency=low * I'm a moron (thanks to James Troup for pointing this out). * Change gcc-3.1 references in debian/rules to gcc-3.2. * Change GD build-dep to libgd-xpm-dev until GD package mess is worked out. -- Adam Conrad <adconrad@0c3.net> Tue, 10 Sep 2002 12:18:21 -0600 php4 (4:4.2.3-1) unstable; urgency=low * New upstream version * Added a patch from Ginger Alliance to eliminate warnings in xslt compile * Messed with the php4-imap build: - compiling with SSL support (closes: #122700) - commented out the static-on-i386 hack, libc-client is now linked dynamically * Sessions should finally be fixed, however I won't tag the bugs "woody" until I know for sure. (if you were affected, please test and send followups to me) * Updated arm build-dep to use gcc-3.2 since gcc-3.1 is gone now. -- Adam Conrad <adconrad@0c3.net> Tue, 10 Sep 2002 09:02:51 -0600 php4 (4:4.2.2-3) unstable; urgency=low * Fix typo resulting in php4-odbc not having a postinst (closes: #157116, #157927) * Build against latest caudium-dev to made caudium-php4 installable again. (closes: #158247) * Update build-deps to swap libpng3 for libpng2. (closes: #158908) -- Adam Conrad <adconrad@0c3.net> Sat, 7 Sep 2002 01:22:57 -0600 php4 (4:4.2.2-2) unstable; urgency=low * Pulled --with-ndbm out of ./configure, as libc6 no longer ships with headers or the library for db1 (closes: #156141, #155889) * Update build deps to build against libmm12 (closes: #155042) * php4-curl no longer depends on libcurl2-ssl (closes: #155015) -- Adam Conrad <adconrad@0c3.net> Sat, 10 Aug 2002 01:12:47 -0600 php4 (4:4.2.2-1) unstable; urgency=medium * New upstream * Fixes input validation vulnerability in rfc1867.c (closes: #153850) * Added missing prerm/postinst for php4-xslt (oops) -- Adam Conrad <adconrad@0c3.net> Mon, 22 Jul 2002 11:58:53 -0600 php4 (4:4.2.1-3) unstable; urgency=low * Yet more build fixes. This time, bump the arm build-dep from gcc-3.0 to gcc-3.1 to avoid compiler errors. I love the arm toolchain. No, really. -- Adam Conrad <adconrad@0c3.net> Wed, 29 May 2002 17:40:30 -0600 php4 (4:4.2.1-2) unstable; urgency=low * Applied small patch to fix building on non-32-bit architectures (closes: #148231) * Added still /more/ documentation about the unserializer, sessions, and the session.save_handler php.ini option. -- Adam Conrad <adconrad@0c3.net> Sun, 26 May 2002 14:43:55 -0600 php4 (4:4.2.1-1) unstable; urgency=low * The "When is Debian going to have new software like XF^H^HPHP 4.2?" release. * Probably the last update (barring huge packaging bugs or plain broken binaries) before starting on a complete reorg of the PHP packages. * Deserializer now works on big-endian architectures (addresses bug #121391 and probably others) * This release probably fixes a whole bunch of bugs. Will be going through the bug list and playing the reproducibility game after the upload. * Default include_path in php.ini now set to include pear. * Upstream default for register_globals HAS CHANGED. In the Debian php.ini we are still using "register_globals = On" for compatibility reasons, however our packages will change too. This is a warning for anyone packaging PHP scripts and applications to make sure you'll be compatible with the new default once it's set. -- Adam Conrad <adconrad@0c3.net> Sun, 26 May 2002 06:24:21 -0600 php4 (4:4.1.2-4) unstable; urgency=high * No binaries were harmed in the making up this upload. * Updated README.Debian and changelog. All other files untouched, as the binaries were merely unpacked and repacked. - Added a note to README.Debian about how to properly set up Apache for use with php4, if the installation didn't (and it usually doesn't <sigh>) get it right. - Added a note to README.Debian about the unserializer (and sessions) being messed up on big endian architectures. It's too late to try to get a proper fix in for this, so we're just going to have to cope. -- Adam Conrad <adconrad@0c3.net> Fri, 26 Apr 2002 12:27:40 -0600 php4 (4:4.1.2-3.1) unstable; urgency=low * The 'I broke it, I have to take credit for it' release. * Rebuild the package to get proper binary dependencies on alpha. -- Steve Langasek <vorlon@debian.org> Sun, 31 Mar 2002 17:13:09 -0600 php4 (4:4.1.2-3) unstable; urgency=low * Switched to --with-regex=php (from =system). This fixes all the problems with eregi/parse_url/fopen/etc on Alpha. * Cleaned up long descriptions (closes: #130977, #130954) -- Adam Conrad <adconrad@0c3.net> Wed, 27 Mar 2002 15:11:43 -0700 php4 (4:4.1.2-2) unstable; urgency=low * New maintainer (closes: #132980) * Enabling unixodbc support (closes: #107201) * Changed the install-modules target in build/rules_pear.mk so that it will error out in the case of an empty modules directory or failure to install modules (closes: #135304) -- Adam Conrad <adconrad@0c3.net> Tue, 12 Mar 2002 00:25:41 -0700 php4 (4:4.1.2-1) unstable; urgency=high * New upstream version with a security fix. This supercedes 4.1.1-2.2 from Steve Langasek: * Fix an error in the handling of MIME file upload headers, which left open a potential security hole. (Closes: #136063) * Fixed gcc-3.0 fix :-) * Thanks for fixing apache-common fix * This version should fix session bugs with upstream fix (closes: #133877) * With a brutal change to main/SAPI.c try to fix(?) authorize bugs -- Petr Cech <cech@debian.org> Thu, 28 Feb 2002 11:14:26 +0100 php4 (4:4.1.1-2.1) unstable; urgency=low * Non-maintainer upload. * loosen apache-common dependency to make us forwards-compatible, as recommended by the apache maintainer. * use gcc-3.0 when building on arm, because the default toolchain on that arch has Issues (closes: #135906, #135913). -- Steve Langasek <vorlon@debian.org> Tue, 26 Feb 2002 09:59:49 -0600 php4 (4:4.1.1-2) unstable; urgency=medium * Rebuild with apache 1.3.23. * This package is in maintainer change mode. Though I orphaned it I'm not going to change maintainer to QA, because we already have fresh blood. * ext/gd/gd.c: s/HAVE_GD_GIF/HAVE_GD_GIF_CREATE/ to build correctly with libgd which has GIF support (fixed included upstream) * debian/control: - Build-Depends: s/libgd1g-dev/libgd-dev/ also libc-client at least version 4:2001adebian-6 to fix some segfaults * ext/standard/head.c: make the setcookie() thingie test more simple -- Petr Cech <cech@debian.org> Mon, 11 Feb 2002 20:07:22 +0100 php4 (4:4.1.1-1) unstable; urgency=high * New upstream bugfix release. * debian/control: php4-gd - Conflicts/Replaces: php4-gd2 if I ever get to upload it * debian/rules: Correctly supply modified CFLAGS to build process -- Petr Cech <cech@debian.org> Fri, 28 Dec 2001 23:23:47 +0100 php4 (4:4.1.0-2) unstable; urgency=low * debian/php4-cgi.README.Debian: fix typo (closes: #123866) * debian/rules: remove --enable-mbstr-enc-trans as it breaks parametr parsing (closes: #121403) * debian/README.Debian: document shmmax increase (closes: #119688) -- Petr Cech <cech@debian.org> Fri, 14 Dec 2001 09:59:59 +0100 php4 (4:4.1.0-1) unstable; urgency=high * Finally final 4.1.0 * Urgency to reflect previous version * debian/control: php4-pear depends on php4-cgi -- Petr Cech <cech@debian.org> Thu, 13 Dec 2001 23:09:54 +0100 php4 (3:4.1-2) unstable; urgency=high * FIxes from CSV 4.1.0RC5. Looks like it was not the release after all. * ext/exif/exif.c: MFH * ext/ldap/ldap.c: small crash fix from HEAD * and misc tiny changes. Really :-) * ext/imap/php_imap.c: HIGH. fix from CVS (imap_rfc822_parse_adrlist) changing the argument -- Petr Cech <cech@debian.org> Sun, 9 Dec 2001 00:01:37 +0100 php4 (3:4.1-1) unstable; urgency=medium * Final 4.1.0 (not released) * NEWS: s/4.0/4.1/ * Build with GD1. It should fix some GD bugs, as gd 2.0.1 is supposed to be a beta version with known bugs. How should I know. * sablot extension removed upstream. So use XSLT (C/R in place) * Apply fix for file_exists() from tilo (closes: #114409) * "Cannot redeclare" were fixed in previous RCs (closes: #112341) * previous version is build in hppa and ia64, so I assume it (closes: #115391) * Add note to sybase_ct, that it conflicts with mod_gzip folowing a user report. * This should fix the "final HTML> stripped" bug that was introduced in 4.0.6-3. (closes: #110415). * add --enable-ucd-snmp-hack to try to fix segfaults with ucd-snmp -- Petr Cech <cech@debian.org> Mon, 26 Nov 2001 14:56:50 +0100 php4 (3:4.0.100-1) unstable; urgency=low * Really a 4.1.0RC2 * Remove hack for apache 1.3.14, as we build-depends on 1.3.22 anyway * Build-depends: libexpat1 (>= 1.95.2-2.1) for the .1 * Added Provides: zendapi-$version to php4 and php4-cgi * Made modules depend on zendapi-$version instead of php4|php4-cgi. Please use this in your php4-$module packages * Apply c-client hack only to i386 most architectures don't support linking both PIC and non-PIC code. I'm still affrai to do this on i386, as it crashes a lot more :( * Apply some CVS patches -- Petr Cech <cech@debian.org> Wed, 14 Nov 2001 20:50:19 +0100 php4 (3:4.0.99-4) unstable; urgency=medium * Recompile because of new version of caudium. (I really hope this gets into testing soon as php in testing now doesn't do apache 1.3.22) -- Petr Cech <cech@debian.org> Fri, 9 Nov 2001 11:11:46 +0100 php4 (3:4.0.99-3) unstable; urgency=medium * Recompile for new libexpat1 (closes: #116623 and others) * upstream: ext/gd/gd.c, ext/iconv/iconv.c * crypt(): defalt to using DES crypt() (closes: #117092) * debian/rules: disable libmm in -cgi build. Will lesser the impact of the infamous /tmp/session_mm.reg * apply patch to Zend, which should fix the "cannot redeclare" error. It's still a bug in your code though (use include_once). More changes to this are comming (upstream). * Add some documentation to sybase -- Petr Cech <cech@debian.org> Mon, 22 Oct 2001 11:20:46 +0200 php4 (3:4.0.99-2) unstable; urgency=low * "Some days are just no good" release. * Recompile with apache 1.3.22 from Incoming * Deal with automake going to 1:1.4 and automake1.5 -- Petr Cech <cech@debian.org> Fri, 19 Oct 2001 15:02:00 +0200 php4 (3:4.0.99-1) unstable; urgency=low * This is really 4.1.0RC1, but ... * Applied setcookie(), which is not in upstream yet -- Petr Cech <cech@debian.org> Fri, 19 Oct 2001 12:05:20 +0200 php4 (3:4.0.6.7rc3-3) unstable; urgency=medium * Fix dependency in caudium-php4. Sorry for this -- Petr Cech <cech@debian.org> Fri, 19 Oct 2001 11:28:07 +0200 php4 (3:4.0.6.7rc3-2) unstable; urgency=medium * Recompile with recent caudium/pike. Please, no new version so it can get into testing :) * debian/control: move php4-pear to suggests * Fix setcookie() again. I really hate this bug * Build-Depends: re2c - it's usually not needed, but if you make some strange changes to the parser ... * FIx automake 1.5 build problems (I hope) -- Petr Cech <cech@debian.org> Thu, 18 Oct 2001 12:03:39 +0200 php4 (3:4.0.6.7rc3-1) unstable; urgency=low * New upstream test release. -- Petr Cech <cech@debian.org> Fri, 5 Oct 2001 09:23:35 +0000 php4 (3:4.0.6.7rc2-3) unstable; urgency=low * "Let's try to fix some bugs" release. * Add some patches: ldap (does this fix things?), pgsql, domxml * Build-Conflicts: automake (>= 1.5) for now -- Petr Cech <cech@debian.org> Tue, 2 Oct 2001 10:55:23 +0200 php4 (3:4.0.6.7rc2-2) unstable; urgency=low * Enable recode extension (the library is LGPL) - shared * Enable iconv extension - in main php4. Experimental * Build-Depends: s/libgd-dev/libgd2-dev/ * Build-Depends: libxml2-dev (>= 2.4.2) (Closes: #112304) and fix autoconf macros (Closes: #113980) * Improve?? description of PEAR (Closes: #112432) -- Petr Cech <cech@debian.org> Sat, 22 Sep 2001 10:37:42 +0200 php4 (3:4.0.6.7rc2-1) unstable; urgency=medium * 2nd release candidate * ext/mbstring: fix compile (cp1252) * ext/standard/url_scanner_ex: off by one * WARNING: caudium builds with Zend Threading enabled, but other modules don't. So you cannot safely use DSO with caudium * Added some Build-Conflicts - with broken libmysqlclient - with libtool 1.4b -- Petr Cech <cech@debian.org> Mon, 10 Sep 2001 18:04:27 +0200 php4 (3:4.0.6-6) unstable; urgency=medium * The "Paul Hampson fixes release". * Closed those atexit() bugs. Now to find out, how to make libtool link with gcc instead of ld :(( * ext/standard/head.c: Fix setcookie("bla) (closes: #109524, #109697) Thanks to Paul Hampson for finding the cause, though I've used another fix - fixed changes in CVS made in -3 I think. Silly me to think, that all "small" changes are fixes. * libc-client2001 was fixed in -5, so add a (closes: #109202) here * Conflicts: only with libtool 1.4b-{1,2,3}. libtool 1.4.1 is OK -- Petr Cech <cech@debian.org> Sat, 1 Sep 2001 20:59:40 +0200 php4 (3:4.0.6-5) unstable; urgency=low * Recompile for libc-client2001 (I hope it doesn't break anything else) And many other libraries. * ATTENTION. php4 still doesn't work with autoconf 2.52 and thus libtool 1.4b!! You have to get libtool 1.4 to be able to use phpize. -- Petr Cech <cech@debian.org> Wed, 22 Aug 2001 23:26:08 +0200 php4 (3:4.0.6-4) unstable; urgency=high * Add pear/CODING_STANDARDS into php4-pear (fixes 105574. closed too early. sorry) * Fix the nasty segfaults with mail(). That'll teach me taking upstream changes without looking. Thanks Cvetan Ivanov for the correct fix (also upstream now) (closes: #105686, #105878). -- Petr Cech <cech@debian.org> Fri, 20 Jul 2001 23:07:30 +0200 php4 (3:4.0.6-3) unstable; urgency=high * ext/standard/mail.c: security fix * debian/control: Build-Depends: libtool (>= 1.4) * ext/curl/curl.c: fix typo * ext/gd/config.m4: fix typo * ext/mcrypt/mcrypt.c: upstream buffer overflow fix * ext/mhash/mhash.c: upstream buffer overflow fix * ext/pgsql/pgsql.c: fix * ext/posix/config.m4: check for getpgid * ext/sablot/sablot.c: fix leaks * ext/standard/url* : fixes * ext/sysvshm/sysvshm.c: fixes * Zend/*: small fixes -- Petr Cech <cech@debian.org> Fri, 13 Jul 2001 16:21:04 +0200 php4 (3:4.0.6-2) unstable; urgency=low * pear/Makefile.in: add IT_Error.php to installed files (closes: #103087) * debian/control: - allow also libcurl-ssl-dev as Build-Depends (closes: #103618) - libfreetype6-dev to Build-Depends - add auto* suite to php4-dev depends (closes: #104199) * debian/rules: - build gd module with freetype2 support - move common ./configure flags to COMMON_CONFIG - build with mbstring support -- Petr Cech <cech@debian.org> Fri, 13 Jul 2001 08:22:02 +0200 php4 (3:4.0.6-1) unstable; urgency=medium * New upstream release. * NOTE: new extension will probably be in another upload, to get this into testing ... -- Petr Cech <cech@debian.org> Mon, 25 Jun 2001 20:43:24 +0200 php4 (3:4.0.5.6rc3-3) unstable; urgency=low * The "I hate sablot release". Recompile with 0.60 * debian/php4-domxml.postrm: also fix the :: (closes: #101306) * debian/rules: --enable-ctype - still EXPERIMENTAL!!! Bug upstream -- Petr Cech <cech@debian.org> Mon, 18 Jun 2001 09:46:17 +0200 php4 (3:4.0.5.6rc3-2) unstable; urgency=low * ext/sablot/config.m4: link sablot.so with -lsablot, not main php4 * build/ ... : upstream fix for building with automake 1.4-pX * don't fail, when libssl-dev is not installed. sigh -- Petr Cech <cech@debian.org> Thu, 14 Jun 2001 23:36:34 +0200 php4 (3:4.0.5.6rc3-1) unstable; urgency=low * New upstream test release. * Recompile with apache 1.3.20 * debian/control: - php4-dev: Depends: bison, flex (closes: #100634) - Build-Depends: libcurl-dev (>=7.8) * debian/rules: - add --enable-bcmath to all rules (closes: #100491) * Zend/zend.c: apply upstream fix to allow building of caudium -- Petr Cech <cech@debian.org> Tue, 12 Jun 2001 22:27:26 +0200 php4 (3:4.0.5.6rc2-1) unstable; urgency=low * New upstream test release. * FIx regex/regex.h (int regoff_t) * fix php4-cgi build with pcre - don't use supplied pcre * Fix wddx support (closes: #99468) * Add missing $(INSTALL_ROOT) to sapi/caudium/config.m4 -- Petr Cech <cech@debian.org> Fri, 8 Jun 2001 11:37:07 +0200 php4 (3:4.0.5.6rc1-1) unstable; urgency=low * New upstream test release with new bugs :)) * moved pear from /usr/lib/php4 to /usr/share/php4 * Whups. Sorry about the epoch 3: . It somehow slipped in, so I'll have to live with it -- Petr Cech <cech@debian.org> Wed, 16 May 2001 14:14:04 +0200 php4 (3:4.0.5-2) unstable; urgency=low * Build-Depend on newer libmhash-dev, as it supposedly doesn't compile on current woody (closes: #96555) * Build-Depends: s/freetype2/libttf-dev/ * Stop building php4-pgsql - move to non-US * Build-Deps on new libsablot0 -- Petr Cech <cech@debian.org> Thu, 10 May 2001 10:43:02 +0200 php4 (3:4.0.5-1) unstable; urgency=medium * New upstream release. * recompile with new sablot - how I hate this (closes: #95401) * Merge XML into main php4 * Reword README.Debian (closes: #89667) * Enable wddx * debian/*.postinst: * only ask upon first install, not upgrade (closes: #93452) * fix typos (closes: #94118) * Added support for Sybase/MS SQL Server (using FreeTDS) using patch from: http://rpms.arvin.dk/php/source/patches/php-sybase_ct.patch thanks to Bradley Bell <btb@debian.org> for the patch * ext/pcre : two upstream fixes * ext/sablot/sablot.c: small upstream fix * build/buildcheck.sh : fixes to allow compile with libtool 1.4 * ext/standard/exec.c: upstream fixes * sapi/apache/mod_php4.c: off by one fix * sapi/cgi/cgi_main.c: fix POST bug * main/snprintf.c: upstream fix -- Petr Cech <cech@debian.org> Wed, 3 May 2001 22:17:10 +0200 php4 (4.0.4.5rc6-2) unstable; urgency=low * Build-depends: libcurl-dev will pull libcurl2 (closes: #92994) * TSRM/TSRM.c: upstream fix * ext/pgsql: upstream fix -- Petr Cech <cech@debian.org> Thu, 5 Apr 2001 17:51:09 +0200 php4 (4.0.4.5rc6-1) unstable; urgency=low * New upstream test release. * Don't mention CGI support, as it's not so for a long time. -- Petr Cech <cech@debian.org> Wed, 4 Apr 2001 13:47:45 +0200 php4 (4.0.4.5rc5-1) unstable; urgency=low * New upstream test release. * ask about /etc/php4/cgi/php.ini also * It's really recompiled for 1.3.19 (closes: #91901, #91822) * problems with modules documented (closes: #81141, #82611) -- Petr Cech <cech@debian.org> Mon, 2 Apr 2001 09:38:16 +0200 php4 (4.0.4.5rc3-1) unstable; urgency=low * New upstream RC release * debian/rules: s/with-yp/enable-yp/ to really enable YP support. Discovered on broken potato upload. -0potato2 is fixed * Looks like there was a bug in latest build, this should fix it (closes: #92018) * remove libmcal0 workaround -- Petr Cech <cech@debian.org> Wed, 28 Mar 2001 21:15:36 +0200 php4 (4.0.4.5rc2-1) unstable; urgency=low * New upstream release test release 4.0.5RC2. * debian/rules: Add lintian overrides * debian/control: * add libexpat1-dev to Build-Depends * add libmcal0 to Build-Depends since libmcal0-dev is missing this dependancy :(( Bug filled * ext/socket/socket.c: minor upstream patch -- Petr Cech <cech@debian.org> Mon, 26 Mar 2001 20:43:49 +0200 php4 (4.0.4pl1-6) unstable; urgency=low * NEVER RELEASED * Build-depends on libcurl1-dev (>= 7.6.1-5), which fixes the libcurl1 or libcurl1-ssl problem. * remove dh_testversion and use versioned Build-depends instead -- Petr Cech <cech@debian.org> Tue, 13 Mar 2001 23:20:58 +0100 php4 (4.0.4pl1-5) unstable; urgency=low * Add lintian overrides * Rebuild with correct libgd-dev installed. Sorry (closes: #88490, #88255, #88371, #88619, #88635) * Closed by fixed libjpeg (closes: #85865, #88141) -- Petr Cech <cech@debian.org> Tue, 6 Mar 2001 17:26:41 +0100 php4 (4.0.4pl1-4) unstable; urgency=low * The "Enable what you can" release. * Enable sablot extension (many files) (closes: #84073) * Enable mcal extension (finaly closes: #65688, #85925) * Build-Conflicts: bind-dev - this supposedly causes unresolved symbols. Why? * ext/pgsql/pgsql.c: apply tiny patch, which should fix postgres problems. There is a better patch in CVS, but it needs changes to Zend * pear/pear.in: binary is php4 no php (closes: #87848) * ext/domxml/config.m4: link with -lxml2 (closes: #87457) * debian/README.Debian: add notes about ldap, imap and mhash extensions * debian/{control,rules}: activate bz2 extension * php4.ini-dist: comment out include_path so php will use compiled in path (closes 2nd part of 87848) -- Petr Cech <cech@debian.org> Wed, 28 Feb 2001 10:18:11 +0100 php4 (4.0.4pl1-3) unstable; urgency=medium * Fixed postrm issues. Sorry -- Petr Cech <cech@debian.org> Sun, 4 Feb 2001 06:13:00 +0100 php4 (4.0.4pl1-2) unstable; urgency=medium * debian/control: Build-depends: xlibs-dev (seems it's missing and causes failed builds for arm, m68k and powerpc) s/libsnmp4.1/libsnmp4.2/ (closes: #84139) * debian/php4.*: make LoadModule matching case insensitive (fixes 83641 for unstable) -- Petr Cech <cech@debian.org> Wed, 31 Jan 2001 10:14:29 +0100 php4 (4.0.4pl1-1) unstable; urgency=high * New upstream version. * This release fixes some security problems. * Some patches from previous versions are not here. * debian/control: Build-depends on newer libcurl1-dev, remove librecode-dev * debian/control: add libjpeg62-dev to build-depends from powerpc buildlog (hmm. Where ir Roman?) * debian/php4{,-cgi}.postinst: don't mark php.ini as conffile and install it when it doesn't already exist. I should find a way to check, that the default php.ini changed and user should update it. * debian/php4{,-cgi}.postrm: cleanup the /etc/php4 dir after purge * fix xml.so not working with php4-cgi -- Petr Cech <cech@debian.org> Thu, 23 Jan 2001 11:12:59 +0100 php4 (4.0.4final-6) unstable; urgency=medium * OK. Now also fix the prerm issues (closes: #81418) and to ease that thanks for submiting bugs (closes: #81818, #81819) * some upstream updates: browsercap, php-config -- Petr Cech <cech@debian.org> Wed, 10 Jan 2001 14:04:19 +0100 php4 (4.0.4final-5) unstable; urgency=medium * OK. Take a deep breath and fix those bloody postinst bugs - fix it and rewrite from ed -> sed, because ed is not essential :( closes: #80801. * apply some upstream fixes. * disable ctype extension - not yet ready -- Petr Cech <cech@debian.org> Tue, 2 Jan 2001 13:40:35 +0100 php4 (4.0.4final-4) unstable; urgency=low * debian/libc-client.la: add -lpam -ldl -lcrypt * fix php4-cgi.postinst bugs (closes: #80817, #80805, #80801) -- Petr Cech <cech@debian.org> Fri, 29 Dec 2000 11:40:43 +0100 php4 (4.0.4final-3) unstable; urgency=low * Brown Xmas Sock Release * Grr. correctly fix the php4 postinst error (closes: #80303, #80324, #80326, #80359) NMU by Wichert Akkerman (closes: #80381) * also fix php4-cgi. NMU by Marcelo E. Magallon (closes: #80406). * fix fix for php4-cgi postinst s/apache/cgi/ * apply some upstream fixes to ext/session/ * domxml/config.m4: fix my -Lshared,/usr/lib error * debian/rules: * add --enable-ctype to both targets * --diable-pear to CGI target * generate Depends: php4 (=ver) | php4-cgi (=ver) -- Petr Cech <cech@debian.org> Wed, 27 Dec 2000 15:29:56 +0100 php4 (4.0.4final-2) unstable; urgency=low * Run apacheconfig with --force-modules. * Fix stupid bug in php4 and php4-cgi postinst. * ext/sysvshm/sysvshm.c : upstream fix -- Petr Cech <cech@debian.org> Thu, 21 Dec 2000 22:58:27 +0100 php4 (4.0.4final-1) unstable; urgency=low * New upstream version. * Sorry for the version, but da-katie doesn't allow overwriting of files, notably .orig.tar.gz. It's my fault I know, but it worked till now. -- Petr Cech <cech@debian.org> Wed, 20 Dec 2000 01:32:34 +0100 php4 (4.0.4-0RC6.1) unstable; urgency=low * OK. Final final RC for 4.0.4. * Build-depends on libxml2-dev (>= 2.2.7) because php needs this. * Activate ndbm dba driver. -- Petr Cech <cech@debian.org> Sun, 17 Dec 2000 19:43:51 +0100 php4 (4.0.4-0RC5.1) unstable; urgency=low * UNRELEASED. * Final RC for 4.0.4. * Some mods to README.Debian and TODO -- Petr Cech <cech@debian.org> Wed, 13 Dec 2000 00:01:08 +0100 php4 (4.0.4-0RC4.1) unstable; urgency=low * New upstream beta release. Let's stabilize things now and add new modules after final release of 4.0.4. -- Petr Cech <cech@debian.org> Thu, 7 Dec 2000 10:12:11 +0100 php4 (4.0.4-0RC3.2) unstable; urgency=low * recompile with new libc-client200-dev. * fix source recompile * depend on fixed apache 1.3.14-2 -- Petr Cech <cech@debian.org> Thu, 7 Dec 2000 00:49:14 +0100 php4 (4.0.4-0RC3.1) unstable; urgency=low * New upstream beta release. * Add libxml2-dev to build-depends (closes: #78479). * implement DEB_BUILD_OPTIONS * fix apache build wrt. apxs * fix typo in description of curl modules (closes: #78828) -- Petr Cech <cech@debian.org> Tue, 5 Dec 2000 14:22:30 +0100 php4 (4.0.3pl1-7) unstable; urgency=low * Rebuild with apache 1.3.14-1 -- Petr Cech <cech@debian.org> Fri, 1 Dec 2000 01:41:41 +0100 php4 (4.0.3pl1-6) unstable; urgency=low * add --enable-memory-limit * add --enable-exif per request from William Ono. * Add Suggests: phpdoc (yes. it's here). * ext/standard/crypt.c - fix from CVS. * ext/ftp/ftp.{c,h} - fix mkdir() and RETR, STOR * ext/gd/gd.c - add format string - add XBM to phpinfo() * ext/imap/php_imap.{c,h} - CVS fixes * main/main.c - fix CGI crash - add HTTP_SERVER_VARS in CGI mode * and many more. Taken from php4.srpm (thanks :)) * recompile with apache 1.3.12-2.2 * and hack large files support into DSO module. php4 doesn't use it now :(( -- Petr Cech <cech@debian.org> Thu, 30 Nov 2000 00:01:39 +0100 php4 (4.0.3pl1-5) unstable; urgency=low * Back out changes about --enable-versioning * ext/domxml/php_domxml.c : fix compilation with recent libxml2 (>=2.2.7) -- Petr Cech <cech@debian.org> Tue, 21 Nov 2000 18:03:56 +0100 php4 (4.0.3pl1-4) unstable; urgency=low * Clarify README.Debian about the DB change a bit (dbm_ -> dba_*) * Remove aliasing hack - deprecated upstream. (closes: #76558) * Compile with libgd-dev again (Write 100x always reinstall libgd-dev). * --enable-versioning and tweak debian/control a bit, let's see, what breaks -- Petr Cech <cech@debian.org> Tue, 14 Nov 2000 10:00:54 +0100 php4 (4.0.3pl1-3) unstable; urgency=low * Activate curl module. * Really enable shmop module. * Fix include paths in phpize. Now everyone should be able to easilly build php4 extension modules (php4-dbase anyone?). -- Petr Cech <cech@debian.org> Mon, 6 Nov 2000 23:17:41 +0100 php4 (4.0.3pl1-2) unstable; urgency=low * Build with libgd-dev installed (NOT libgd-gif). -- Petr Cech <cech@debian.org> Tue, 17 Oct 2000 02:08:36 +0200 php4 (4.0.3pl1-1) unstable; urgency=medium * New upstream bugfix release. * Depend on libopenldap1 as with the newer ldap module crashes php&apache. -- Petr Cech <cech@debian.org> Mon, 16 Oct 2000 15:30:55 +0200 php4 (4.0.3-2) unstable; urgency=high * Urgency=high because last upload didn't have it ad it fixes some security holes. * ext/domxml/config.m4: don't try to build then --without-domxml -- Petr Cech <cech@debian.org> Thu, 12 Oct 2000 12:50:17 +0200 php4 (4.0.3-1) unstable; urgency=low * New upstream release. - fixes also some string format bugs * Build with fixed libmysqlclient10-dev. -- Petr Cech <cech@debian.org> Thu, 12 Oct 2000 00:00:07 +0200 php4 (4.0.2-7) unstable; urgency=low * Really, really install libldap2-dev. * Workaround broken libmysqlclient9-dev. It has broken (again) .so symlink. -- Petr Cech <cech@debian.org> Tue, 10 Oct 2000 22:28:48 +0200 php4 (4.0.2-6) unstable; urgency=low * Again fix description a little bit. * Correct build-depends. * Sic. Recompile, because I've busted (libopenldap-dev instead of libldap2-dev was installed). * While at it install also new apache glibc NMU and recompile with it. * Move PEAR from php4-dev to php4 and install ALL of PEAR. * add --prefix=/usr * debhelper v2 * prepare for CURL module * Updated README.Debian * updated XML module from php4 CVS to close: #72360 -- Petr Cech <cech@debian.org> Mon, 2 Oct 2000 14:36:35 +0200 php4 (4.0.2-5) unstable; urgency=low * Correct build-depends (libgd1-dev -> libgd-dev). Where is Roman? :) * Add libdb2-dev (>= 2:2.7.7-2.1) to build-depends for glibc 2.1.94. * and recompile with glibc 2.1.94 to fix it. -- Petr Cech <cech@debian.org> Wed, 27 Sep 2000 09:00:27 +0200 php4 (4.0.2-4) unstable; urgency=low * Tweak description a little bit more. -- Petr Cech <cech@debian.org> Sun, 24 Sep 2000 23:58:15 +0200 php4 (4.0.2-3) unstable; urgency=low * Add info about what modules and why are enabled/disabled into README.Debian. * Install not so many docs (only in -dev now). * Enable calendar and sockets modules. * Rearange package descriptions so module-specific comments go first. * Create domxml module aka xmlv2. * Fix spelling wan't -> want (closes: #70544). * Add libraries for gd module only when linking this one and not globaly (closes: #71623). * Say that we wait for ENTER (closes: #71769). * Fix logic in prerm script (closes: #71770). -- Petr Cech <cech@debian.org> Sun, 24 Sep 2000 17:54:52 +0000 php4 (4.0.2-2) unstable; urgency=low * Add info about what modules and why are enabled/disabled into README.Debian. * Install not so many docs (only in -dev now). * Enable calendar and sockets modules. * Rearange package descriptions so module-specific comments go first. * Create domxml module aka xmlv2. * Fix building (small typo). * Compile with libmysqlclient9-dev installed. -- Petr Cech <cech@debian.org> Mon, 18 Sep 2000 23:46:40 +0200 php4 (4.0.2-1) unstable; urgency=low * The "Back from vacation" release. * New upstream fixed (and bugs). * Correct postm script (only cosmetic) closes: #67350, #68541 * build with libpcre3, libldap2 * Use modified patch from -3 (remove #define XML_... php_XML_...) -- Petr Cech <cech@debian.org> Thu, 7 Sep 2000 23:17:59 +0200 php4 (4.0.1pl2-3) unstable; urgency=low * UNRELEASED * Fixed the XML packages. -- Norman Jordan <njordan@home.com> Thu, 10 Aug 2000 21:45:15 +0000 php4 (4.0.1pl2-2) unstable; urgency=low * Fix source archive. -- Petr Cech <cech@debian.org> Tue, 11 Jul 2000 11:04:48 +0000 php4 (4.0.1pl2-1) unstable; urgency=low * New upstream bug fix release (variation of the patches in -2) * Build with new libgd1 library (maybe still in Incoming) * Move PEAR stuff to php4 package (closes: #66897). -- Petr Cech <cech@debian.org> Sun, 9 Jul 2000 09:01:06 +0000 php4 (4.0.1-2) unstable; urgency=low * Apply some CVS diffs in an attempt to fix opendir() problems. -- Petr Cech <cech@debian.org> Fri, 30 Jun 2000 09:04:24 +0000 php4 (4.0.1-1) unstable; urgency=low * New upstream release (taken from CVS tag php_4_0_1). * --with-regex=system else it plays havoc. Dunno why ... * remove autoconf,automake,aclocal from configure rules. * Fix description of XML --help message (no, it's not MySQL). -- Petr Cech <cech@debian.org> Wed, 28 Jun 2000 22:55:16 +0200 php4 (4.0.0-4) unstable; urgency=low * Add -dev package (closes: #65907). * Add -cgi and -cgi-* packages (closes: #51097, #52855). * --enable-filepro * Tweak copyright file a bit. * Generate mhash module (closes part of 63186). * Ask to remove libphp4 from httpd.conf upon remove/purge. * Fixed build-depends, thanks to Roman Hodek (closes: #65938). (I told you the first time it won't work :)) * Mark /etc/php4/cgi/php.ini as conffile. * Every module now ask if it should be enabled on install (if it's not already) and disabled on remove/purge. -- Petr Cech <cech@debian.org> Tue, 20 Jun 2000 14:29:01 +0200 php4 (4.0.0-3) unstable; urgency=low * Ship correct php.ini (extension_dir=/usr/lib/php4/apache). * Don't use included libmysqlclient and use system one (fixes wrong location of mysqld.sock) * link XML module dynamicly with system xmlparse and xmltok. -- Petr Cech <cech@debian.org> Wed, 14 Jun 2000 22:30:07 +0000 php4 (4.0.0-2) unstable; urgency=low * fix the IS_SLASH bug (closes: #65625 and probably others as well). * Really change the maintainer field. -- Petr Cech <cech@debian.org> Wed, 14 Jun 2000 07:44:05 +0000 php4 (4.0.0-1) unstable; urgency=low * New maintainer. * New upstream release. * Fix dynamic module loading. * Added Build-Depends (I wonder, if I got them right) * Standards-Version: 3.1.1 -- Petr Cech <cech@debian.org> Tue, 13 Jun 2000 13:40:56 +0000 php4 (4.0rc1-2) unstable; urgency=low * Compile with latest apache and libraries from woody (Closes: #62631, #62640) -- Gergely Madarasz <gorgo@sztaki.hu> Wed, 19 Apr 2000 14:39:25 +0200 php4 (4.0rc1-1) unstable; urgency=low * New upstream version * Fix db2 support (Closes: #61709) * Fix gd support (Closes: #61708) * Remove ucd-snmp-hack from config options -- Gergely Madarasz <gorgo@sztaki.hu> Sun, 16 Apr 2000 17:04:05 +0200 php4 (4.0b4pl1-2) unstable; urgency=low * Build with --disable-debug so it should work with the zend optimizer (Closes: #60265) * Build with --enable-trans-sid (Closes: #60430) * Write some more about php4/php3 differences in the description (Closes: #60155) -- Gergely Madarasz <gorgo@sztaki.hu> Fri, 17 Mar 2000 17:35:29 +0100 php4 (4.0b4pl1-1) unstable; urgency=low * New upstream version * Upstream reorganized the build system quite a bit, lots of patches removed -- Gergely Madarasz <gorgo@sztaki.hu> Wed, 23 Feb 2000 17:16:00 +0100 php4 (4.0b3-4) unstable; urgency=low * Add /etc/php4/apache/php.ini to conffiles (Closes: #54194) * Add info file for apacheconfig * Offer to run apacheconfig and/or apache-sslconfig in postinst * Comment out sendmail_path from php.ini so the default sendmail path should work (Closes: #51355) -- Gergely Madarasz <gorgo@sztaki.hu> Thu, 6 Jan 2000 14:38:20 +0100 php4 (4.0b3-3) unstable; urgency=low * Compile with libgd instead of libgd-gif -- Gergely Madarasz <gorgo@sztaki.hu> Tue, 4 Jan 2000 18:07:56 +0100 php4 (4.0b3-2) unstable; urgency=low * Build imap and ldap modules * Fix rm -f in rules file (Closes: #51623) -- Gergely Madarasz <gorgo@sztaki.hu> Mon, 3 Jan 2000 16:54:19 +0100 php4 (4.0b3-1) unstable; urgency=low * Initial Release. -- Gergely Madarasz <gorgo@sztaki.hu> Tue, 16 Nov 1999 19:33:42 +0100 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/php5-cgi.apache2�����������������������������������������������������������������������������0000664�0000000�0000000�00000000032�12300436054�012021� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������conf debian/php5-cgi.conf ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/php5.conf������������������������������������������������������������������������������������0000664�0000000�0000000�00000001601�12300436324�010706� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch ".+\.phps$"> SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Order Deny,Allow Deny from all </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(p[345]?|t|tml|ps)$"> Order Deny,Allow Deny from all </FilesMatch> # Running PHP scripts in user directories is disabled by default # # To re-enable PHP in user directories comment the following lines # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it # prevents .htaccess files from disabling it. <IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_flag engine Off </Directory> </IfModule> �������������������������������������������������������������������������������������������������������������������������������debian/php5-module.preinst��������������������������������������������������������������������������0000664�0000000�0000000�00000000353�12300436054�012733� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e #EXTRA# for dsoname in @modules@; do inifile=${dsoname}.ini dpkg-maintscript-helper mv_conffile /etc/php5/conf.d/${inifile} /etc/php5/mods-available/${inifile} 5.4.0~rc6-1 -- "$@"; done #DEBHELPER# exit 0 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/setup-mysql.sh�������������������������������������������������������������������������������0000664�0000000�0000000�00000002735�12300436054�012033� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -eu [ $# -ge 2 ] || { echo "Usage: debian/setup-mysql.sh port data-dir" >&2 exit 1 } # CLI arguments # port=$1 datadir=$2 action=${3:-start} if [ "$(id -u)" -eq 0 ]; then user="mysql" else user="$(whoami)" fi # Some vars # socket=$datadir/mysql.sock # Commands: mysqladmin="mysqladmin --no-defaults --user root --port $port --host 127.0.0.1 --socket=$socket --no-beep" mysqld="/usr/sbin/mysqld --no-defaults --user=$user --bind-address=127.0.0.1 --port=$port --socket=$socket --datadir=$datadir" # Main code # if [ "$action" = "stop" ]; then $mysqladmin shutdown exit fi rm -rf $datadir mkdir -p $datadir chmod go-rx $datadir chown $user: $datadir mysql_install_db --no-defaults --user=$user --datadir=$datadir --rpm --force tmpf=$(mktemp) cat > "$tmpf" <<EOF USE mysql; UPDATE user SET password=PASSWORD('') WHERE user='root'; FLUSH PRIVILEGES; EOF $mysqld --bootstrap --skip-grant-tables < "$tmpf" unlink "$tmpf" # Start the daemon $mysqld & pid=$! # Wait for the server to be actually available c=0; while ! nc -z 127.0.0.1 $port; do c=$(($c+1)); sleep 3; if [ $c -gt 20 ]; then echo "Timed out waiting for mysql server to be available" >&2 if [ "$pid" ]; then kill $pid || : sleep 2 kill -s KILL $pid || : fi exit 1 fi done # Check if the server is running $mysqladmin status # Drop the database if it exists $mysqladmin --force --silent drop test || true # Create new empty database $mysqladmin create test �����������������������������������debian/php5-sybase.preinst.extra��������������������������������������������������������������������0000664�0000000�0000000�00000000117�12300436054�014054� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dpkg-maintscript-helper rm_conffile /etc/php5/conf.d/mssql.ini 5.2.3-1 -- "$@" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/php5-sapi.lintian-overrides������������������������������������������������������������������0000664�0000000�0000000�00000002371�12300436054�014356� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# The extensions directory must exist, even if empty @sapi@: package-contains-empty-directory @extdir@/ # Not a spelling mistake, just a compilation curiosity @sapi@: spelling-error-in-binary * ment meant # Not a spelling mistake, tz code for Tahiti @sapi@: spelling-error-in-binary * taht that libapache2-mod-php5: embedded-library usr/lib/apache2/modules/libphp5.so: file libapache2-mod-php5filter: embedded-library usr/lib/apache2/modules/libphp5filter.so: file php5-cgi: embedded-library usr/bin/php5-cgi: file php5-cgi: embedded-library usr/lib/cgi-bin/php5: file php5-cli: embedded-library usr/bin/php5: file php5-fpm: embedded-library usr/sbin/php5-fpm: file libphp5-embed: embedded-library usr/lib/libphp5.so: file libphp5-embed: embedded-library usr/lib/php5/libphp5-*.so: file libphp5-embed: missing-dependency-on-phpapi libapache2-mod-php5: embedded-library ./usr/lib/apache2/modules/libphp5.so: file libapache2-mod-php5filter: embedded-library ./usr/lib/apache2/modules/libphp5filter.so: file php5-cgi: embedded-library ./usr/bin/php5-cgi: file php5-cgi: embedded-library ./usr/lib/cgi-bin/php5: file php5-cli: embedded-library ./usr/bin/php5: file php5-fpm: embedded-library ./usr/sbin/php5-fpm: file libphp5-embed: embedded-library ./usr/lib/libphp5.so: file �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/php5-cgi.postinst.extra����������������������������������������������������������������������0000664�0000000�0000000�00000001411�12300436054�013525� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dpkg-maintscript-helper mv_conffile /etc/apache2/mods-available/php5_cgi.conf \ /etc/apache2/conf-available/php5-cgi.conf 5.5.0~beta4-1 -- "$@" dpkg-maintscript-helper rm_conffile /etc/apache2/mods-available/php5_cgi.load 5.5.0~beta4-1 -- "$@" VERSION=$2 php5_enable() { # Enable php5-cgi only if upgrading from older versions of php5-cgi if [ -n "$VERSION" ] && dpkg --compare-versions "$VERSION" lt 5.4.4-5; then return 0 else return 1 fi } if [ "$1" = "configure" ]; then update-alternatives \ --install /usr/bin/php-cgi php-cgi /usr/bin/php5-cgi 50 \ --slave /usr/share/man/man1/php-cgi.1.gz php-cgi.1.gz \ /usr/share/man/man1/php5-cgi.1.gz update-alternatives \ --install /usr/lib/cgi-bin/php php-cgi-bin /usr/lib/cgi-bin/php5 50 fi �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/php5.lintian-overrides�����������������������������������������������������������������������0000664�0000000�0000000�00000000254�12300436054�013422� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������php5-common: non-standard-dir-perm var/lib/php5/ 1733 != 0755 php5-common: package-contains-empty-directory usr/lib/php5/libexec/ php5-common: missing-dependency-on-phpapi ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ext/exif/tests/bug77540.jpg�������������������������������������������������������������������������0000664�0000000�0000000�00000000133�13444736033�012535� 0����������������������������������������������������������������������������������������������������ustar ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������UExif��MM�*��� ���������������������=���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ext/exif/tests/bug77563.jpg�������������������������������������������������������������������������0000664�0000000�0000000�00000000077�13456124651�012551� 0����������������������������������������������������������������������������������������������������ustar ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<Exif��MM�*��� ������������&|���� ���+NIKONNikon����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������