merge/upstream-full #105

Manually merged
jabber.developer merged 407 commits from merge/upstream-full into master 2026-05-26 17:54:34 +00:00
390 changed files with 13276 additions and 36187 deletions
Showing only changes of commit 2d7426fb2f - Show all commits

View File

@@ -86,6 +86,7 @@ _pendingPresence_free(ProfPendingPresence* presence)
if (presence->last_activity)
g_date_time_unref(presence->last_activity);
free(presence->barejid);
resource_destroy(presence->resource);
free(presence);
jabber.developer marked this conversation as resolved
Review

We also clean it on line 138. Potential for double free. We need to set it to NULL in resource.c for safety. At least the resource itself.

We also clean it on line 138. Potential for double free. We need to set it to `NULL` in `resource.c` for safety. At least the resource itself.

Fixed in 60da899bd — caller now nulls its pointer after resource_destroy.

Fixed in 60da899bd — caller now nulls its pointer after `resource_destroy`.
Review

I am not sure where to reply, but in the roster_update_presence, resource is a param. setting it to null before returning does not increase safety. it will just override a local variable.

I am not sure where to reply, but in the `roster_update_presence`, `resource` is a param. setting it to `null` before returning does not increase safety. it will just override a local variable.

Corrected

Corrected
}
@@ -685,6 +686,7 @@ roster_process_pending_presence(void)
for (iter = roster_pending_presence; iter != NULL; iter = iter->next) {
ProfPendingPresence* presence = iter->data;
roster_update_presence(presence->barejid, presence->resource, presence->last_activity);
presence->resource = NULL;
}
g_slist_free_full(roster_pending_presence, (GDestroyNotify)_pendingPresence_free);