globfree() is a no-op if glob_t::gl_pathv is NULL. A failed glob may not
always initialize this member however, leading to potential memory
corruption.

Fix this by only freeing the glob_t if glob() had succeeded.

Signed-off-by: Ahmad Fatoum <[email protected]>
---
 common/startup.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/startup.c b/common/startup.c
index d170cb8a7c5a..871696968a14 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -345,9 +345,9 @@ static int run_init(void)
                        run_command(scr);
                        free(scr);
                }
-       }
 
-       globfree(&g);
+               globfree(&g);
+       }
 
        /* source matching script in /env/bmode/ */
        bmode = reboot_mode_get();
-- 
2.30.2


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to