mirror of
https://github.com/transmission/transmission
synced 2025-02-22 22:20:39 +00:00
fix: some Coverity regressions reported on 2021-09-16 (#1870)
* fix: coverity regressions reported on 2021-10-01
leaks introduced by 3fd5c81a
* fix: resource leak in test utility filesAreIdentical()
* fix: use-after-free warning in test code for tr_urlParse()
* fix: false warning for unterminated c string
* fix: false unchecked return value in test code
cid 1491881
* fix: unterminated c string in test code
cid 1491890
* refactor: slightly better assertions in file-test
This commit is contained in:
parent
b546fd423f
commit
916d418824
5 changed files with 31 additions and 12 deletions
|
@ -66,8 +66,7 @@ protected:
|
|||
bool addressIsBlocked(char const* address_str)
|
||||
{
|
||||
struct tr_address addr = {};
|
||||
tr_address_from_string(&addr, address_str);
|
||||
return tr_sessionIsAddressBlocked(session_, &addr);
|
||||
return !tr_address_from_string(&addr, address_str) || tr_sessionIsAddressBlocked(session_, &addr);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -75,6 +75,8 @@ private:
|
|||
|
||||
bool filesAreIdentical(char const* fn1, char const* fn2)
|
||||
{
|
||||
bool identical = true;
|
||||
|
||||
tr_sys_file_t fd1 = tr_sys_file_open(fn1, TR_SYS_FILE_READ | TR_SYS_FILE_SEQUENTIAL, 0, nullptr);
|
||||
tr_sys_file_t fd2 = tr_sys_file_open(fn2, TR_SYS_FILE_READ | TR_SYS_FILE_SEQUENTIAL, 0, nullptr);
|
||||
EXPECT_NE(fd1, TR_BAD_SYS_FILE);
|
||||
|
@ -100,12 +102,14 @@ private:
|
|||
|
||||
if (bytes_left1 != bytes_left2)
|
||||
{
|
||||
return false;
|
||||
identical = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (memcmp(readbuf1, readbuf2, buflen) != 0)
|
||||
{
|
||||
return false;
|
||||
identical = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -114,7 +118,7 @@ private:
|
|||
tr_sys_file_close(fd1, nullptr);
|
||||
tr_sys_file_close(fd2, nullptr);
|
||||
|
||||
return true;
|
||||
return identical;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -999,11 +999,11 @@ TEST_F(FileTest, fileOpen)
|
|||
auto* path1 = tr_buildPath(test_dir.data(), "a", nullptr);
|
||||
EXPECT_FALSE(tr_sys_path_exists(path1, nullptr));
|
||||
tr_error* err = nullptr;
|
||||
EXPECT_TRUE(tr_sys_file_open(path1, TR_SYS_FILE_READ, 0600, &err) == TR_BAD_SYS_FILE);
|
||||
EXPECT_EQ(TR_BAD_SYS_FILE, tr_sys_file_open(path1, TR_SYS_FILE_READ, 0600, &err));
|
||||
EXPECT_NE(nullptr, err);
|
||||
EXPECT_FALSE(tr_sys_path_exists(path1, nullptr));
|
||||
tr_error_clear(&err);
|
||||
EXPECT_TRUE(tr_sys_file_open(path1, TR_SYS_FILE_WRITE, 0600, &err) == TR_BAD_SYS_FILE);
|
||||
EXPECT_EQ(TR_BAD_SYS_FILE, tr_sys_file_open(path1, TR_SYS_FILE_WRITE, 0600, &err));
|
||||
EXPECT_NE(nullptr, err);
|
||||
EXPECT_FALSE(tr_sys_path_exists(path1, nullptr));
|
||||
tr_error_clear(&err);
|
||||
|
@ -1012,11 +1012,11 @@ TEST_F(FileTest, fileOpen)
|
|||
tr_sys_dir_create(path1, 0, 0777, nullptr);
|
||||
#ifdef _WIN32
|
||||
// this works on *NIX
|
||||
EXPECT_TRUE(tr_sys_file_open(path1, TR_SYS_FILE_READ, 0600, &err) == TR_BAD_SYS_FILE);
|
||||
EXPECT_EQ(TR_BAD_SYS_FILE, tr_sys_file_open(path1, TR_SYS_FILE_READ, 0600, &err));
|
||||
EXPECT_NE(nullptr, err);
|
||||
tr_error_clear(&err);
|
||||
#endif
|
||||
EXPECT_TRUE(tr_sys_file_open(path1, TR_SYS_FILE_WRITE, 0600, &err) == TR_BAD_SYS_FILE);
|
||||
EXPECT_EQ(TR_BAD_SYS_FILE, tr_sys_file_open(path1, TR_SYS_FILE_WRITE, 0600, &err));
|
||||
EXPECT_NE(nullptr, err);
|
||||
tr_error_clear(&err);
|
||||
|
||||
|
|
|
@ -137,17 +137,21 @@ TEST_P(SubprocessTest, SpawnAsyncArgs)
|
|||
|
||||
auto buffer = std::array<char, 1024>{};
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_arg1, buffer.data());
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_arg2, buffer.data());
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_arg3, buffer.data());
|
||||
|
||||
if (allow_batch_metachars)
|
||||
{
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_arg4, buffer.data());
|
||||
}
|
||||
|
@ -212,21 +216,27 @@ TEST_P(SubprocessTest, SpawnAsyncEnv)
|
|||
|
||||
auto buffer = std::array<char, 1024>{};
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_env_value1, buffer.data());
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_env_value2, buffer.data());
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_env_value3, buffer.data());
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_env_value4, buffer.data());
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_EQ(test_env_value5, buffer.data());
|
||||
|
||||
buffer[0] = '\0';
|
||||
EXPECT_TRUE(tr_sys_file_read_line(fd, buffer.data(), buffer.size(), nullptr));
|
||||
EXPECT_STREQ("<null>", buffer.data());
|
||||
|
||||
|
|
|
@ -225,9 +225,9 @@ TEST_F(UtilsTest, url)
|
|||
{
|
||||
auto const* url = "http://1";
|
||||
int port;
|
||||
char* scheme;
|
||||
char* host;
|
||||
char* path;
|
||||
char* scheme = nullptr;
|
||||
char* host = nullptr;
|
||||
char* path = nullptr;
|
||||
EXPECT_TRUE(tr_urlParse(url, TR_BAD_SIZE, &scheme, &host, &port, &path));
|
||||
EXPECT_STREQ("http", scheme);
|
||||
EXPECT_STREQ("1", host);
|
||||
|
@ -238,6 +238,9 @@ TEST_F(UtilsTest, url)
|
|||
tr_free(host);
|
||||
|
||||
url = "http://www.some-tracker.org/some/path";
|
||||
scheme = nullptr;
|
||||
host = nullptr;
|
||||
path = nullptr;
|
||||
EXPECT_TRUE(tr_urlParse(url, TR_BAD_SIZE, &scheme, &host, &port, &path));
|
||||
EXPECT_STREQ("http", scheme);
|
||||
EXPECT_STREQ("www.some-tracker.org", host);
|
||||
|
@ -248,6 +251,9 @@ TEST_F(UtilsTest, url)
|
|||
tr_free(host);
|
||||
|
||||
url = "http://www.some-tracker.org:8080/some/path";
|
||||
scheme = nullptr;
|
||||
host = nullptr;
|
||||
path = nullptr;
|
||||
EXPECT_TRUE(tr_urlParse(url, TR_BAD_SIZE, &scheme, &host, &port, &path));
|
||||
EXPECT_STREQ("http", scheme);
|
||||
EXPECT_STREQ("www.some-tracker.org", host);
|
||||
|
|
Loading…
Reference in a new issue