eion/purple-hangouts

Fix prpl warnings from static analysis
draft
2018-10-24, Eion Robb
049ac73c448d
Parents 030e64028291
Children 3a80700b1722
Fix prpl warnings from static analysis
--- a/hangouts_connection.c Wed Oct 24 17:10:23 2018 +1300
+++ b/hangouts_connection.c Wed Oct 24 17:12:15 2018 +1300
@@ -482,7 +482,7 @@
postdata = g_string_new(NULL);
if (map_list != NULL) {
map_list_len = json_array_get_length(map_list);
- g_string_append_printf(postdata, "count=%d&", map_list_len);
+ g_string_append_printf(postdata, "count=%ud&", map_list_len);
g_string_append(postdata, "ofs=0&");
for(i = 0; i < map_list_len; i++) {
JsonObject *obj = json_array_get_object_element(map_list, i);
--- a/hangouts_conversation.c Wed Oct 24 17:10:23 2018 +1300
+++ b/hangouts_conversation.c Wed Oct 24 17:12:15 2018 +1300
@@ -292,7 +292,7 @@
// Set the buddy photo, if it's real
if (entity->properties->photo_url != NULL && entity->properties->photo_url_status == PHOTO_URL_STATUS__PHOTO_URL_STATUS_USER_PHOTO) {
gchar *photo = g_strconcat("https:", entity->properties->photo_url, NULL);
- if (g_strcmp0(purple_buddy_icons_get_checksum_for_user(buddy), photo)) {
+ if (!purple_strequal(purple_buddy_icons_get_checksum_for_user(buddy), photo)) {
PurpleHttpRequest *photo_request = purple_http_request_new(photo);
if (ha->icons_keepalive_pool == NULL) {
@@ -694,7 +694,7 @@
hangouts_got_join_chat_from_url(HangoutsAccount *ha, OpenGroupConversationFromUrlResponse *response, gpointer user_data)
{
if (!response || !response->conversation_id || !response->conversation_id->id) {
- purple_notify_error(ha->pc, _("Join from URL Error"), _("Could not join group from URL"), response->response_header ? response->response_header->error_description : _("Unknown Error"), purple_request_cpar_from_connection(ha->pc));
+ purple_notify_error(ha->pc, _("Join from URL Error"), _("Could not join group from URL"), response && response->response_header ? response->response_header->error_description : _("Unknown Error"), purple_request_cpar_from_connection(ha->pc));
return;
}
@@ -802,14 +802,13 @@
g_hash_table_replace(ha->group_chats, g_strdup(conv_id), NULL);
if (chat == NULL) {
- if (hangouts_group == NULL) {
- hangouts_group = purple_blist_find_group("Hangouts");
- if (!hangouts_group)
- {
- hangouts_group = purple_group_new("Hangouts");
- purple_blist_add_group(hangouts_group, NULL);
- }
+ hangouts_group = purple_blist_find_group("Hangouts");
+ if (!hangouts_group)
+ {
+ hangouts_group = purple_group_new("Hangouts");
+ purple_blist_add_group(hangouts_group, NULL);
}
+
if (!has_name) {
gchar **name_set = g_new0(gchar *, conversation->n_participant_data + 1);
for (i = 0; i < conversation->n_participant_data; i++) {
@@ -1000,7 +999,7 @@
PurpleBuddy *buddy;
gchar *reachableAppType = hangouts_json_path_query_string(node, "$.inAppReachability[*].appType", NULL);
- if (g_strcmp0(reachableAppType, "BABEL")) {
+ if (!purple_strequal(reachableAppType, "BABEL")) {
//Not a hangouts user
g_free(reachableAppType);
continue;
@@ -1037,7 +1036,7 @@
purple_serv_got_alias(ha->pc, name, alias);
}
- if (g_strcmp0(purple_buddy_icons_get_checksum_for_user(buddy), photo)) {
+ if (!purple_strequal(purple_buddy_icons_get_checksum_for_user(buddy), photo)) {
PurpleHttpRequest *photo_request = purple_http_request_new(photo);
if (ha->icons_keepalive_pool == NULL) {
@@ -1202,7 +1201,7 @@
if (opening) {
while (*c != '>') {
//Grab HREF for the A
- if (g_ascii_strcasecmp(tag->str, " HREF=")) {
+ if (g_ascii_strcasecmp(tag->str, " HREF=") == 0) {
gchar *href_end;
c += 6;
if (*c == '"' || *c == '\'') {
@@ -1435,7 +1434,7 @@
if (filename != NULL) {
filename = g_path_get_basename(filename);
} else {
- filename = g_strdup_printf("purple%d.%s", g_random_int(), purple_image_get_extension(image));
+ filename = g_strdup_printf("purple%ud.%s", g_random_int(), purple_image_get_extension(image));
}
postdata = g_strdup_printf("{\"protocolVersion\":\"0.8\",\"createSessionRequest\":{\"fields\":[{\"external\":{\"name\":\"file\",\"filename\":\"%s\",\"put\":{},\"size\":%" G_GSIZE_FORMAT "}},{\"inlined\":{\"name\":\"client\",\"content\":\"hangouts\",\"contentType\":\"text/plain\"}}]}}", filename, (gsize) purple_image_get_data_size(image));
@@ -1631,7 +1630,7 @@
if (!PURPLE_CONNECTION_IS_CONNECTED(pc))
return 0;
- if (g_strcmp0(purple_protocol_get_id(purple_connection_get_protocol(pc)), HANGOUTS_PLUGIN_ID))
+ if (!purple_strequal(purple_protocol_get_id(purple_connection_get_protocol(pc)), HANGOUTS_PLUGIN_ID))
return 0;
if (ha == NULL) {
@@ -2055,7 +2054,7 @@
if (!PURPLE_CONNECTION_IS_CONNECTED(pc))
return;
- if (g_strcmp0(purple_protocol_get_id(purple_connection_get_protocol(pc)), HANGOUTS_PLUGIN_ID))
+ if (!purple_strequal(purple_protocol_get_id(purple_connection_get_protocol(pc)), HANGOUTS_PLUGIN_ID))
return;
mark_seen_timeout = GPOINTER_TO_INT(purple_conversation_get_data(conv, "mark_seen_timeout"));
--- a/hangouts_events.c Wed Oct 24 17:10:23 2018 +1300
+++ b/hangouts_events.c Wed Oct 24 17:12:15 2018 +1300
@@ -349,7 +349,7 @@
ha = purple_connection_get_protocol_data(pc);
- if (FALSE && g_strcmp0(watermark_notification->sender_id->gaia_id, ha->self_gaia_id)) {
+ if (FALSE && purple_strequal(watermark_notification->sender_id->gaia_id, ha->self_gaia_id)) {
//We marked this message as read ourselves
PurpleConversation *conv = NULL;
const gchar *conv_id = watermark_notification->conversation_id->id;
@@ -538,7 +538,7 @@
image = purple_image_new_from_data(g_memdup(response_data, response_size), response_size);
image_id = purple_image_store_add(image);
escaped_image_url = g_markup_escape_text(purple_http_request_get_url(purple_http_conn_get_request(connection)), -1);
- msg = g_strdup_printf("<a href='%s'>View full image <img id='%d' src='%s' /></a>", url, image_id, escaped_image_url);
+ msg = g_strdup_printf("<a href='%s'>View full image <img id='%ud' src='%s' /></a>", url, image_id, escaped_image_url);
msg_flags |= PURPLE_MESSAGE_IMAGES;
if (g_hash_table_contains(ha->group_chats, conv_id)) {
@@ -620,6 +620,11 @@
return;
}
+ if (conv_id == NULL) {
+ // Invalid conversation
+ return;
+ }
+
if (event->membership_change != NULL) {
//event->event_type == EVENT_TYPE__EVENT_TYPE_REMOVE_USER || EVENT_TYPE__EVENT_TYPE_ADD_USER
MembershipChange *membership_change = event->membership_change;
@@ -686,7 +691,9 @@
const gchar *path = purple_http_url_get_path(url);
//apparently the path includes the query string
if (g_str_has_prefix(path, "/url?q=")) {
- gchar *new_href = g_strndup(path + 7, strchr(path, '&') - path - 7);
+ const gchar *end = strchr(path, '&');
+ gsize len = (end ? (gsize) (end - path) : (gsize) strlen(path));
+ gchar *new_href = g_strndup(path + 7, len - 7);
purple_xmlnode_set_attrib(node, "href", purple_url_decode(new_href));
g_free(new_href);
}
@@ -863,7 +870,7 @@
if (g_hash_table_contains(ha->group_chats, conv_id)) {
chat = purple_blist_find_chat(ha->account, conv_id);
- if (chat && g_strcmp0(purple_chat_get_alias(chat), conversation_rename->new_name)) {
+ if (chat && !purple_strequal(purple_chat_get_alias(chat), conversation_rename->new_name)) {
g_dataset_set_data(ha, "ignore_set_alias", "true");
purple_chat_set_alias(chat, conversation_rename->new_name);
g_dataset_set_data(ha, "ignore_set_alias", NULL);
--- a/hangouts_media.c Wed Oct 24 17:10:23 2018 +1300
+++ b/hangouts_media.c Wed Oct 24 17:12:15 2018 +1300
@@ -192,9 +192,11 @@
guint ssrc;
session = g_hash_table_lookup(sessions, session_ids->data);
- g_object_get(session->session, "ssrc", &ssrc, NULL);
-
- ssrcs = g_list_append(ssrcs, GINT_TO_POINTER(ssrc));
+ if (session != NULL) {
+ g_object_get(session->session, "ssrc", &ssrc, NULL);
+
+ ssrcs = g_list_append(ssrcs, GINT_TO_POINTER(ssrc));
+ }
}
}
@@ -837,9 +839,11 @@
audio_media_stream.source_id = "1"; //TODO
ssrcs = purple_media_get_session_ssrcs(hangouts_media->media);
- audio_stream_otter.ssrc = g_new0(uint32_t, g_list_length(ssrcs));
- for(; ssrcs; ssrcs = g_list_delete_link(ssrcs, ssrcs)) {
- audio_stream_otter.ssrc[audio_stream_otter.n_ssrc++] = GPOINTER_TO_INT(ssrcs->data);
+ if (ssrcs != NULL) {
+ audio_stream_otter.ssrc = g_new0(uint32_t, g_list_length(ssrcs));
+ for(; ssrcs; ssrcs = g_list_delete_link(ssrcs, ssrcs)) {
+ audio_stream_otter.ssrc[audio_stream_otter.n_ssrc++] = GPOINTER_TO_INT(ssrcs->data);
+ }
}
stream_request.resource[n_resource++] = &audio_media_stream;
@@ -861,9 +865,11 @@
video_media_stream.source_id = "2"; //TODO
ssrcs = purple_media_get_session_ssrcs(hangouts_media->media);
- video_stream_otter.ssrc = g_new0(uint32_t, g_list_length(ssrcs));
- for(; ssrcs; ssrcs = g_list_delete_link(ssrcs, ssrcs)) {
- video_stream_otter.ssrc[video_stream_otter.n_ssrc++] = GPOINTER_TO_INT(ssrcs->data);
+ if (ssrcs != NULL) {
+ video_stream_otter.ssrc = g_new0(uint32_t, g_list_length(ssrcs));
+ for(; ssrcs; ssrcs = g_list_delete_link(ssrcs, ssrcs)) {
+ video_stream_otter.ssrc[video_stream_otter.n_ssrc++] = GPOINTER_TO_INT(ssrcs->data);
+ }
}
stream_request.resource[n_resource++] = &video_media_stream;
--- a/hangouts_pblite.c Wed Oct 24 17:10:23 2018 +1300
+++ b/hangouts_pblite.c Wed Oct 24 17:12:15 2018 +1300
@@ -503,7 +503,7 @@
const ProtobufCEnumValue *enum_value = protobuf_c_enum_descriptor_get_value(enum_descriptor, *member);
node = json_node_new(JSON_NODE_VALUE);
if (enum_value == NULL) {
- gchar *unknown_text = g_strdup_printf("UNKNOWN ENUM VALUE %d", *member);
+ gchar *unknown_text = g_strdup_printf("UNKNOWN ENUM VALUE %ud", *member);
json_node_set_string(node, unknown_text);
g_free(unknown_text);
} else {
--- a/libhangouts.c Wed Oct 24 17:10:23 2018 +1300
+++ b/libhangouts.c Wed Oct 24 17:12:15 2018 +1300
@@ -118,7 +118,7 @@
return;
}
- if (g_strcmp0(purple_account_get_protocol_id(account), HANGOUTS_PLUGIN_ID)) {
+ if (!purple_strequal(purple_account_get_protocol_id(account), HANGOUTS_PLUGIN_ID)) {
return;
}
@@ -168,7 +168,7 @@
return;
}
- if (g_strcmp0(purple_account_get_protocol_id(account), HANGOUTS_PLUGIN_ID)) {
+ if (!purple_strequal(purple_account_get_protocol_id(account), HANGOUTS_PLUGIN_ID)) {
return;
}
@@ -186,7 +186,7 @@
new_alias = purple_chat_get_alias(chat);
// Don't send update to existing update
- if (g_strcmp0(old_alias, new_alias)) {
+ if (!purple_strequal(old_alias, new_alias)) {
components = purple_chat_get_components(chat);
conv_id = g_hash_table_lookup(components, "conv_id");
if (conv_id == NULL) {
--- a/purple2compat/purple-socket.c Wed Oct 24 17:10:23 2018 +1300
+++ b/purple2compat/purple-socket.c Wed Oct 24 17:12:15 2018 +1300
@@ -78,8 +78,10 @@
GSList *l;
l = g_hash_table_lookup(handles, gc);
- l = g_slist_remove(l, ps);
- g_hash_table_insert(handles, gc, l);
+ if (l != NULL) {
+ l = g_slist_remove(l, ps);
+ g_hash_table_insert(handles, gc, l);
+ }
}
void
--- a/purplecompat.h Wed Oct 24 17:10:23 2018 +1300
+++ b/purplecompat.h Wed Oct 24 17:12:15 2018 +1300
@@ -83,7 +83,7 @@
#define purple_conversations_find_im_with_account(name, account) \
PURPLE_CONV_IM(purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, account))
#define purple_im_conversation_new(account, from) PURPLE_CONV_IM(purple_conversation_new(PURPLE_CONV_TYPE_IM, account, from))
-#define PURPLE_CONVERSATION(chatorim) (chatorim == NULL ? NULL : chatorim->conv)
+#define PURPLE_CONVERSATION(chatorim) ((chatorim) == NULL ? NULL : (chatorim)->conv)
#define PURPLE_IM_CONVERSATION(conv) PURPLE_CONV_IM(conv)
#define PURPLE_CHAT_CONVERSATION(conv) PURPLE_CONV_CHAT(conv)
#define PURPLE_IS_IM_CONVERSATION(conv) (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)