This is an automated email from the git hooks/post-receive script.

guillem pushed a commit to branch master
in repository dpkg.

View the commit online:
https://git.dpkg.org/cgit/dpkg/dpkg.git/commit/?id=55700d23274a6487f5f91b43074b9027be1371d4

commit 55700d23274a6487f5f91b43074b9027be1371d4
Author: Guillem Jover <guil...@debian.org>
AuthorDate: Tue Aug 25 01:13:12 2020 +0200

    u-a: Fix short-lived memory leaks for alternative structs
    
    Warned-by: gcc ASAN
---
 utils/update-alternatives.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/utils/update-alternatives.c b/utils/update-alternatives.c
index fd4146d11..569aca4ab 100644
--- a/utils/update-alternatives.c
+++ b/utils/update-alternatives.c
@@ -1484,6 +1484,7 @@ alternative_load(struct alternative *a, enum altdb_flags 
flags)
                syserr(_("cannot stat file '%s'"), ctx.filename);
        if (st.st_size == 0) {
                altdb_context_free(&ctx);
+               alternative_reset(a);
                return false;
        }
 
@@ -3061,6 +3062,7 @@ main(int argc, char **argv)
                 * link group file. */
                if (!alternative_load(a, ALTDB_WARN_PARSER)) {
                        verbose(_("no alternatives for %s"), a->master_name);
+                       alternative_free(a);
                        exit(0);
                }
        } else if (action == ACTION_INSTALL) {
@@ -3104,6 +3106,7 @@ main(int argc, char **argv)
                        /* Alternative already exists, check if anything got
                         * updated. */
                        alternative_evolve(a, inst_alt, current_choice, 
fileset);
+                       alternative_free(inst_alt);
                } else {
                        /* Alternative doesn't exist, create from parameters. */
                        alternative_free(a);
@@ -3123,5 +3126,8 @@ main(int argc, char **argv)
        if (modifies_alt)
                alternative_update(a, current_choice, new_choice);
 
+       if (a)
+               alternative_free(a);
+
        return 0;
 }

-- 
Dpkg.Org's dpkg

Reply via email to