From: Christoph M. Becker Date: Tue, 13 Oct 2020 14:20:55 +0000 (+0200) Subject: Fix #64076: imap_sort() does not return FALSE on failure X-Git-Tag: php-7.3.25RC1~24 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=db8bf0a9e07f906ad5d771142e5873688aff8033;p=php Fix #64076: imap_sort() does not return FALSE on failure If unsupported `$search_criteria` are passed to `imap_sort()`, the function returns an empty array, but there is also an error on the libc-client error stack ("Unknown search criterion: UNSUPPORTED (errflg=2)"). If, on the other hand, unsupported `$criteria` or unsupported `$flags` are passed, the function returns `false`. We solve this inconsistency by returning `false` for unsupported `$search_criteria` as well. Closes GH-6332. --- diff --git a/NEWS b/NEWS index 7e05589368..fb966d9b72 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 7.3.25 +- IMAP: + . Fixed bug #64076 (imap_sort() does not return FALSE on failure). (cmb) 29 Oct 2020, PHP 7.3.24 diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index a88c329b01..db144b0d49 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -3181,6 +3181,9 @@ PHP_FUNCTION(imap_sort) } else { spg = mail_newsearchpgm(); } + if (spg == NIL) { + RETURN_FALSE; + } mypgm = mail_newsortpgm(); mypgm->reverse = rev; diff --git a/ext/imap/tests/bug64076.phpt b/ext/imap/tests/bug64076.phpt new file mode 100644 index 0000000000..ccafcfe251 --- /dev/null +++ b/ext/imap/tests/bug64076.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #64076 (imap_sort() does not return FALSE on failure) +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECT-- +Create a temporary mailbox and add 2 msgs +.. mailbox '{127.0.0.1:143/norsh}INBOX.phpttest' created +bool(false) +bool(true)