* [PATCH 0/5 v3] defaultenv-2: add login support
@ 2013-09-16 17:48 Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 1/5] globalvar: add globalvar_add_simple_int/bool/enum/ip support Jean-Christophe PLAGNIOL-VILLARD
2013-09-18 7:25 ` [PATCH 0/5 v3] " Sascha Hauer
0 siblings, 2 replies; 7+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-09-16 17:48 UTC (permalink / raw)
To: barebox
HI,
v3:
use glabalvar type params
this will allow to request password when try to interrupt barebox auto
boot
This will also allow to set a default password if none in the env
and if no /env/bin/init is present request a login
The following changes since commit f0b68f0008f94606f6b927590d1fafb34b1abc55:
usb-imx28: fix enable (2013-09-10 21:03:59 +0200)
are available in the git repository at:
git://git.jcrosoft.org/barebox.git delivery/login
for you to fetch changes up to 8d1ab8f59cc9f3a22e191d389433ca78f74bbc57:
defaultenv-2: add login support (2013-09-17 01:01:08 +0800)
----------------------------------------------------------------
Jean-Christophe PLAGNIOL-VILLARD (5):
globalvar: add globalvar_add_simple_int/bool/enum/ip support
login: add globalvar timeout support
login: disable input console if password wrong
login/passwd: add default password support
defaultenv-2: add login support
commands/login.c | 24 ++++++++++++++++++++++--
commands/passwd.c | 8 ++++----
common/Kconfig | 5 +++++
common/Makefile | 20 ++++++++++++++++++++
common/console.c | 6 ++++++
common/console_common.c | 33 +++++++++++++++++++++++++++++++++
common/console_simple.c | 9 ++++++++-
common/globalvar.c | 2 +-
common/password.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
common/startup.c | 2 ++
defaultenv-2/base/bin/init | 18 ++++++++++++++++++
include/console.h | 3 +++
include/globalvar.h | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
include/password.h | 22 +++++++++++++++++-----
14 files changed, 303 insertions(+), 26 deletions(-)
Best Regards,
J.
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/5] globalvar: add globalvar_add_simple_int/bool/enum/ip support
2013-09-16 17:48 [PATCH 0/5 v3] defaultenv-2: add login support Jean-Christophe PLAGNIOL-VILLARD
@ 2013-09-16 17:49 ` Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 2/5] login: add globalvar timeout support Jean-Christophe PLAGNIOL-VILLARD
` (3 more replies)
2013-09-18 7:25 ` [PATCH 0/5 v3] " Sascha Hauer
1 sibling, 4 replies; 7+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-09-16 17:49 UTC (permalink / raw)
To: barebox
so we can types var
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
common/globalvar.c | 2 +-
include/globalvar.h | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 84 insertions(+), 1 deletion(-)
diff --git a/common/globalvar.c b/common/globalvar.c
index edb66dd..6ef4a6a 100644
--- a/common/globalvar.c
+++ b/common/globalvar.c
@@ -6,7 +6,7 @@
#include <magicvar.h>
#include <generated/utsrelease.h>
-static struct device_d global_device = {
+struct device_d global_device = {
.name = "global",
.id = DEVICE_ID_SINGLE,
};
diff --git a/include/globalvar.h b/include/globalvar.h
index c2a13b3..298e8ef 100644
--- a/include/globalvar.h
+++ b/include/globalvar.h
@@ -2,6 +2,9 @@
#define __GLOBALVAR_H
#include <param.h>
+#include <driver.h>
+
+extern struct device_d global_device;
#ifdef CONFIG_GLOBALVAR
int globalvar_add_simple(const char *name, const char *value);
@@ -12,12 +15,92 @@ int globalvar_add(const char *name,
unsigned long flags);
char *globalvar_get_match(const char *match, const char *separator);
void globalvar_set_match(const char *match, const char *val);
+
+static inline int globalvar_add_simple_int(const char *name,
+ int *value, const char *format)
+{
+ struct param_d *p;
+
+ p = dev_add_param_int(&global_device, name, NULL, NULL,
+ value, format, NULL);
+
+ if (IS_ERR(p))
+ return PTR_ERR(p);
+
+ return 0;
+}
+
+static inline int globalvar_add_simple_bool(const char *name,
+ int *value)
+{
+ struct param_d *p;
+
+ p = dev_add_param_bool(&global_device, name, NULL, NULL,
+ value, NULL);
+
+ if (IS_ERR(p))
+ return PTR_ERR(p);
+
+ return 0;
+}
+
+static inline int globalvar_add_simple_enum(const char *name,
+ int *value, const char **names, int max)
+{
+ struct param_d *p;
+
+ p = dev_add_param_enum(&global_device, name, NULL, NULL,
+ value, names, max, NULL);
+
+ if (IS_ERR(p))
+ return PTR_ERR(p);
+
+ return 0;
+}
+
+static inline int globalvar_add_simple_ip(const char *name,
+ IPaddr_t *ip)
+{
+ struct param_d *p;
+
+ p = dev_add_param_ip(&global_device, name, NULL, NULL,
+ ip, NULL);
+
+ if (IS_ERR(p))
+ return PTR_ERR(p);
+
+ return 0;
+}
#else
static inline int globalvar_add_simple(const char *name, const char *value)
{
return 0;
}
+static inline int globalvar_add_simple_int(const char *name,
+ int *value, const char *format)
+{
+ return 0;
+}
+
+static inline int globalvar_add_simple_bool(const char *name,
+ int *value)
+{
+ return 0;
+}
+
+static inline int globalvar_add_simple_enum(const char *name,
+ int *value, const char **names, int max)
+{
+ return 0;
+}
+
+static inline int globalvar_add_simple_ip(const char *name,
+ IPaddr_t *ip)
+{
+ return 0;
+}
+
static inline int globalvar_add(const char *name,
int (*set)(struct device_d *dev, struct param_d *p, const char *val),
const char *(*get)(struct device_d *, struct param_d *p),
--
1.8.4.rc1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/5] login: add globalvar timeout support
2013-09-16 17:49 ` [PATCH 1/5] globalvar: add globalvar_add_simple_int/bool/enum/ip support Jean-Christophe PLAGNIOL-VILLARD
@ 2013-09-16 17:49 ` Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 3/5] login: disable input console if password wrong Jean-Christophe PLAGNIOL-VILLARD
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-09-16 17:49 UTC (permalink / raw)
To: barebox
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
commands/login.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/commands/login.c b/commands/login.c
index fb6bb35..485def2 100644
--- a/commands/login.c
+++ b/commands/login.c
@@ -20,6 +20,10 @@
#include <complete.h>
#include <password.h>
#include <getopt.h>
+#include <environment.h>
+#include <globalvar.h>
+#include <magicvar.h>
+#include <init.h>
#define PASSWD_MAX_LENGTH (128 + 1)
@@ -31,11 +35,13 @@
#define LOGIN_MODE HIDE
#endif
+static int login_timeout = 0;
+
static int do_login(int argc, char *argv[])
{
unsigned char passwd[PASSWD_MAX_LENGTH];
int passwd_len, opt;
- int timeout = 0;
+ int timeout = login_timeout;
char *timeout_cmd = "boot";
if (!is_passwd_enable()) {
@@ -80,3 +86,13 @@ BAREBOX_CMD_START(login)
BAREBOX_CMD_HELP(cmd_login_help)
BAREBOX_CMD_COMPLETE(empty_complete)
BAREBOX_CMD_END
+
+static int login_global_init(void)
+{
+ globalvar_add_simple_int("login.timeout", &login_timeout, "%d");
+
+ return 0;
+}
+late_initcall(login_global_init);
+
+BAREBOX_MAGICVAR_NAMED(global_login_timeout, global.login.timeout, "timeout to type the password");
--
1.8.4.rc1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/5] login: disable input console if password wrong
2013-09-16 17:49 ` [PATCH 1/5] globalvar: add globalvar_add_simple_int/bool/enum/ip support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 2/5] login: add globalvar timeout support Jean-Christophe PLAGNIOL-VILLARD
@ 2013-09-16 17:49 ` Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 4/5] login/passwd: add default password support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:50 ` [PATCH 5/5] defaultenv-2: add login support Jean-Christophe PLAGNIOL-VILLARD
3 siblings, 0 replies; 7+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-09-16 17:49 UTC (permalink / raw)
To: barebox
so we guarantee that barebox is secured again user interaction
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
commands/login.c | 6 +++++-
common/console.c | 6 ++++++
common/console_common.c | 33 +++++++++++++++++++++++++++++++++
common/console_simple.c | 9 ++++++++-
common/startup.c | 2 ++
include/console.h | 3 +++
6 files changed, 57 insertions(+), 2 deletions(-)
diff --git a/commands/login.c b/commands/login.c
index 485def2..b616bf1 100644
--- a/commands/login.c
+++ b/commands/login.c
@@ -24,6 +24,7 @@
#include <globalvar.h>
#include <magicvar.h>
#include <init.h>
+#include <console.h>
#define PASSWD_MAX_LENGTH (128 + 1)
@@ -44,6 +45,7 @@ static int do_login(int argc, char *argv[])
int timeout = login_timeout;
char *timeout_cmd = "boot";
+ console_allow_input(true);
if (!is_passwd_enable()) {
puts("login: password not set\n");
return 0;
@@ -64,8 +66,10 @@ static int do_login(int argc, char *argv[])
puts("Password: ");
passwd_len = password(passwd, PASSWD_MAX_LENGTH, LOGIN_MODE, timeout);
- if (passwd_len < 0)
+ if (passwd_len < 0) {
+ console_allow_input(false);
run_command(timeout_cmd, 0);
+ }
if (check_passwd(passwd, passwd_len))
return 0;
diff --git a/common/console.c b/common/console.c
index 6ca94e2..4931829 100644
--- a/common/console.c
+++ b/common/console.c
@@ -236,6 +236,9 @@ int getc(void)
unsigned char ch;
uint64_t start;
+ if (unlikely(!console_is_input_allow()))
+ return -EPERM;
+
/*
* For 100us we read the characters from the serial driver
* into a kfifo. This helps us not to lose characters
@@ -270,6 +273,9 @@ EXPORT_SYMBOL(fgetc);
int tstc(void)
{
+ if (unlikely(!console_is_input_allow()))
+ return 0;
+
return kfifo_len(console_input_fifo) || tstc_raw();
}
EXPORT_SYMBOL(tstc);
diff --git a/common/console_common.c b/common/console_common.c
index d139d1a..d1b823e 100644
--- a/common/console_common.c
+++ b/common/console_common.c
@@ -21,9 +21,42 @@
#include <common.h>
#include <fs.h>
#include <errno.h>
+#include <console.h>
+#include <init.h>
+#include <environment.h>
+#include <globalvar.h>
+#include <magicvar.h>
+#include <password.h>
#ifndef CONFIG_CONSOLE_NONE
+static int console_input_allow;
+
+static int console_global_init(void)
+{
+ if (IS_ENABLED(CONFIG_CMD_LOGIN) && is_passwd_enable())
+ console_input_allow = 0;
+ else
+ console_input_allow = 1;
+
+ globalvar_add_simple_bool("console.input_allow", &console_input_allow);
+
+ return 0;
+}
+late_initcall(console_global_init);
+
+BAREBOX_MAGICVAR_NAMED(global_console_input_allow, global.console.input_allow, "console input allowed");
+
+bool console_is_input_allow(void)
+{
+ return console_input_allow;
+}
+
+void console_allow_input(bool val)
+{
+ console_input_allow = val;
+}
+
int printf(const char *fmt, ...)
{
va_list args;
diff --git a/common/console_simple.c b/common/console_simple.c
index 101064b..bf6491d 100644
--- a/common/console_simple.c
+++ b/common/console_simple.c
@@ -3,6 +3,7 @@
#include <fs.h>
#include <errno.h>
#include <debug_ll.h>
+#include <console.h>
LIST_HEAD(console_list);
EXPORT_SYMBOL(console_list);
@@ -40,6 +41,9 @@ EXPORT_SYMBOL(console_putc);
int tstc(void)
{
+ if (unlikely(!console_is_input_allow()))
+ return 0;
+
if (!console)
return 0;
@@ -48,7 +52,10 @@ int tstc(void)
EXPORT_SYMBOL(tstc);
int getc(void)
-{
+
+ if (unlikely(!console_is_input_allow()))
+ return -EPERM;
+
if (!console)
return -EINVAL;
return console->getc(console);
diff --git a/common/startup.c b/common/startup.c
index 9b33a92..0a36c07 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -138,6 +138,8 @@ void __noreturn start_barebox(void)
run_command("source /env/bin/init", 0);
} else {
pr_err("/env/bin/init not found\n");
+ if (IS_ENABLED(CONFIG_CMD_LOGIN))
+ while(run_command("login -t 0", 0));
}
}
diff --git a/include/console.h b/include/console.h
index 72cf99f..e94c5ae 100644
--- a/include/console.h
+++ b/include/console.h
@@ -54,4 +54,7 @@ extern struct list_head console_list;
#define CFG_PBSIZE (CONFIG_CBSIZE+sizeof(CONFIG_PROMPT)+16)
+bool console_is_input_allow(void);
+void console_allow_input(bool val);
+
#endif
--
1.8.4.rc1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 4/5] login/passwd: add default password support
2013-09-16 17:49 ` [PATCH 1/5] globalvar: add globalvar_add_simple_int/bool/enum/ip support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 2/5] login: add globalvar timeout support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 3/5] login: disable input console if password wrong Jean-Christophe PLAGNIOL-VILLARD
@ 2013-09-16 17:49 ` Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:50 ` [PATCH 5/5] defaultenv-2: add login support Jean-Christophe PLAGNIOL-VILLARD
3 siblings, 0 replies; 7+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-09-16 17:49 UTC (permalink / raw)
To: barebox
even if the env is broken you will have a password
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
commands/passwd.c | 8 ++---
common/Kconfig | 5 +++
common/Makefile | 20 ++++++++++++
common/password.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++--------
include/password.h | 22 ++++++++++---
5 files changed, 127 insertions(+), 22 deletions(-)
diff --git a/commands/passwd.c b/commands/passwd.c
index baccfa6..368c401 100644
--- a/commands/passwd.c
+++ b/commands/passwd.c
@@ -63,7 +63,7 @@ static int do_passwd(int argc, char *argv[])
goto err;
}
- ret = set_passwd(passwd1, passwd1_len);
+ ret = set_env_passwd(passwd1, passwd1_len);
if (ret < 0) {
puts("Sorry, passwords write failed\n");
@@ -78,15 +78,15 @@ err:
return 1;
disable:
- passwd_disable();
+ passwd_env_disable();
puts("passwd: password disabled\n");
return ret;
}
static const __maybe_unused char cmd_passwd_help[] =
"Usage: passwd\n"
-"passwd allow you to specify a password\n"
-"to disable it put an empty password\n"
+"passwd allow you to specify a password in the env\n"
+"to disable it put an empty password will still use the default password if set\n"
;
BAREBOX_CMD_START(passwd)
diff --git a/common/Kconfig b/common/Kconfig
index dd70578..5d92284 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -385,6 +385,11 @@ config PASSWORD
help
allow you to have password protection framework
+config PASSWORD_DEFAULT
+ string
+ prompt "Password default"
+ depends on PASSWORD
+
if PASSWORD
choice
diff --git a/common/Makefile b/common/Makefile
index 64eacc3..9a9e3fe 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -114,6 +114,26 @@ cmd_env_h = cat $< | (cd $(obj) && $(objtree)/scripts/bin2c default_environment)
$(obj)/barebox_default_env.h: $(obj)/barebox_default_env$(barebox_default_env_comp) FORCE
$(call if_changed,env_h)
+quiet_cmd_pwd_h = PWDH $@
+ifneq ($(CONFIG_PASSWORD_DEFAULT),"")
+PASSWD_FILE := $(shell cd $(srctree); find $(CONFIG_PASSWORD_DEFAULT) -type f)
+cmd_pwd_h = echo -n "const char default_passwd[] = \"" > $@; \
+ cat $< | tr -d '\n' >> $@; \
+ echo "\";" >> $@
+
+include/generated/passwd.h: $(PASSWD_FILE)
+ $(call if_changed,pwd_h)
+else
+cmd_pwd_h = echo "const char default_passwd[] = \"\";" > $@
+
+include/generated/passwd.h: FORCE
+ $(call if_changed,pwd_h)
+endif
+
+targets += include/generated/passwd.h
+
+$(obj)/password.o: include/generated/passwd.h
+
# dependencies on generated files need to be listed explicitly
$(obj)/version.o: include/generated/compile.h
diff --git a/common/password.c b/common/password.c
index d157a11..9c1e54a 100644
--- a/common/password.c
+++ b/common/password.c
@@ -25,6 +25,7 @@
#include <malloc.h>
#include <xfuncs.h>
#include <clock.h>
+#include <generated/passwd.h>
#if defined(CONFIG_PASSWD_SUM_MD5)
#define PASSWD_SUM "md5"
@@ -97,7 +98,13 @@ int password(unsigned char *passwd, size_t length, int flags, int timeout)
}
EXPORT_SYMBOL(password);
-int is_passwd_enable(void)
+int is_passwd_default_enable(void)
+{
+ return strlen(default_passwd) > 0;
+}
+EXPORT_SYMBOL(is_passwd_default_enable);
+
+int is_passwd_env_enable(void)
{
int fd;
@@ -110,13 +117,13 @@ int is_passwd_enable(void)
return 1;
}
-EXPORT_SYMBOL(is_passwd_enable);
+EXPORT_SYMBOL(is_passwd_env_enable);
-int passwd_disable(void)
+int passwd_env_disable(void)
{
return unlink(PASSWD_FILE);
}
-EXPORT_SYMBOL(passwd_disable);
+EXPORT_SYMBOL(passwd_env_disable);
static unsigned char to_digit(unsigned char c)
{
@@ -140,6 +147,43 @@ static unsigned char to_hexa(unsigned char c)
int read_passwd(unsigned char *sum, size_t length)
{
+ if (is_passwd_env_enable())
+ return read_env_passwd(sum, length);
+ else if (is_passwd_default_enable())
+ return read_default_passwd(sum, length);
+ else
+ return -EINVAL;
+}
+
+int read_default_passwd(unsigned char *sum, size_t length)
+{
+ int i = 0;
+ int len = strlen(default_passwd);
+ unsigned char *buf = (unsigned char *)default_passwd;
+ unsigned char c;
+
+ if (!sum || length < 1)
+ return -EINVAL;
+
+ for (i = 0; i < len && length > 0; i++) {
+ c = buf[i];
+ i++;
+
+ *sum = to_digit(c) << 4;
+
+ c = buf[i];
+
+ *sum |= to_digit(c);
+ sum++;
+ length--;
+ }
+
+ return 0;
+}
+EXPORT_SYMBOL(read_default_passwd);
+
+int read_env_passwd(unsigned char *sum, size_t length)
+{
int fd;
int ret = 0;
unsigned char c;
@@ -178,9 +222,9 @@ exit:
return ret;
}
-EXPORT_SYMBOL(read_passwd);
+EXPORT_SYMBOL(read_env_passwd);
-int write_passwd(unsigned char *sum, size_t length)
+int write_env_passwd(unsigned char *sum, size_t length)
{
int fd;
unsigned char c;
@@ -227,9 +271,9 @@ exit:
return ret;
}
-EXPORT_SYMBOL(write_passwd);
+EXPORT_SYMBOL(write_env_passwd);
-int check_passwd(unsigned char* passwd, size_t length)
+static int __check_passwd(unsigned char* passwd, size_t length, int std)
{
struct digest *d;
unsigned char *passwd1_sum;
@@ -256,7 +300,10 @@ int check_passwd(unsigned char* passwd, size_t length)
d->final(d, passwd1_sum);
- ret = read_passwd(passwd2_sum, d->length);
+ if (std)
+ ret = read_env_passwd(passwd2_sum, d->length);
+ else
+ ret = read_default_passwd(passwd2_sum, d->length);
if (ret < 0)
goto err2;
@@ -271,9 +318,30 @@ err1:
return ret;
}
-EXPORT_SYMBOL(check_passwd);
-int set_passwd(unsigned char* passwd, size_t length)
+int check_default_passwd(unsigned char* passwd, size_t length)
+{
+ return __check_passwd(passwd, length, 0);
+}
+EXPORT_SYMBOL(check_default_passwd);
+
+int check_env_passwd(unsigned char* passwd, size_t length)
+{
+ return __check_passwd(passwd, length, 1);
+}
+EXPORT_SYMBOL(check_env_passwd);
+
+int check_passwd(unsigned char* passwd, size_t length)
+{
+ if (is_passwd_env_enable())
+ return check_env_passwd(passwd, length);
+ else if (is_passwd_default_enable())
+ return check_default_passwd(passwd, length);
+ else
+ return -EINVAL;
+}
+
+int set_env_passwd(unsigned char* passwd, size_t length)
{
struct digest *d;
unsigned char *passwd_sum;
@@ -292,10 +360,10 @@ int set_passwd(unsigned char* passwd, size_t length)
d->final(d, passwd_sum);
- ret = write_passwd(passwd_sum, d->length);
+ ret = write_env_passwd(passwd_sum, d->length);
free(passwd_sum);
return ret;
}
-EXPORT_SYMBOL(set_passwd);
+EXPORT_SYMBOL(set_env_passwd);
diff --git a/include/password.h b/include/password.h
index df03cd7..0dd1054 100644
--- a/include/password.h
+++ b/include/password.h
@@ -28,11 +28,23 @@
int password(unsigned char *passwd, size_t length, int flags, int timeout);
int read_passwd(unsigned char *sum, size_t length);
-int write_passwd(unsigned char *sum, size_t length);
-
-int is_passwd_enable(void);
-int passwd_disable(void);
int check_passwd(unsigned char* passwd, size_t length);
-int set_passwd(unsigned char* passwd, size_t length);
+
+int read_env_passwd(unsigned char *sum, size_t length);
+int write_env_passwd(unsigned char *sum, size_t length);
+
+int read_default_passwd(unsigned char *sum, size_t length);
+int is_passwd_default_enable(void);
+int check_default_passwd(unsigned char* passwd, size_t length);
+
+int is_passwd_env_enable(void);
+int passwd_env_disable(void);
+int check_env_passwd(unsigned char* passwd, size_t length);
+int set_env_passwd(unsigned char* passwd, size_t length);
+
+static inline int is_passwd_enable(void)
+{
+ return is_passwd_default_enable() || is_passwd_env_enable();
+}
#endif /* __PASSWORD_H__ */
--
1.8.4.rc1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 5/5] defaultenv-2: add login support
2013-09-16 17:49 ` [PATCH 1/5] globalvar: add globalvar_add_simple_int/bool/enum/ip support Jean-Christophe PLAGNIOL-VILLARD
` (2 preceding siblings ...)
2013-09-16 17:49 ` [PATCH 4/5] login/passwd: add default password support Jean-Christophe PLAGNIOL-VILLARD
@ 2013-09-16 17:50 ` Jean-Christophe PLAGNIOL-VILLARD
3 siblings, 0 replies; 7+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-09-16 17:50 UTC (permalink / raw)
To: barebox
request password to login is a timeout is specified and /env/etc/passwd
present
ensure we have not console access execpt when allowed
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
defaultenv-2/base/bin/init | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/defaultenv-2/base/bin/init b/defaultenv-2/base/bin/init
index ca02ba6..81b3434 100644
--- a/defaultenv-2/base/bin/init
+++ b/defaultenv-2/base/bin/init
@@ -16,14 +16,24 @@ global editcmd=sedit
[ -e /env/config-board ] && /env/config-board
/env/config
+# request password to login if a timeout is specified and password set
+if [ -n ${global.login.timeout} ]; then
+ [ ${global.login.timeout} -gt 0 ] && login_cmd=login
+fi
+# allow the input if not
+[ -n ${global.console.input_allow} ] && global.console.input_allow=1
+
# allow to stop the boot before execute the /env/init/*
# but without waiting
timeout -s -a -v key 0
if [ "${key}" = "q" ]; then
+ ${login_cmd}
exit
fi
+[ -n ${login_cmd} ] && global.console.input_allow=0
+
for i in /env/init/*; do
. $i
done
@@ -34,10 +44,15 @@ else
echo -e -n "\nHit any key to stop autoboot: "
fi
+[ -n ${login_cmd} ] && global.console.input_allow=1
+
timeout -a $global.autoboot_timeout -v key
autoboot="$?"
+[ -n ${login_cmd} ] && global.console.input_allow=0
+
if [ "${key}" = "q" ]; then
+ ${login_cmd}
exit
fi
@@ -46,9 +61,12 @@ if [ "$autoboot" = 0 ]; then
fi
if [ -e /env/menu ]; then
+ ${login_cmd}
if [ "${key}" != "m" ]; then
echo -e "\ntype exit to get to the menu"
sh
fi
/env/menu/mainmenu
fi
+
+${login_cmd}
--
1.8.4.rc1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5 v3] defaultenv-2: add login support
2013-09-16 17:48 [PATCH 0/5 v3] defaultenv-2: add login support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 1/5] globalvar: add globalvar_add_simple_int/bool/enum/ip support Jean-Christophe PLAGNIOL-VILLARD
@ 2013-09-18 7:25 ` Sascha Hauer
1 sibling, 0 replies; 7+ messages in thread
From: Sascha Hauer @ 2013-09-18 7:25 UTC (permalink / raw)
To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox
On Mon, Sep 16, 2013 at 07:48:24PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> HI,
>
> v3:
> use glabalvar type params
>
> this will allow to request password when try to interrupt barebox auto
> boot
>
> This will also allow to set a default password if none in the env
> and if no /env/bin/init is present request a login
>
> The following changes since commit f0b68f0008f94606f6b927590d1fafb34b1abc55:
>
> usb-imx28: fix enable (2013-09-10 21:03:59 +0200)
>
> are available in the git repository at:
>
> git://git.jcrosoft.org/barebox.git delivery/login
>
> for you to fetch changes up to 8d1ab8f59cc9f3a22e191d389433ca78f74bbc57:
>
> defaultenv-2: add login support (2013-09-17 01:01:08 +0800)
Applied, thanks.
include/globalvar lacked a #include <linux/err.h>. Added this while
applying.
Sascha
>
> ----------------------------------------------------------------
> Jean-Christophe PLAGNIOL-VILLARD (5):
> globalvar: add globalvar_add_simple_int/bool/enum/ip support
> login: add globalvar timeout support
> login: disable input console if password wrong
> login/passwd: add default password support
> defaultenv-2: add login support
>
> commands/login.c | 24 ++++++++++++++++++++++--
> commands/passwd.c | 8 ++++----
> common/Kconfig | 5 +++++
> common/Makefile | 20 ++++++++++++++++++++
> common/console.c | 6 ++++++
> common/console_common.c | 33 +++++++++++++++++++++++++++++++++
> common/console_simple.c | 9 ++++++++-
> common/globalvar.c | 2 +-
> common/password.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
> common/startup.c | 2 ++
> defaultenv-2/base/bin/init | 18 ++++++++++++++++++
> include/console.h | 3 +++
> include/globalvar.h | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> include/password.h | 22 +++++++++++++++++-----
> 14 files changed, 303 insertions(+), 26 deletions(-)
>
> Best Regards,
> J.
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-09-18 7:25 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-16 17:48 [PATCH 0/5 v3] defaultenv-2: add login support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 1/5] globalvar: add globalvar_add_simple_int/bool/enum/ip support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 2/5] login: add globalvar timeout support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 3/5] login: disable input console if password wrong Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:49 ` [PATCH 4/5] login/passwd: add default password support Jean-Christophe PLAGNIOL-VILLARD
2013-09-16 17:50 ` [PATCH 5/5] defaultenv-2: add login support Jean-Christophe PLAGNIOL-VILLARD
2013-09-18 7:25 ` [PATCH 0/5 v3] " Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox