diff options
author | Tomasz Wasilczyk <twasilczyk@pidgin.im> | 2014-02-08 00:57:28 +0100 |
---|---|---|
committer | Tomasz Wasilczyk <twasilczyk@pidgin.im> | 2014-02-08 00:57:28 +0100 |
commit | b9c26476397cf0be6c3c2de09961cac70f75bdc7 (patch) | |
tree | 326fbc651d2acabafe883828d24228090af9e8ca | |
parent | c2999e5d0196061a4fbbfb8e3b4a9331a22c99a0 (diff) | |
download | pidgin-b9c26476397cf0be6c3c2de09961cac70f75bdc7.tar.gz |
Fix some clang static analysis warnings
-rw-r--r-- | libpurple/ciphers/pbkdf2cipher.c | 3 | ||||
-rw-r--r-- | libpurple/dnssrv.c | 10 | ||||
-rw-r--r-- | libpurple/idle.c | 3 | ||||
-rw-r--r-- | libpurple/log.c | 8 | ||||
-rw-r--r-- | libpurple/plugins/log_reader.c | 16 | ||||
-rw-r--r-- | libpurple/plugins/ssl/ssl-gnutls.c | 7 | ||||
-rw-r--r-- | libpurple/util.c | 8 | ||||
-rw-r--r-- | libpurple/xfer.c | 2 |
8 files changed, 43 insertions, 14 deletions
diff --git a/libpurple/ciphers/pbkdf2cipher.c b/libpurple/ciphers/pbkdf2cipher.c index ccbdf2b9ea..3c585c1f23 100644 --- a/libpurple/ciphers/pbkdf2cipher.c +++ b/libpurple/ciphers/pbkdf2cipher.c @@ -208,7 +208,8 @@ purple_pbkdf2_cipher_digest(PurpleCipher *cipher, guchar digest[], size_t len) halfkey_pad = priv->out_len - (halfkey_count - 1) * halfkey_len; salt_ext = g_new(guchar, salt_ext_len); - memcpy(salt_ext, priv->salt, priv->salt_len); + if (priv->salt_len > 0) + memcpy(salt_ext, priv->salt, priv->salt_len); for (halfkey_no = 1; halfkey_no <= halfkey_count; halfkey_no++) { memset(halfkey, 0, halfkey_len); diff --git a/libpurple/dnssrv.c b/libpurple/dnssrv.c index cdf78d841f..d9c393a1e0 100644 --- a/libpurple/dnssrv.c +++ b/libpurple/dnssrv.c @@ -137,6 +137,8 @@ select_random_response(GList *list, PurpleSrvResponseContainer **container_ptr) size_t runningtotal; int r; + g_return_val_if_fail(list != NULL, NULL); + runningtotal = 0; cur = list; @@ -157,6 +159,8 @@ select_random_response(GList *list, PurpleSrvResponseContainer **container_ptr) r = runningtotal ? g_random_int_range(1, runningtotal + 1) : 0; cur = list; while (r > ((PurpleSrvResponseContainer *)cur->data)->sum) { + if (G_UNLIKELY(!cur->next)) + break; cur = cur->next; } @@ -180,6 +184,8 @@ srv_reorder(GList *list, int num) /* Nothing to sort */ return; + g_return_if_fail(list != NULL); + /* First build a list of container structs */ for (i = 0, cur = list; i < num; i++, cur = cur->next) { container = g_new(PurpleSrvResponseContainer, 1); @@ -198,6 +204,7 @@ srv_reorder(GList *list, int num) cur->data = container->response; g_free(container); cur = cur->next; + g_return_if_fail(cur); } } @@ -225,6 +232,9 @@ purple_srv_sort(GList *list) count = 1; while (cur) { PurpleSrvResponse *next_response; + + g_return_val_if_fail(cur->data, list); + pref = ((PurpleSrvResponse *)cur->data)->pref; next_response = cur->next ? cur->next->data : NULL; if (!next_response || next_response->pref != pref) { diff --git a/libpurple/idle.c b/libpurple/idle.c index 909ae72f00..c96fc0c8b6 100644 --- a/libpurple/idle.c +++ b/libpurple/idle.c @@ -114,7 +114,7 @@ static gint time_until_next_idle_event; static void check_idleness(void) { - time_t time_idle; + time_t time_idle = 0; gboolean auto_away; const gchar *idle_reporting; gboolean report_idle = TRUE; @@ -142,7 +142,6 @@ check_idleness(void) else { /* Don't report idle time */ - time_idle = 0; report_idle = FALSE; /* If we're not reporting idle, we can still do auto-away. diff --git a/libpurple/log.c b/libpurple/log.c index 51f4d37042..1725222a25 100644 --- a/libpurple/log.c +++ b/libpurple/log.c @@ -292,6 +292,10 @@ gint purple_log_get_activity_score(PurpleLogType type, const char *name, PurpleA while (logs) { PurpleLog *log = (PurpleLog*)(logs->data); + if (!log) { + g_warn_if_reached(); + continue; + } /* Activity score counts bytes in the log, exponentially decayed with a half-life of 14 days. */ score_double += purple_log_get_size(log) * @@ -453,6 +457,8 @@ PurpleLogLogger *purple_log_logger_new(const char *id, const char *name, int fun void purple_log_logger_free(PurpleLogLogger *logger) { + if (!logger) + return; g_free(logger->name); g_free(logger->id); g_free(logger); @@ -1579,7 +1585,7 @@ static gsize txt_logger_write(PurpleLog *log, data = log->logger_data; /* if we can't write to the file, give up before we hurt ourselves */ - if(!data->file) + if(!data || !data->file) return 0; if (log->type == PURPLE_LOG_SYSTEM) diff --git a/libpurple/plugins/log_reader.c b/libpurple/plugins/log_reader.c index 9b576f9df3..d75382076e 100644 --- a/libpurple/plugins/log_reader.c +++ b/libpurple/plugins/log_reader.c @@ -922,7 +922,7 @@ static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags) PurpleXmlNode *to; enum name_guesses name_guessed = NAME_GUESS_UNKNOWN; const char *their_name; - struct tm *tm; + struct tm *tm = NULL; char *timestamp; char *tmp; const char *style; @@ -1101,12 +1101,16 @@ static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags) text = g_string_append(text, ";\">"); } - msn_logger_parse_timestamp(message, &tm); - - timestamp = g_strdup_printf("<font size=\"2\">(%02u:%02u:%02u)</font> ", + if (msn_logger_parse_timestamp(message, &tm)) { + timestamp = g_strdup_printf( + "<font size=\"2\">(%02u:%02u:%02u)</font> ", tm->tm_hour, tm->tm_min, tm->tm_sec); - text = g_string_append(text, timestamp); - g_free(timestamp); + text = g_string_append(text, timestamp); + g_free(timestamp); + } else { + text = g_string_append(text, + "<font size=\"2\">(00:00:00)</font> "); + } if (from_name) { text = g_string_append(text, "<b>"); diff --git a/libpurple/plugins/ssl/ssl-gnutls.c b/libpurple/plugins/ssl/ssl-gnutls.c index 0283b3bf10..2dc22f716e 100644 --- a/libpurple/plugins/ssl/ssl-gnutls.c +++ b/libpurple/plugins/ssl/ssl-gnutls.c @@ -412,8 +412,10 @@ ssl_gnutls_connect(PurpleSslConnection *gsc) gnutls_set_default_priority(gnutls_data->session); #endif - gnutls_server_name_set(gnutls_data->session, GNUTLS_NAME_DNS, gsc->host, - strlen(gsc->host)); + if (gsc->host) { + gnutls_server_name_set(gnutls_data->session, GNUTLS_NAME_DNS, + gsc->host, strlen(gsc->host)); + } gnutls_credentials_set(gnutls_data->session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1192,6 +1194,7 @@ x509_display_string(PurpleCertificate *crt) /* Pull out the SHA1 checksum */ sha_bin = x509_sha1sum(crt); + g_return_val_if_fail(sha_bin != NULL, NULL); sha_asc = purple_base16_encode_chunked(sha_bin->data, sha_bin->len); /* Get the cert Common Name */ diff --git a/libpurple/util.c b/libpurple/util.c index c8d439f6b0..85790334ea 100644 --- a/libpurple/util.c +++ b/libpurple/util.c @@ -3731,7 +3731,7 @@ purple_str_seconds_to_string(guint secs) hrs = secs / (60 * 60); secs = secs % (60 * 60); mins = secs / 60; - secs = secs % 60; + /* secs = secs % 60; */ if (days > 0) { @@ -3870,8 +3870,12 @@ void purple_got_protocol_handler_uri(const char *uri) while (*tmp || *pairstart) { if (*tmp == delimiter || !(*tmp)) { /* If there is no explicit value */ - if (keyend == NULL) + if (keyend == NULL) { keyend = tmp; + } + /* without these brackets, clang won't + * recognize tmp as a non-NULL + */ if (keyend && keyend != pairstart) { char *p; diff --git a/libpurple/xfer.c b/libpurple/xfer.c index 02cf4bcc07..488960c363 100644 --- a/libpurple/xfer.c +++ b/libpurple/xfer.c @@ -613,6 +613,8 @@ purple_xfer_request_accepted(PurpleXfer *xfer, const char *filename) purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_ACCEPTED); priv->ops.init(xfer); return; + } else { + g_return_if_fail(filename != NULL); } buddy = purple_blist_find_buddy(account, priv->who); |