X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=libbb%2Fdie_if_bad_username.c;h=c1641d376ab7ca8998947037a7cd55caa3321c04;hb=42a8fd0db08ab8b45fec6eab4af841f99576b260;hp=251b1f06c03bdc36ae5188119d190f6e7fdb309e;hpb=dd5702d696b9ab5a5b3939d660658b7f0e6694ed;p=oweals%2Fbusybox.git diff --git a/libbb/die_if_bad_username.c b/libbb/die_if_bad_username.c index 251b1f06c..c1641d376 100644 --- a/libbb/die_if_bad_username.c +++ b/libbb/die_if_bad_username.c @@ -1,6 +1,6 @@ /* vi: set sw=4 ts=4: */ /* - * Ckeck user and group names for illegal characters + * Check user and group names for illegal characters * * Copyright (C) 2008 Tito Ragusa * @@ -16,19 +16,21 @@ * at the end of the username. */ -void die_if_bad_username(const char *name) +void FAST_FUNC die_if_bad_username(const char *name) { - int i = 0; - + goto skip; /* 1st char being dash isn't valid */ do { - if (!isalnum(*name) - && !(*name == '_') - && !(*name == '.') - && !(*name == '@') - && !(*name == '-' && i) - && !(*name == '$' && !*(name + 1)) - ) - bb_error_msg_and_die("illegal character '%c'", *name); - i++; + if (*name == '-') + continue; + skip: + if (isalnum(*name) + || *name == '_' + || *name == '.' + || *name == '@' + || (*name == '$' && !*(name + 1)) + ) { + continue; + } + bb_error_msg_and_die("illegal character '%c'", *name); } while (*++name); }