summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/imap/php_imap.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index fd89734e45..fecaf42dfb 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -1498,6 +1498,13 @@ PHP_FUNCTION(imap_close)
if (argc == 2) {
flags = options;
+
+ /* Check that flags is exactly equal to PHP_EXPUNGE or zero */
+ if (flags && ((flags & ~PHP_EXPUNGE) != 0)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the flags parameter");
+ RETURN_FALSE;
+ }
+
/* Do the translation from PHP's internal PHP_EXPUNGE define to c-client's CL_EXPUNGE */
if (flags & PHP_EXPUNGE) {
flags ^= PHP_EXPUNGE;