diff --git a/src/libpsl-native/src/followsymlink.cpp b/src/libpsl-native/src/followsymlink.cpp index 6f32d697d77..033160fae67 100644 --- a/src/libpsl-native/src/followsymlink.cpp +++ b/src/libpsl-native/src/followsymlink.cpp @@ -39,7 +39,7 @@ char* FollowSymLink(const char* fileName) if (realPath) { - return strndup(realPath, strlen(realPath) + 1); + return strndup(realPath, strnlen(realPath, PATH_MAX)); } // if the path wasn't resolved, use readlink diff --git a/src/libpsl-native/src/getfullyqualifiedname.cpp b/src/libpsl-native/src/getfullyqualifiedname.cpp index 75e5af4b367..12a3483ed7c 100644 --- a/src/libpsl-native/src/getfullyqualifiedname.cpp +++ b/src/libpsl-native/src/getfullyqualifiedname.cpp @@ -43,7 +43,7 @@ char *GetFullyQualifiedName() } // return the first canonical name in the list - fullName = strndup(info->ai_canonname, strlen(info->ai_canonname)); + fullName = strndup(info->ai_canonname, strnlen(info->ai_canonname, NI_MAXHOST)); // only free info if getaddrinfo was successful freeaddrinfo(info); diff --git a/src/libpsl-native/test/test-createsymlink.cpp b/src/libpsl-native/test/test-createsymlink.cpp index 9bd96f346f3..42f186b2951 100644 --- a/src/libpsl-native/test/test-createsymlink.cpp +++ b/src/libpsl-native/test/test-createsymlink.cpp @@ -92,7 +92,7 @@ TEST_F(CreateSymLinkTest, SymLinkToFile) std::string target = FollowSymLink(fileSymLink.c_str()); char buffer[PATH_MAX]; std::string expected = realpath(file, buffer); - EXPECT_EQ(target, expected); + EXPECT_EQ(expected, target); } TEST_F(CreateSymLinkTest, SymLinkToDirectory) @@ -103,7 +103,7 @@ TEST_F(CreateSymLinkTest, SymLinkToDirectory) std::string target = FollowSymLink(dirSymLink.c_str()); char buffer[PATH_MAX]; std::string expected = realpath(dir, buffer); - EXPECT_EQ(target, expected); + EXPECT_EQ(expected, target); } TEST_F(CreateSymLinkTest, SymLinkAgain)