Fix some issues revealed by coverity

This commit is contained in:
Mike Gelfand
2015-05-09 11:56:35 +00:00
parent 2321bc3fad
commit cdf3cf62f9
10 changed files with 40 additions and 54 deletions

View File

@@ -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

View File

@@ -182,8 +182,8 @@ 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;
for (i=0, n=hosts->len ; ;) for (i=0, n=hosts->len ; ;)

View File

@@ -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 ());

View File

@@ -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;

View File

@@ -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;
} }

View File

@@ -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

View File

@@ -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)
{ {

View File

@@ -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;
} }

View File

@@ -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 */

View File

@@ -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;
} }