diff --git a/mindspore/ccsrc/utils/system/sha256.h b/mindspore/ccsrc/utils/system/sha256.h index 5f165b0e12..8011bf5f5f 100644 --- a/mindspore/ccsrc/utils/system/sha256.h +++ b/mindspore/ccsrc/utils/system/sha256.h @@ -24,6 +24,7 @@ namespace mindspore { namespace system { namespace sha256 { +constexpr int kPathMax = 4096; constexpr int kBitNumber = 8; constexpr int kDigestSize = 8; constexpr int kIterationNumber = 64; @@ -46,7 +47,17 @@ inline uint32_t sigma2(uint32_t x) { return (x >> 7 | x << 25) ^ (x >> 18 | x << inline uint32_t sigma3(uint32_t x) { return (x >> 17 | x << 15) ^ (x >> 19 | x << 13) ^ (x >> 10); } std::string LoadFilePath(const std::string &path) { - std::ifstream bin_stream(path, std::ios::binary); + char real_path[kPathMax] = {0}; +#if defined(_WIN32) || defined(_WIN64) + if (path.size() > kPathMax || _fullpath(real_path, path.c_str(), kPathMax) == nullptr) { + return ""; + } +#else + if (path.size() > kPathMax || realpath(path.c_str(), real_path) == nullptr) { + return ""; + } +#endif + std::ifstream bin_stream(real_path, std::ios::binary); if (!bin_stream.is_open()) { return ""; }