]> granicus.if.org Git - php/commitdiff
- fix readlink in TS SAPI
authorPierre Joye <pajoye@php.net>
Tue, 16 Jun 2009 16:50:13 +0000 (16:50 +0000)
committerPierre Joye <pajoye@php.net>
Tue, 16 Jun 2009 16:50:13 +0000 (16:50 +0000)
ext/standard/link_win32.c

index b5caba36a34e50eb9e8dbb240aa429287cf1a02f..078b7d18a39206588fe251fd61745af2bf05b6bb 100644 (file)
@@ -63,6 +63,7 @@ PHP_FUNCTION(readlink)
        char *link;
        int link_len;
        TCHAR Path[MAXPATHLEN];
+       char path_resolved[MAXPATHLEN];
        HANDLE hFile;
        DWORD dwRet;
 
@@ -89,14 +90,17 @@ PHP_FUNCTION(readlink)
        if (OPENBASEDIR_CHECKPATH(link)) {
                RETURN_FALSE;
        }
-
-       hFile = CreateFile(link,                  // file to open
-                                                                                GENERIC_READ,          // open for reading
-                                                                                FILE_SHARE_READ,       // share for reading
-                                                                                NULL,                  // default security
-                                                                                OPEN_EXISTING,         // existing file only
-                                                                                FILE_FLAG_BACKUP_SEMANTICS, // normal file
-                                                                                NULL);                 // no attr. template
+       if (!expand_filepath(link, path_resolved TSRMLS_CC)) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "No such file or directory");
+               RETURN_FALSE;
+       }
+       hFile = CreateFile(path_resolved,                  // file to open
+                                GENERIC_READ,          // open for reading
+                                FILE_SHARE_READ,       // share for reading
+                                NULL,                  // default security
+                                OPEN_EXISTING,         // existing file only
+                                FILE_FLAG_BACKUP_SEMANTICS, // normal file
+                                NULL);                 // no attr. template
 
        if( hFile == INVALID_HANDLE_VALUE) {
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not open file (error %d)", GetLastError());