]> granicus.if.org Git - php/commitdiff
Fix #79470: PHP incompatible with 3rd party file system on demand
authorChristoph M. Becker <cmbecker69@gmx.de>
Fri, 24 Apr 2020 15:24:25 +0000 (17:24 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Mon, 27 Apr 2020 07:30:57 +0000 (09:30 +0200)
We add support for Activision HSM (`IO_REPARSE_TAG_ACTIVISION_HSM`) and
VFS for Git (`IO_REPARSE_TAG_PROJFS`).  The latter fixes bug #78784.

NEWS
Zend/zend_virtual_cwd.c

diff --git a/NEWS b/NEWS
index 1831014f2417e1370a17a2881b67c0b61140d316..c96ee110d04b5d80c61bbaa2194de0366d8ae6eb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,10 @@ PHP                                                                        NEWS
   . Fixed bug #79434 (PHP 7.3 and PHP-7.4 crash with NULL-pointer dereference
     on !CS constant). (Nikita)
   . Fixed bug #79477 (casting object into array creates references). (Nikita)
+  . Fixed bug #79470 (PHP incompatible with 3rd party file system on demand).
+    (cmb)
+  . Fixed bug #78784 (Unable to interact with files inside a VFS for Git
+    repository). (cmb)
 
 - DOM:
   . Fixed bug #78221 (DOMNode::normalize() doesn't remove empty text nodes).
index c523f40dc952df2065bdab11e65c63151aae0a68..253ed8c42026274ec74bdcf23e8a2a2e50d8d6c0 100644 (file)
 #define IO_REPARSE_TAG_ONEDRIVE   (0x80000021L)
 #endif
 
+# ifndef IO_REPARSE_TAG_ACTIVISION_HSM
+#  define IO_REPARSE_TAG_ACTIVISION_HSM (0x00000047L)
+# endif
+
+# ifndef IO_REPARSE_TAG_PROJFS
+#  define IO_REPARSE_TAG_PROJFS (0x9000001CL)
+# endif
+
 # ifndef VOLUME_NAME_NT
 #  define VOLUME_NAME_NT 0x2
 # endif
@@ -1002,7 +1010,9 @@ retry:
                        else if (pbuffer->ReparseTag == IO_REPARSE_TAG_DEDUP ||
                                        /* Starting with 1709. */
                                        (pbuffer->ReparseTag & ~IO_REPARSE_TAG_CLOUD_MASK) == IO_REPARSE_TAG_CLOUD ||
-                                       IO_REPARSE_TAG_ONEDRIVE == pbuffer->ReparseTag) {
+                                       IO_REPARSE_TAG_ONEDRIVE == pbuffer->ReparseTag ||
+                                       IO_REPARSE_TAG_ACTIVISION_HSM == pbuffer->ReparseTag ||
+                                       IO_REPARSE_TAG_PROJFS == pbuffer->ReparseTag) {
                                isabsolute = 1;
                                substitutename = malloc((len + 1) * sizeof(char));
                                if (!substitutename) {