]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.2'
authorAnatol Belski <ab@php.net>
Wed, 8 Nov 2017 11:01:39 +0000 (12:01 +0100)
committerAnatol Belski <ab@php.net>
Wed, 8 Nov 2017 11:01:39 +0000 (12:01 +0100)
* PHP-7.2:
  Fixed #75384 PHP seems incompatible with OneDrive files on demand
  bump versions
  Fixed ext/date tests due to changes in Olson database

1  2 
Zend/zend_virtual_cwd.c

index 475613daa900f4eba7e1aab27dfd9d2ae94e5ea5,ee49c7d16173fa88b6d0f4ea3fe8592fed72ad6e..5f578fb4a2baa4f2642831afa8c9f09409293204
@@@ -868,10 -877,10 +881,10 @@@ static size_t tsrm_realpath_r(char *pat
                        if(++(*ll) > LINK_MAX) {
                                free_alloca(tmp, use_heap);
                                FREE_PATHW()
 -                              return -1;
 +                              return (size_t)-1;
                        }
  
-                       hLink = CreateFileW(pathw, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, NULL);
+                       hLink = CreateFileW(pathw, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, NULL);
                        if(hLink == INVALID_HANDLE_VALUE) {
                                free_alloca(tmp, use_heap);
                                FREE_PATHW()
                                        free(printname);
  #endif
                                        FREE_PATHW()
 -                                      return -1;
 +                                      return (size_t)-1;
                                }
                        }
-                       else if (pbuffer->ReparseTag == IO_REPARSE_TAG_DEDUP) {
+                       else if (pbuffer->ReparseTag == IO_REPARSE_TAG_DEDUP ||
+                                       /* Starting with 1709. */
+                                       (pbuffer->ReparseTag & IO_REPARSE_TAG_CLOUD_MASK) != 0 && 0x90001018L != pbuffer->ReparseTag ||
+                                       IO_REPARSE_TAG_CLOUD == pbuffer->ReparseTag ||
+                                       IO_REPARSE_TAG_ONEDRIVE == pbuffer->ReparseTag) {
                                isabsolute = 1;
                                substitutename = malloc((len + 1) * sizeof(char));
                                if (!substitutename) {