From 5f948bc1f0a251f88bb4c9b1c3dfa6cbd1327dc5 Mon Sep 17 00:00:00 2001
From: Konrad Pabjan <konradpabjan@github.com>
Date: Mon, 27 Jul 2020 15:41:16 +0200
Subject: [PATCH] Correctly check symlinks (#103)

---
 dist/index.js | 6 +++++-
 src/search.ts | 8 ++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/dist/index.js b/dist/index.js
index 85179f2..4208115 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -6225,6 +6225,8 @@ const path = __importStar(__webpack_require__(622));
 const core_1 = __webpack_require__(470);
 const fs_1 = __webpack_require__(747);
 const path_1 = __webpack_require__(622);
+const util_1 = __webpack_require__(669);
+const stats = util_1.promisify(fs_1.stat);
 function getDefaultGlobOptions() {
     return {
         followSymbolicLinks: true,
@@ -6293,7 +6295,9 @@ function findFilesToUpload(searchPath, globOptions) {
           directories so filter any directories out from the raw search results
         */
         for (const searchResult of rawSearchResults) {
-            if (!fs_1.lstatSync(searchResult).isDirectory()) {
+            const fileStats = yield stats(searchResult);
+            // isDirectory() returns false for symlinks if using fs.lstat(), make sure to use fs.stat() instead
+            if (!fileStats.isDirectory()) {
                 core_1.debug(`File:${searchResult} was found using the provided searchPath`);
                 searchResults.push(searchResult);
             }
diff --git a/src/search.ts b/src/search.ts
index f507f40..5a4911a 100644
--- a/src/search.ts
+++ b/src/search.ts
@@ -1,8 +1,10 @@
 import * as glob from '@actions/glob'
 import * as path from 'path'
 import {debug, info} from '@actions/core'
-import {lstatSync} from 'fs'
+import {stat} from 'fs'
 import {dirname} from 'path'
+import {promisify} from 'util'
+const stats = promisify(stat)
 
 export interface SearchResult {
   filesToUpload: string[]
@@ -92,7 +94,9 @@ export async function findFilesToUpload(
     directories so filter any directories out from the raw search results
   */
   for (const searchResult of rawSearchResults) {
-    if (!lstatSync(searchResult).isDirectory()) {
+    const fileStats = await stats(searchResult)
+    // isDirectory() returns false for symlinks if using fs.lstat(), make sure to use fs.stat() instead
+    if (!fileStats.isDirectory()) {
       debug(`File:${searchResult} was found using the provided searchPath`)
       searchResults.push(searchResult)
     } else {