1
0
mirror of http://galexander.org/git/simplesshd.git synced 2024-11-27 17:58:13 +00:00

use configuration values instead of getpwnam()

This commit is contained in:
Greg Alexander 2014-12-16 23:05:21 -05:00
parent ff446269b3
commit c222b4b074
7 changed files with 26 additions and 3 deletions

1
NOTES
View File

@ -73,7 +73,6 @@ whatever. It's not guaranteed to interrupt select(), and I'm not keen on
adding an arbitrary timeout/polling feature to it. adding an arbitrary timeout/polling feature to it.
XXX - disable utmp/wtmp XXX - disable utmp/wtmp
XXX - disable /etc/passwd (accept all usernames the same, and use the explicitly-provided shell and home directories)
XXX - visit XXX in jni/interface.c XXX - visit XXX in jni/interface.c
XXX - allow user to specify parameters for dropbear XXX - allow user to specify parameters for dropbear
XXX - convert UI to use proper preferences templates, and have ...->settings instead of putting it on the home screen XXX - convert UI to use proper preferences templates, and have ...->settings instead of putting it on the home screen

View File

@ -509,6 +509,7 @@ void fill_passwd(const char* username) {
if (ses.authstate.pw_passwd) if (ses.authstate.pw_passwd)
m_free(ses.authstate.pw_passwd); m_free(ses.authstate.pw_passwd);
#if 0
pw = getpwnam(username); pw = getpwnam(username);
if (!pw) { if (!pw) {
return; return;
@ -533,6 +534,14 @@ void fill_passwd(const char* username) {
} }
ses.authstate.pw_passwd = m_strdup(passwd_crypt); ses.authstate.pw_passwd = m_strdup(passwd_crypt);
} }
#else /* 0 */
ses.authstate.pw_uid = 0;
ses.authstate.pw_gid = 0;
ses.authstate.pw_name = m_strdup("user");
ses.authstate.pw_dir = m_strdup(conf_home);
ses.authstate.pw_shell = m_strdup(conf_shell);
ses.authstate.pw_passwd = m_strdup("!!");
#endif /* 0 */
} }
/* Called when channels are modified */ /* Called when channels are modified */

View File

@ -5,8 +5,6 @@
#ifndef _OPTIONS_H_ #ifndef _OPTIONS_H_
#define _OPTIONS_H_ #define _OPTIONS_H_
extern const char *conf_path_file(const char *fn); /* in jni/interface.c */
/* Define compile-time options below - the "#ifndef DROPBEAR_XXX .... #endif" /* Define compile-time options below - the "#ifndef DROPBEAR_XXX .... #endif"
* parts are to allow for commandline -DDROPBEAR_XXX options etc. */ * parts are to allow for commandline -DDROPBEAR_XXX options etc. */

View File

@ -261,6 +261,7 @@ static int checkusername(unsigned char *username, unsigned int userlen) {
} }
/* check if we are running as non-root, and login user is different from the server */ /* check if we are running as non-root, and login user is different from the server */
#if 0
uid = geteuid(); uid = geteuid();
if (uid != 0 && uid != ses.authstate.pw_uid) { if (uid != 0 && uid != ses.authstate.pw_uid) {
TRACE(("running as nonroot, only server uid is allowed")) TRACE(("running as nonroot, only server uid is allowed"))
@ -308,6 +309,7 @@ static int checkusername(unsigned char *username, unsigned int userlen) {
goodshell: goodshell:
endusershell(); endusershell();
TRACE(("matching shell")) TRACE(("matching shell"))
#endif /* 0 */
TRACE(("uid = %d", ses.authstate.pw_uid)) TRACE(("uid = %d", ses.authstate.pw_uid))
TRACE(("leave checkusername")) TRACE(("leave checkusername"))

View File

@ -202,6 +202,7 @@ static int checkpubkey(unsigned char* algo, unsigned int algolen,
goto out; goto out;
} }
#if 0
/* check file permissions, also whether file exists */ /* check file permissions, also whether file exists */
if (checkpubkeyperms() == DROPBEAR_FAILURE) { if (checkpubkeyperms() == DROPBEAR_FAILURE) {
TRACE(("bad authorized_keys permissions, or file doesn't exist")) TRACE(("bad authorized_keys permissions, or file doesn't exist"))
@ -216,6 +217,11 @@ static int checkpubkey(unsigned char* algo, unsigned int algolen,
filename = m_malloc(len + 22); filename = m_malloc(len + 22);
snprintf(filename, len + 22, "%s/.ssh/authorized_keys", snprintf(filename, len + 22, "%s/.ssh/authorized_keys",
ses.authstate.pw_dir); ses.authstate.pw_dir);
#else /* 0 */
len = strlen(conf_path);
filename = m_malloc(len + 40);
snprintf(filename, len + 40, "%s/authorized_keys", conf_path);
#endif /* 0 */
/* open the file */ /* open the file */
authfile = fopen(filename, "r"); authfile = fopen(filename, "r");

View File

@ -588,10 +588,12 @@ static int sessionpty(struct ChanSess * chansess) {
dropbear_exit("Out of memory"); /* TODO disconnect */ dropbear_exit("Out of memory"); /* TODO disconnect */
} }
#if 0
pw = getpwnam(ses.authstate.pw_name); pw = getpwnam(ses.authstate.pw_name);
if (!pw) if (!pw)
dropbear_exit("getpwnam failed after succeeding previously"); dropbear_exit("getpwnam failed after succeeding previously");
pty_setowner(pw, chansess->tty); pty_setowner(pw, chansess->tty);
#endif /* 0 */
/* Set up the rows/col counts */ /* Set up the rows/col counts */
sessionwinchange(chansess); sessionwinchange(chansess);

View File

@ -28,4 +28,11 @@
#define DBMULTI_dropbear 1 #define DBMULTI_dropbear 1
#define DROPBEAR_MULTI 1 #define DROPBEAR_MULTI 1
extern const char *conf_path_file(const char *fn); /* in jni/interface.c */
extern const char *conf_path;
extern const char *conf_shell;
extern const char *conf_home;
#endif /* __CONFIG_H__ */ #endif /* __CONFIG_H__ */