From: Yu Watanabe Date: Wed, 26 Apr 2023 04:59:34 +0000 (+0900) Subject: core/transaction: use hashmap_remove_value() to make not remove job with same ID X-Git-Tag: v254-rc1~612^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c49dfd8911f49bf383ad7ac1d18be8a4ab39ab09;p=thirdparty%2Fsystemd.git core/transaction: use hashmap_remove_value() to make not remove job with same ID When we fail to deserialize job ID, or the current_job_id is overflowed, we may have jobs with the same ID. This is paranoia, and just for safety. Note, we already use hashmap_remove_value() in job_uninstall(). --- diff --git a/src/core/transaction.c b/src/core/transaction.c index 059558ebc0a..cd0c28123f2 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -662,7 +662,7 @@ static int transaction_apply( /* j has been merged into a previously installed job */ if (tr->anchor_job == j) tr->anchor_job = installed_job; - hashmap_remove(m->jobs, UINT32_TO_PTR(j->id)); + hashmap_remove_value(m->jobs, UINT32_TO_PTR(j->id), j); job_free(j); j = installed_job; } @@ -683,7 +683,7 @@ static int transaction_apply( rollback: HASHMAP_FOREACH(j, tr->jobs) - hashmap_remove(m->jobs, UINT32_TO_PTR(j->id)); + hashmap_remove_value(m->jobs, UINT32_TO_PTR(j->id), j); return r; }