From bbe29b9896d5a6a3b10c999522bb0ac29e934b51 Mon Sep 17 00:00:00 2001 From: Trent Piepho Date: Tue, 8 Mar 2016 21:02:15 +0000 Subject: [PATCH] purge-locales: Handle empty locale directories better If a locale directory is empty, shell code like "for langdir in $$dir/*;" will loop once with langdir set to "path/to/dir/*", rather than not looping at all, which would obviously be the desired behavior. Then "grep -qx $${langdir##*/}" ungoes two shell expansions (how?) that transform the expression from "${langdir##*/}" to "*" to "list of all files in buildroot root dir". Which is most certainly not what this command was supposed to do. If one of those files happens to be an 8GB flash image, grep consumes all available memory and crashes trying to search it. Signed-off-by: Trent Piepho Signed-off-by: Peter Korsgaard --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0e4beb2d3b..daa32a41d8 100644 --- a/Makefile +++ b/Makefile @@ -583,7 +583,10 @@ define PURGE_LOCALES do \ for langdir in $$dir/*; \ do \ - grep -qx $${langdir##*/} $(LOCALE_WHITELIST) || rm -rf $$langdir; \ + if [ -e "$${langdir}" ]; \ + then \ + grep -qx "$${langdir##*/}" $(LOCALE_WHITELIST) || rm -rf $$langdir; \ + fi \ done; \ done if [ -d $(TARGET_DIR)/usr/share/X11/locale ]; \ -- 2.30.2