]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
efivars: fix potential memory leak
authorLuca Boccassi <luca.boccassi@gmail.com>
Fri, 17 Oct 2025 09:23:28 +0000 (10:23 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Thu, 6 Nov 2025 21:26:42 +0000 (21:26 +0000)
If 'ret' is not passed, 'x' is leaked

Follow-up for c8d60ae79d1763c6ef16fdb306b65d909a769de8

CID#1621673

(cherry picked from commit 05d45875f74cfb7455d127a5229dca440986e689)

src/basic/efivars.c

index 8185a111d160ff860821a9c001e9fa38a5331437..252b9d3451f3794a87d54f19aa84d970fd955627 100644 (file)
@@ -164,9 +164,8 @@ int efi_get_variable(
 }
 
 int efi_get_variable_string(const char *variable, char **ret) {
-        _cleanup_free_ void *s = NULL;
+        _cleanup_free_ void *s = NULL, *x = NULL;
         size_t ss = 0;
-        char *x;
         int r;
 
         assert(variable);
@@ -180,7 +179,7 @@ int efi_get_variable_string(const char *variable, char **ret) {
                 return -ENOMEM;
 
         if (ret)
-                *ret = x;
+                *ret = TAKE_PTR(x);
 
         return 0;
 }