aboutsummaryrefslogtreecommitdiff
path: root/toys.h
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2014-06-09 05:51:04 -0500
committerRob Landley <rob@landley.net>2014-06-09 05:51:04 -0500
commit89a62bf2907412cb562d22c875736357e314c8c8 (patch)
tree0dbb98c25b73f9320c090c7aeceb98ea2fe23fa6 /toys.h
parentc421b7068c5dd95baa10f9bd97e578d04ba48c70 (diff)
downloadtoybox-89a62bf2907412cb562d22c875736357e314c8c8.tar.gz
When locale is enabled, sprintf("%.123s", str) is counting characters, not bytes, so we can't globally enable locale without opening stack/heap smashing vulnerabilities. Make commands individually request setlocale() using TOYFLAGS instead.
Diffstat (limited to 'toys.h')
-rw-r--r--toys.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/toys.h b/toys.h
index 6666cfbf..9fd338ab 100644
--- a/toys.h
+++ b/toys.h
@@ -105,6 +105,10 @@ void toy_exec(char *argv[]);
#define TOYFLAG_NEEDROOT (1<<7)
#define TOYFLAG_ROOTONLY (TOYFLAG_STAYROOT|TOYFLAG_NEEDROOT)
+// Call setlocale to listen to environment variables.
+// This invalidates sprintf("%.*s", size, string) as a valid length constraint.
+#define TOYFLAG_LOCALE (1<<8)
+
// Array of available commands
extern struct toy_list {