From: Ilia Alshanetsky Date: Wed, 26 Mar 2008 23:06:47 +0000 (+0000) Subject: Fixed bug #44501 (LOCK_EX mode in file_put_contents() is impropertly X-Git-Tag: BEFORE_NEW_PARAMETER_PARSE~461 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=17d22a50d9f318927bac81c1a33a9700a3ed0fd4;p=php Fixed bug #44501 (LOCK_EX mode in file_put_contents() is impropertly handled in combination with url wrappers) --- diff --git a/ext/standard/file.c b/ext/standard/file.c index 0fce31af2f..db783325ee 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -596,6 +596,13 @@ PHP_FUNCTION(file_put_contents) if (flags & PHP_FILE_APPEND) { mode[0] = 'a'; } else if (flags & LOCK_EX) { + /* check to make sure we are dealing with a regular file */ + if (php_memnstr(filename, "://", sizeof("://") - 1, filename + filename_len)) { + if (strncasecmp(filename, "file://", sizeof("file://") - 1)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Exclusive locks may only be set for regular files"); + RETURN_FALSE; + } + } mode[0] = 'c'; } mode[2] = '\0';