35 lines
1.1 KiB
Diff
35 lines
1.1 KiB
Diff
From b9a4d13a300665098f04bf5108929ea54668b1bf Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com>
|
|
Date: Wed, 13 Apr 2022 17:56:32 +0200
|
|
Subject: [PATCH] libselinux: free memory on selabel_open(3) failure
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
If selabel_open(3) fails, e.g. when a specfile has the wrong file
|
|
permissions, free the memory allocated for digests.
|
|
|
|
Fixes: e40bbea9 ("libselinux: Add selabel_digest function")
|
|
Acked-by: James Carter <jwcart2@gmail.com>
|
|
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
|
|
---
|
|
src/label.c | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/src/label.c b/src/label.c
|
|
index a03192e5..586e5e5e 100644
|
|
--- a/src/label.c
|
|
+++ b/src/label.c
|
|
@@ -226,6 +226,8 @@ struct selabel_handle *selabel_open(unsigned int backend,
|
|
rec->digest = selabel_is_digest_set(opts, nopts, rec->digest);
|
|
|
|
if ((*initfuncs[backend])(rec, opts, nopts)) {
|
|
+ if (rec->digest)
|
|
+ selabel_digest_fini(rec->digest);
|
|
free(rec->spec_file);
|
|
free(rec);
|
|
rec = NULL;
|
|
--
|
|
2.27.0
|
|
|