mirror of
https://github.com/transmission/transmission.git
synced 2025-12-20 02:18:42 +00:00
Fix some issues revealed by coverity
This commit is contained in:
23
gtk/conf.c
23
gtk/conf.c
@@ -134,11 +134,9 @@ gtr_pref_get_all (void)
|
|||||||
int64_t
|
int64_t
|
||||||
gtr_pref_int_get (const tr_quark key)
|
gtr_pref_int_get (const tr_quark key)
|
||||||
{
|
{
|
||||||
int64_t i = 0;
|
int64_t i;
|
||||||
|
|
||||||
tr_variantDictFindInt (getPrefs (), key, &i);
|
return tr_variantDictFindInt (getPrefs (), key, &i) ? i : 0;
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -150,11 +148,9 @@ gtr_pref_int_set (const tr_quark key, int64_t value)
|
|||||||
double
|
double
|
||||||
gtr_pref_double_get (const tr_quark key)
|
gtr_pref_double_get (const tr_quark key)
|
||||||
{
|
{
|
||||||
double d = 0.0;
|
double d;
|
||||||
|
|
||||||
tr_variantDictFindReal (getPrefs (), key, &d);
|
return tr_variantDictFindReal (getPrefs (), key, &d) ? d : 0.0;
|
||||||
|
|
||||||
return d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -172,10 +168,7 @@ gtr_pref_flag_get (const tr_quark key)
|
|||||||
{
|
{
|
||||||
bool boolVal;
|
bool boolVal;
|
||||||
|
|
||||||
if (!tr_variantDictFindBool (getPrefs (), key, &boolVal))
|
return tr_variantDictFindBool (getPrefs (), key, &boolVal) ? boolVal : false;
|
||||||
boolVal = false;
|
|
||||||
|
|
||||||
return boolVal != 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -191,11 +184,9 @@ gtr_pref_flag_set (const tr_quark key, gboolean value)
|
|||||||
const char*
|
const char*
|
||||||
gtr_pref_string_get (const tr_quark key)
|
gtr_pref_string_get (const tr_quark key)
|
||||||
{
|
{
|
||||||
const char * str = NULL;
|
const char * str;
|
||||||
|
|
||||||
tr_variantDictFindStr (getPrefs (), key, &str, NULL);
|
return tr_variantDictFindStr (getPrefs (), key, &str, NULL) ? str : NULL;
|
||||||
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ tracker_filter_model_update (gpointer gstore)
|
|||||||
qsort (hosts->pdata, hosts->len, sizeof (char*), pstrcmp);
|
qsort (hosts->pdata, hosts->len, sizeof (char*), pstrcmp);
|
||||||
|
|
||||||
/* update the "all" count */
|
/* update the "all" count */
|
||||||
gtk_tree_model_iter_children (model, &iter, NULL);
|
if (gtk_tree_model_iter_children (model, &iter, NULL))
|
||||||
tracker_model_update_count (store, &iter, all);
|
tracker_model_update_count (store, &iter, all);
|
||||||
|
|
||||||
store_pos = first_tracker_pos;
|
store_pos = first_tracker_pos;
|
||||||
|
|||||||
@@ -1801,10 +1801,11 @@ static void
|
|||||||
on_port_test_response (TrCore * core, tr_variant * response, gpointer u UNUSED)
|
on_port_test_response (TrCore * core, tr_variant * response, gpointer u UNUSED)
|
||||||
{
|
{
|
||||||
tr_variant * args;
|
tr_variant * args;
|
||||||
bool is_open = FALSE;
|
bool is_open;
|
||||||
|
|
||||||
if (tr_variantDictFindDict (response, TR_KEY_arguments, &args))
|
if (!tr_variantDictFindDict (response, TR_KEY_arguments, &args) ||
|
||||||
tr_variantDictFindBool (args, TR_KEY_port_is_open, &is_open);
|
!tr_variantDictFindBool (args, TR_KEY_port_is_open, &is_open))
|
||||||
|
is_open = false;
|
||||||
|
|
||||||
core_emit_port_tested (core, is_open);
|
core_emit_port_tested (core, is_open);
|
||||||
}
|
}
|
||||||
@@ -1826,10 +1827,11 @@ static void
|
|||||||
on_blocklist_response (TrCore * core, tr_variant * response, gpointer data UNUSED)
|
on_blocklist_response (TrCore * core, tr_variant * response, gpointer data UNUSED)
|
||||||
{
|
{
|
||||||
tr_variant * args;
|
tr_variant * args;
|
||||||
int64_t ruleCount = -1;
|
int64_t ruleCount;
|
||||||
|
|
||||||
if (tr_variantDictFindDict (response, TR_KEY_arguments, &args))
|
if (!tr_variantDictFindDict (response, TR_KEY_arguments, &args) ||
|
||||||
tr_variantDictFindInt (args, TR_KEY_blocklist_size, &ruleCount);
|
!tr_variantDictFindInt (args, TR_KEY_blocklist_size, &ruleCount))
|
||||||
|
ruleCount = -1;
|
||||||
|
|
||||||
if (ruleCount > 0)
|
if (ruleCount > 0)
|
||||||
gtr_pref_int_set (TR_KEY_blocklist_date, tr_time ());
|
gtr_pref_int_set (TR_KEY_blocklist_date, tr_time ());
|
||||||
|
|||||||
@@ -347,10 +347,8 @@ gtr_get_help_uri (void)
|
|||||||
|
|
||||||
if (!uri)
|
if (!uri)
|
||||||
{
|
{
|
||||||
int major, minor;
|
|
||||||
const char * fmt = "http://www.transmissionbt.com/help/gtk/%d.%dx";
|
const char * fmt = "http://www.transmissionbt.com/help/gtk/%d.%dx";
|
||||||
sscanf (SHORT_VERSION_STRING, "%d.%d", &major, &minor);
|
uri = g_strdup_printf (fmt, MAJOR_VERSION, MINOR_VERSION / 10);
|
||||||
uri = g_strdup_printf (fmt, major, minor / 10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return uri;
|
return uri;
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ tr_bitfieldIsValid (const tr_bitfield * b UNUSED)
|
|||||||
size_t
|
size_t
|
||||||
tr_bitfieldCountTrueBits (const tr_bitfield * b)
|
tr_bitfieldCountTrueBits (const tr_bitfield * b)
|
||||||
{
|
{
|
||||||
tr_bitfieldIsValid (b);
|
assert (tr_bitfieldIsValid (b));
|
||||||
|
|
||||||
return b->true_count;
|
return b->true_count;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -397,13 +397,7 @@ maybeSetCongestionAlgorithm (tr_socket_t socket,
|
|||||||
const char * algorithm)
|
const char * algorithm)
|
||||||
{
|
{
|
||||||
if (algorithm && *algorithm)
|
if (algorithm && *algorithm)
|
||||||
{
|
tr_netSetCongestionControl (socket, algorithm);
|
||||||
const int rc = tr_netSetCongestionControl (socket, algorithm);
|
|
||||||
|
|
||||||
if (rc < 0)
|
|
||||||
tr_logAddNamedInfo ("Net", "Can't set congestion control algorithm '%s': %s",
|
|
||||||
algorithm, tr_strerror (errno));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_UTP
|
#ifdef WITH_UTP
|
||||||
|
|||||||
@@ -354,12 +354,13 @@ torrentRemove (tr_session * session,
|
|||||||
int i;
|
int i;
|
||||||
int torrentCount;
|
int torrentCount;
|
||||||
tr_rpc_callback_type type;
|
tr_rpc_callback_type type;
|
||||||
bool deleteFlag = false;
|
bool deleteFlag;
|
||||||
tr_torrent ** torrents;
|
tr_torrent ** torrents;
|
||||||
|
|
||||||
assert (idle_data == NULL);
|
assert (idle_data == NULL);
|
||||||
|
|
||||||
tr_variantDictFindBool (args_in, TR_KEY_delete_local_data, &deleteFlag);
|
if (!tr_variantDictFindBool (args_in, TR_KEY_delete_local_data, &deleteFlag))
|
||||||
|
deleteFlag = false;
|
||||||
type = deleteFlag ? TR_RPC_TORRENT_TRASHING
|
type = deleteFlag ? TR_RPC_TORRENT_TRASHING
|
||||||
: TR_RPC_TORRENT_REMOVING;
|
: TR_RPC_TORRENT_REMOVING;
|
||||||
|
|
||||||
@@ -1350,11 +1351,12 @@ torrentSetLocation (tr_session * session,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool move = false;
|
bool move;
|
||||||
int i, torrentCount;
|
int i, torrentCount;
|
||||||
tr_torrent ** torrents = getTorrents (session, args_in, &torrentCount);
|
tr_torrent ** torrents = getTorrents (session, args_in, &torrentCount);
|
||||||
|
|
||||||
tr_variantDictFindBool (args_in, TR_KEY_move, &move);
|
if (!tr_variantDictFindBool (args_in, TR_KEY_move, &move))
|
||||||
|
move = false;
|
||||||
|
|
||||||
for (i=0; i<torrentCount; ++i)
|
for (i=0; i<torrentCount; ++i)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -459,9 +459,8 @@ bool
|
|||||||
tr_sessionLoadSettings (tr_variant * dict, const char * configDir, const char * appName)
|
tr_sessionLoadSettings (tr_variant * dict, const char * configDir, const char * appName)
|
||||||
{
|
{
|
||||||
char * filename;
|
char * filename;
|
||||||
|
tr_variant oldDict;
|
||||||
tr_variant fileSettings;
|
tr_variant fileSettings;
|
||||||
tr_variant sessionDefaults;
|
|
||||||
tr_variant tmp;
|
|
||||||
bool success;
|
bool success;
|
||||||
tr_error * error = NULL;
|
tr_error * error = NULL;
|
||||||
|
|
||||||
@@ -469,12 +468,11 @@ tr_sessionLoadSettings (tr_variant * dict, const char * configDir, const char *
|
|||||||
|
|
||||||
/* initializing the defaults: caller may have passed in some app-level defaults.
|
/* initializing the defaults: caller may have passed in some app-level defaults.
|
||||||
* preserve those and use the session defaults to fill in any missing gaps. */
|
* preserve those and use the session defaults to fill in any missing gaps. */
|
||||||
tr_variantInitDict (&sessionDefaults, 0);
|
oldDict = *dict;
|
||||||
tr_sessionGetDefaultSettings (&sessionDefaults);
|
tr_variantInitDict (dict, 0);
|
||||||
tr_variantMergeDicts (&sessionDefaults, dict);
|
tr_sessionGetDefaultSettings (dict);
|
||||||
tmp = *dict;
|
tr_variantMergeDicts (dict, &oldDict);
|
||||||
*dict = sessionDefaults;
|
tr_variantFree (&oldDict);
|
||||||
sessionDefaults = tmp;
|
|
||||||
|
|
||||||
/* if caller didn't specify a config dir, use the default */
|
/* if caller didn't specify a config dir, use the default */
|
||||||
if (!configDir || !*configDir)
|
if (!configDir || !*configDir)
|
||||||
@@ -495,7 +493,6 @@ tr_sessionLoadSettings (tr_variant * dict, const char * configDir, const char *
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* cleanup */
|
/* cleanup */
|
||||||
tr_variantFree (&sessionDefaults);
|
|
||||||
tr_free (filename);
|
tr_free (filename);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -641,9 +641,7 @@ static void event_callback (evutil_socket_t s UNUSED, short type, void* ignore U
|
|||||||
{
|
{
|
||||||
struct sockaddr_in foreignAddr;
|
struct sockaddr_in foreignAddr;
|
||||||
int addrLen = sizeof foreignAddr;
|
int addrLen = sizeof foreignAddr;
|
||||||
|
char foreignMsg[lpd_maxDatagramLength + 1];
|
||||||
/* be paranoid enough about zero terminating the foreign string */
|
|
||||||
char foreignMsg[lpd_maxDatagramLength + 1] = { 0 };
|
|
||||||
|
|
||||||
/* process local announcement from foreign peer */
|
/* process local announcement from foreign peer */
|
||||||
int res = recvfrom (lpd_socket, (void *) foreignMsg, lpd_maxDatagramLength,
|
int res = recvfrom (lpd_socket, (void *) foreignMsg, lpd_maxDatagramLength,
|
||||||
@@ -661,6 +659,9 @@ static void event_callback (evutil_socket_t s UNUSED, short type, void* ignore U
|
|||||||
.flags = 0
|
.flags = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* be paranoid enough about zero terminating the foreign string */
|
||||||
|
foreignMsg[res] = '\0';
|
||||||
|
|
||||||
foreignPeer.addr.addr.addr4 = foreignAddr.sin_addr;
|
foreignPeer.addr.addr.addr4 = foreignAddr.sin_addr;
|
||||||
if (tr_lpdConsiderAnnounce (&foreignPeer, foreignMsg) != 0)
|
if (tr_lpdConsiderAnnounce (&foreignPeer, foreignMsg) != 0)
|
||||||
return; /* OK so far, no log message */
|
return; /* OK so far, no log message */
|
||||||
|
|||||||
@@ -682,9 +682,10 @@ Session::responseReceived (int64_t tag, const QString& result, tr_variant * args
|
|||||||
|
|
||||||
case TAG_PORT_TEST:
|
case TAG_PORT_TEST:
|
||||||
{
|
{
|
||||||
bool isOpen = false;
|
bool isOpen;
|
||||||
if (args != nullptr)
|
if (args == nullptr ||
|
||||||
tr_variantDictFindBool (args, TR_KEY_port_is_open, &isOpen);
|
!tr_variantDictFindBool (args, TR_KEY_port_is_open, &isOpen))
|
||||||
|
isOpen = false;
|
||||||
emit portTested (isOpen);
|
emit portTested (isOpen);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user