options: Complete the transition to numeric toggles (`#if')

For the sake of review, this commit alters only the code; the affiliated
comments within the source files also need to be updated, but doing so
now would obscure the operational changes that have been made here.

* All on/off options have been switched to the numeric `#if' variant;
  that is the only way to make this `default_options.h.in' thing work
  in a reasonable manner.

* There is now some very minor compile-time checking of the user's
  choice of options.

* NO_FAST_EXPTMOD doesn't seem to be used, so it has been removed.

* ENABLE_USER_ALGO_LIST was supposed to be renamed DROPBEAR_USER_ALGO_LIST,
  and this commit completes that work.

* DROPBEAR_FUZZ seems to be a relatively new, as-yet undocumented option,
  which was added by the following commit:

    commit 6e0b539e9c
    Author: Matt Johnston <matt@ucc.asn.au>
    Date:   Tue May 23 22:29:21 2017 +0800

        split out checkpubkey_line() separately

  It has now been added to `sysoptions.h' and defined as `0' by default.

* The configuration option `DROPBEAR_PASSWORD_ENV' is no longer listed in
  `default_options.h.in'; it is no longer meant to be set by the user, and
  is instead left to be defined in `sysoptions.h' (where it was already being
  defined) as merely the name of the environment variable in question:

    DROPBEAR_PASSWORD

  To enable or disable use of that environment variable, the user must now
  toggle `DROPBEAR_USE_DROPBEAR_PASSWORD'.

* The sFTP support is now toggled by setting `DROPBEAR_SFTPSERVER', and the
  path of the sFTP server program is set independently through the usual
  SFTPSERVER_PATH.
This commit is contained in:
Michael Witten 2017-07-20 19:38:26 +00:00 committed by Matt Johnston
parent 370d4c7cd5
commit 3ee685ad1c
18 changed files with 102 additions and 56 deletions

View File

@ -20,7 +20,7 @@ LIBTOM_LIBS=@LIBTOM_LIBS@
ifeq (@BUNDLED_LIBTOM@, 1) ifeq (@BUNDLED_LIBTOM@, 1)
LIBTOM_DEPS=$(STATIC_LTC) $(STATIC_LTM) LIBTOM_DEPS=$(STATIC_LTC) $(STATIC_LTM)
CFLAGS+=-I$(srcdir)/libtomcrypt/src/headers/ CFLAGS+=-I$(srcdir)/libtomcrypt/src/headers/
LIBTOM_LIBS=$(STATIC_LTC) $(STATIC_LTM) LIBTOM_LIBS=$(STATIC_LTC) $(STATIC_LTM)
endif endif
ifneq ($(wildcard localoptions.h),) ifneq ($(wildcard localoptions.h),)

View File

@ -60,9 +60,11 @@ void cli_auth_getmethods() {
*/ */
if (ses.keys->trans.algo_comp != DROPBEAR_COMP_ZLIB_DELAY) { if (ses.keys->trans.algo_comp != DROPBEAR_COMP_ZLIB_DELAY) {
ses.authstate.authtypes = AUTH_TYPE_PUBKEY; ses.authstate.authtypes = AUTH_TYPE_PUBKEY;
#if DROPBEAR_USE_DROPBEAR_PASSWORD
if (getenv(DROPBEAR_PASSWORD_ENV)) { if (getenv(DROPBEAR_PASSWORD_ENV)) {
ses.authstate.authtypes |= AUTH_TYPE_PASSWORD | AUTH_TYPE_INTERACT; ses.authstate.authtypes |= AUTH_TYPE_PASSWORD | AUTH_TYPE_INTERACT;
} }
#endif
if (cli_auth_try() == DROPBEAR_SUCCESS) { if (cli_auth_try() == DROPBEAR_SUCCESS) {
TRACE(("skipped initial none auth query")) TRACE(("skipped initial none auth query"))
/* Note that there will be two auth responses in-flight */ /* Note that there will be two auth responses in-flight */
@ -335,7 +337,7 @@ char* getpass_or_cancel(const char* prompt)
{ {
char* password = NULL; char* password = NULL;
#ifdef DROPBEAR_PASSWORD_ENV #if DROPBEAR_USE_DROPBEAR_PASSWORD
/* Password provided in an environment var */ /* Password provided in an environment var */
password = getenv(DROPBEAR_PASSWORD_ENV); password = getenv(DROPBEAR_PASSWORD_ENV);
if (password) if (password)

View File

@ -306,10 +306,10 @@ void cli_getopts(int argc, char ** argv) {
case 'm': case 'm':
#endif #endif
case 'D': case 'D':
#ifndef DROPBEAR_CLI_REMOTETCPFWD #if !DROPBEAR_CLI_REMOTETCPFWD
case 'R': case 'R':
#endif #endif
#ifndef DROPBEAR_CLI_LOCALTCPFWD #if !DROPBEAR_CLI_LOCALTCPFWD
case 'L': case 'L':
#endif #endif
case 'V': case 'V':

View File

@ -59,7 +59,7 @@ process_file(hash_state *hs, const char *filename,
unsigned int readcount; unsigned int readcount;
int ret = DROPBEAR_FAILURE; int ret = DROPBEAR_FAILURE;
#ifdef DROPBEAR_PRNGD_SOCKET #if DROPBEAR_USE_PRNGD
if (prngd) if (prngd)
{ {
readfd = connect_unix(filename); readfd = connect_unix(filename);
@ -107,7 +107,7 @@ process_file(hash_state *hs, const char *filename,
wantread = MIN(sizeof(readbuf), len-readcount); wantread = MIN(sizeof(readbuf), len-readcount);
} }
#ifdef DROPBEAR_PRNGD_SOCKET #if DROPBEAR_USE_PRNGD
if (prngd) if (prngd)
{ {
char egdcmd[2]; char egdcmd[2];
@ -157,7 +157,7 @@ void addrandom(const unsigned char * buf, unsigned int len)
static void write_urandom() static void write_urandom()
{ {
#ifndef DROPBEAR_PRNGD_SOCKET #if !DROPBEAR_USE_PRNGD
/* This is opportunistic, don't worry about failure */ /* This is opportunistic, don't worry about failure */
unsigned char buf[INIT_SEED_SIZE]; unsigned char buf[INIT_SEED_SIZE];
FILE *f = fopen(DROPBEAR_URANDOM_DEV, "w"); FILE *f = fopen(DROPBEAR_URANDOM_DEV, "w");
@ -185,7 +185,7 @@ void seedrandom() {
/* existing state */ /* existing state */
sha1_process(&hs, (void*)hashpool, sizeof(hashpool)); sha1_process(&hs, (void*)hashpool, sizeof(hashpool));
#ifdef DROPBEAR_PRNGD_SOCKET #if DROPBEAR_USE_PRNGD
if (process_file(&hs, DROPBEAR_PRNGD_SOCKET, INIT_SEED_SIZE, 1) if (process_file(&hs, DROPBEAR_PRNGD_SOCKET, INIT_SEED_SIZE, 1)
!= DROPBEAR_SUCCESS) { != DROPBEAR_SUCCESS) {
dropbear_exit("Failure reading random device %s", dropbear_exit("Failure reading random device %s",

View File

@ -214,7 +214,7 @@ void dropbear_trace2(const char* format, ...) {
#endif /* DEBUG_TRACE */ #endif /* DEBUG_TRACE */
/* Connect to a given unix socket. The socket is blocking */ /* Connect to a given unix socket. The socket is blocking */
#ifdef ENABLE_CONNECT_UNIX #if ENABLE_CONNECT_UNIX
int connect_unix(const char* path) { int connect_unix(const char* path) {
struct sockaddr_un addr; struct sockaddr_un addr;
int fd = -1; int fd = -1;

View File

@ -59,7 +59,7 @@ char * stripcontrol(const char * text);
int spawn_command(void(*exec_fn)(const void *user_data), const void *exec_data, int spawn_command(void(*exec_fn)(const void *user_data), const void *exec_data,
int *writefd, int *readfd, int *errfd, pid_t *pid); int *writefd, int *readfd, int *errfd, pid_t *pid);
void run_shell_command(const char* cmd, unsigned int maxfd, char* usershell); void run_shell_command(const char* cmd, unsigned int maxfd, char* usershell);
#ifdef ENABLE_CONNECT_UNIX #if ENABLE_CONNECT_UNIX
int connect_unix(const char* addr); int connect_unix(const char* addr);
#endif #endif
int buf_readfile(buffer* buf, const char* filename); int buf_readfile(buffer* buf, const char* filename);

View File

@ -36,10 +36,9 @@ IMPORTANT: Many options will require "make clean" after changes */
#define NON_INETD_MODE 1 #define NON_INETD_MODE 1
#define INETD_MODE 1 #define INETD_MODE 1
/* Setting this disables the fast exptmod bignum code. It saves ~5kB, but is #if !(NON_INETD_MODE || INETD_MODE)
* perhaps 20% slower for pubkey operations (it is probably worth experimenting #error "NON_INETD_MODE or INETD_MODE (or both) must be enabled."
* if you want to use this) */ #endif
/*#define NO_FAST_EXPTMOD*/
/* Set this if you want to use the DROPBEAR_SMALL_CODE option. This can save /* Set this if you want to use the DROPBEAR_SMALL_CODE option. This can save
several kB in binary size however will make the symmetrical ciphers and hashes several kB in binary size however will make the symmetrical ciphers and hashes
@ -77,7 +76,7 @@ much traffic. */
#define DROPBEAR_CLI_NETCAT 1 #define DROPBEAR_CLI_NETCAT 1
/* Whether to support "-c" and "-m" flags to choose ciphers/MACs at runtime */ /* Whether to support "-c" and "-m" flags to choose ciphers/MACs at runtime */
#define ENABLE_USER_ALGO_LIST 1 #define DROPBEAR_USER_ALGO_LIST 1
/* Encryption - at least one required. /* Encryption - at least one required.
* Protocol RFC requires 3DES and recommends AES128 for interoperability. * Protocol RFC requires 3DES and recommends AES128 for interoperability.
@ -86,10 +85,15 @@ much traffic. */
#define DROPBEAR_AES128 1 #define DROPBEAR_AES128 1
#define DROPBEAR_3DES 1 #define DROPBEAR_3DES 1
#define DROPBEAR_AES256 1 #define DROPBEAR_AES256 1
/* Compiling in Blowfish will add ~6kB to runtime heap memory usage */
/*#define DROPBEAR_BLOWFISH*/
#define DROPBEAR_TWOFISH256 1 #define DROPBEAR_TWOFISH256 1
#define DROPBEAR_TWOFISH128 1 #define DROPBEAR_TWOFISH128 1
/* Compiling in Blowfish will add ~6kB to runtime heap memory usage */
#define DROPBEAR_BLOWFISH 0
#if !(DROPBEAR_AES128 || DROPBEAR_3DES || DROPBEAR_AES256 || DROPBEAR_BLOWFISH \
|| DROPBEAR_TWOFISH256 || DROPBEAR_TWOFISH128)
#error "At least one encryption algorithm must be enabled; 3DES and AES128 are recommended."
#endif
/* Enable CBC mode for ciphers. This has security issues though /* Enable CBC mode for ciphers. This has security issues though
* is the most compatible with older SSH implementations */ * is the most compatible with older SSH implementations */
@ -129,6 +133,10 @@ If you test it please contact the Dropbear author */
* on x86-64 */ * on x86-64 */
#define DROPBEAR_ECDSA 1 #define DROPBEAR_ECDSA 1
#if !(DROPBEAR_RSA || DROPBEAR_DSS || DROPBEAR_ECDSA)
#error "At least one hostkey or public-key algorithm must be enabled; RSA is recommended."
#endif
/* RSA must be >=1024 */ /* RSA must be >=1024 */
#define DROPBEAR_DEFAULT_RSA_SIZE 2048 #define DROPBEAR_DEFAULT_RSA_SIZE 2048
/* DSS is always 1024 */ /* DSS is always 1024 */
@ -193,27 +201,57 @@ If you test it please contact the Dropbear author */
* PAM challenge/response. * PAM challenge/response.
* You can't enable both PASSWORD and PAM. */ * You can't enable both PASSWORD and PAM. */
/* This requires crypt() */
#ifdef HAVE_CRYPT
#define DROPBEAR_SVR_PASSWORD_AUTH 1
#else
#define DROPBEAR_SVR_PASSWORD_AUTH 0
#endif
/* PAM requires ./configure --enable-pam */ /* PAM requires ./configure --enable-pam */
#define DROPBEAR_SVR_PAM_AUTH 0 #if defined(HAVE_LIBPAM) && !DROPBEAR_SVR_PASSWORD_AUTH
#define DROPBEAR_SVR_PAM_AUTH 1
#else
#define DROPBEAR_SVR_PAM_AUTH 0
#endif
/* This requires crypt() */
#if defined(HAVE_CRYPT) && !DROPBEAR_SVR_PAM_AUTH
#define DROPBEAR_SVR_PASSWORD_AUTH 1
#else
#define DROPBEAR_SVR_PASSWORD_AUTH 0
#endif
#define DROPBEAR_SVR_PUBKEY_AUTH 1 #define DROPBEAR_SVR_PUBKEY_AUTH 1
#if !(DROPBEAR_SVR_PASSWORD_AUTH || DROPBEAR_SVR_PAM_AUTH || DROPBEAR_SVR_PUBKEY_AUTH)
#error "At least one server authentication type must be enabled; PUBKEY and PASSWORD are recommended."
#endif
#if DROPBEAR_SVR_PASSWORD_AUTH && !HAVE_CRYPT
#error "DROPBEAR_SVR_PASSWORD_AUTH requires `crypt()'."
#endif
#if DROPBEAR_SVR_PAM_AUTH
#if DISABLE_PAM
#error "DROPBEAR_SVR_PAM_AUTH requires 'configure --enable-pam' to succeed."
#endif
#if DROPBEAR_SVR_PASSWORD_AUTH
#error "DROPBEAR_SVR_PASSWORD_AUTH cannot be enabled at the same time as DROPBEAR_SVR_PAM_AUTH."
#endif
#endif
/* Whether to take public key options in /* Whether to take public key options in
* authorized_keys file into account */ * authorized_keys file into account */
#define DROPBEAR_SVR_PUBKEY_OPTIONS 1 #define DROPBEAR_SVR_PUBKEY_OPTIONS 1
/* This requires getpass. */ /* This requires getpass. */
#ifdef HAVE_GETPASS #ifdef HAVE_GETPASS
#define DROPBEAR_CLI_PASSWORD_AUTH 1 #define DROPBEAR_CLI_PASSWORD_AUTH 1
#define DROPBEAR_CLI_INTERACT_AUTH 1 #define DROPBEAR_CLI_INTERACT_AUTH 1
#else
#define DROPBEAR_CLI_PASSWORD_AUTH 0
#define DROPBEAR_CLI_INTERACT_AUTH 0
#endif #endif
#define DROPBEAR_CLI_PUBKEY_AUTH 1 #define DROPBEAR_CLI_PUBKEY_AUTH 1
#if !(DROPBEAR_CLI_PASSWORD_AUTH || DROPBEAR_CLI_PUBKEY_AUTH)
#error "At least one client authentication type must be enabled; PUBKEY and PASSWORD are recommended."
#endif
/* A default argument for dbclient -i <privatekey>. /* A default argument for dbclient -i <privatekey>.
Homedir is prepended unless path begins with / */ Homedir is prepended unless path begins with / */
#define DROPBEAR_DEFAULT_CLI_AUTHKEY ".ssh/id_dropbear" #define DROPBEAR_DEFAULT_CLI_AUTHKEY ".ssh/id_dropbear"
@ -224,7 +262,7 @@ Homedir is prepended unless path begins with / */
* note that it will be provided for all "hidden" client-interactive * note that it will be provided for all "hidden" client-interactive
* style prompts - if you want something more sophisticated, use * style prompts - if you want something more sophisticated, use
* SSH_ASKPASS instead. Comment out this var to remove this functionality.*/ * SSH_ASKPASS instead. Comment out this var to remove this functionality.*/
#define DROPBEAR_PASSWORD_ENV "DROPBEAR_PASSWORD" #define DROPBEAR_USE_DROPBEAR_PASSWORD 1
/* Define this (as well as DROPBEAR_CLI_PASSWORD_AUTH) to allow the use of /* Define this (as well as DROPBEAR_CLI_PASSWORD_AUTH) to allow the use of
* a helper program for the ssh client. The helper program should be * a helper program for the ssh client. The helper program should be
@ -233,6 +271,10 @@ Homedir is prepended unless path begins with / */
* return the password on standard output */ * return the password on standard output */
#define DROPBEAR_CLI_ASKPASS_HELPER 0 #define DROPBEAR_CLI_ASKPASS_HELPER 0
#if DROPBEAR_CLI_ASKPASS_HELPER
#define DROPBEAR_CLI_PASSWORD_AUTH 1
#endif
/* Save a network roundtrip by sendng a real auth request immediately after /* Save a network roundtrip by sendng a real auth request immediately after
* sending a query for the available methods. It is at the expense of < 100 * sending a query for the available methods. It is at the expense of < 100
* bytes of extra network traffic. This is not yet enabled by default since it * bytes of extra network traffic. This is not yet enabled by default since it
@ -245,8 +287,8 @@ Homedir is prepended unless path begins with / */
#define DROPBEAR_URANDOM_DEV "/dev/urandom" #define DROPBEAR_URANDOM_DEV "/dev/urandom"
/* Set this to use PRNGD or EGD instead of /dev/urandom or /dev/random */ /* Set this to use PRNGD or EGD instead of /dev/urandom or /dev/random */
/*#define DROPBEAR_PRNGD_SOCKET "/var/run/dropbear-rng"*/ #define DROPBEAR_USE_PRNGD 0
#define DROPBEAR_PRNGD_SOCKET "/var/run/dropbear-rng"
/* Specify the number of clients we will allow to be connected but /* Specify the number of clients we will allow to be connected but
* not yet authenticated. After this limit, connections are rejected */ * not yet authenticated. After this limit, connections are rejected */
@ -269,6 +311,8 @@ Homedir is prepended unless path begins with / */
* "-q" for quiet */ * "-q" for quiet */
#define XAUTH_COMMAND "/usr/bin/xauth -q" #define XAUTH_COMMAND "/usr/bin/xauth -q"
#define DROPBEAR_SFTPSERVER 1
/* if you want to enable running an sftp server (such as the one included with /* if you want to enable running an sftp server (such as the one included with
* OpenSSH), set the path below. If the path isn't defined, sftp will not * OpenSSH), set the path below. If the path isn't defined, sftp will not
* be enabled */ * be enabled */

View File

@ -870,7 +870,7 @@ static int openssh_write(const char *filename, sign_key *key,
*/ */
numbers[0].start = zero; numbers[0].bytes = 1; zero[0] = '\0'; numbers[0].start = zero; numbers[0].bytes = 1; zero[0] = '\0';
#ifdef DROPBEAR_RSA #if DROPBEAR_RSA
if (key->type == DROPBEAR_SIGNKEY_RSA) { if (key->type == DROPBEAR_SIGNKEY_RSA) {
if (key->rsakey->p == NULL || key->rsakey->q == NULL) { if (key->rsakey->p == NULL || key->rsakey->q == NULL) {
@ -966,7 +966,7 @@ static int openssh_write(const char *filename, sign_key *key,
} }
#endif /* DROPBEAR_RSA */ #endif /* DROPBEAR_RSA */
#ifdef DROPBEAR_DSS #if DROPBEAR_DSS
if (key->type == DROPBEAR_SIGNKEY_DSS) { if (key->type == DROPBEAR_SIGNKEY_DSS) {
/* p */ /* p */

View File

@ -68,8 +68,8 @@
#define LTC_NO_MODES #define LTC_NO_MODES
#define LTC_NO_HASHES #define LTC_NO_HASHES
#define LTC_NO_MACS #define LTC_NO_MACS
#define LTC_NO_PRNGS #define LTC_NO_PRNGS
#define LTC_NO_PK #define LTC_NO_PK
#define LTC_NO_PKCS #define LTC_NO_PKCS
#define LTC_NO_MISC #define LTC_NO_MISC
#endif /* LTC_NOTHING */ #endif /* LTC_NOTHING */

View File

@ -613,7 +613,7 @@ void getaddrstring(struct sockaddr_storage* addr,
int flags = NI_NUMERICSERV | NI_NUMERICHOST; int flags = NI_NUMERICSERV | NI_NUMERICHOST;
#ifndef DO_HOST_LOOKUP #if !DO_HOST_LOOKUP
host_lookup = 0; host_lookup = 0;
#endif #endif

View File

@ -86,7 +86,7 @@ typedef struct svr_runopts {
int ipv6; int ipv6;
*/ */
#ifdef DO_MOTD #if DO_MOTD
/* whether to print the MOTD */ /* whether to print the MOTD */
int domotd; int domotd;
#endif #endif

View File

@ -78,13 +78,13 @@ enum signkey_type signkey_type_from_name(const char* name, unsigned int namelen)
#if DROPBEAR_ECDSA #if DROPBEAR_ECDSA
/* Some of the ECDSA key sizes are defined even if they're not compiled in */ /* Some of the ECDSA key sizes are defined even if they're not compiled in */
if (0 if (0
#ifndef DROPBEAR_ECC_256 #if !DROPBEAR_ECC_256
|| i == DROPBEAR_SIGNKEY_ECDSA_NISTP256 || i == DROPBEAR_SIGNKEY_ECDSA_NISTP256
#endif #endif
#ifndef DROPBEAR_ECC_384 #if !DROPBEAR_ECC_384
|| i == DROPBEAR_SIGNKEY_ECDSA_NISTP384 || i == DROPBEAR_SIGNKEY_ECDSA_NISTP384
#endif #endif
#ifndef DROPBEAR_ECC_521 #if !DROPBEAR_ECC_521
|| i == DROPBEAR_SIGNKEY_ECDSA_NISTP521 || i == DROPBEAR_SIGNKEY_ECDSA_NISTP521
#endif #endif
) { ) {

View File

@ -100,7 +100,7 @@ void svr_pubkey_set_forced_command(struct ChanSess *chansess) {
chansess->original_command = m_strdup(""); chansess->original_command = m_strdup("");
} }
chansess->cmd = m_strdup(ses.authstate.pubkey_options->forced_command); chansess->cmd = m_strdup(ses.authstate.pubkey_options->forced_command);
#ifdef LOG_COMMANDS #if LOG_COMMANDS
dropbear_log(LOG_INFO, "Command forced to '%s'", chansess->original_command); dropbear_log(LOG_INFO, "Command forced to '%s'", chansess->original_command);
#endif #endif
} }

View File

@ -663,7 +663,7 @@ static int sessioncommand(struct Channel *channel, struct ChanSess *chansess,
} }
} }
if (issubsys) { if (issubsys) {
#ifdef SFTPSERVER_PATH #if DROPBEAR_SFTPSERVER
if ((cmdlen == 4) && strncmp(chansess->cmd, "sftp", 4) == 0) { if ((cmdlen == 4) && strncmp(chansess->cmd, "sftp", 4) == 0) {
m_free(chansess->cmd); m_free(chansess->cmd);
chansess->cmd = m_strdup(SFTPSERVER_PATH); chansess->cmd = m_strdup(SFTPSERVER_PATH);
@ -687,7 +687,7 @@ static int sessioncommand(struct Channel *channel, struct ChanSess *chansess,
} }
#ifdef LOG_COMMANDS #if LOG_COMMANDS
if (chansess->cmd) { if (chansess->cmd) {
dropbear_log(LOG_INFO, "User %s executing '%s'", dropbear_log(LOG_INFO, "User %s executing '%s'",
ses.authstate.pw_name, chansess->cmd); ses.authstate.pw_name, chansess->cmd);
@ -774,7 +774,7 @@ static int ptycommand(struct Channel *channel, struct ChanSess *chansess) {
pid_t pid; pid_t pid;
struct logininfo *li = NULL; struct logininfo *li = NULL;
#ifdef DO_MOTD #if DO_MOTD
buffer * motdbuf = NULL; buffer * motdbuf = NULL;
int len; int len;
struct stat sb; struct stat sb;
@ -826,7 +826,7 @@ static int ptycommand(struct Channel *channel, struct ChanSess *chansess) {
login_login(li); login_login(li);
login_free_entry(li); login_free_entry(li);
#ifdef DO_MOTD #if DO_MOTD
if (svr_opts.domotd && !chansess->cmd) { if (svr_opts.domotd && !chansess->cmd) {
/* don't show the motd if ~/.hushlogin exists */ /* don't show the motd if ~/.hushlogin exists */

View File

@ -35,10 +35,10 @@ static size_t listensockets(int *sock, size_t sockcount, int *maxfd);
static void sigchld_handler(int dummy); static void sigchld_handler(int dummy);
static void sigsegv_handler(int); static void sigsegv_handler(int);
static void sigintterm_handler(int fish); static void sigintterm_handler(int fish);
#ifdef INETD_MODE #if INETD_MODE
static void main_inetd(void); static void main_inetd(void);
#endif #endif
#ifdef NON_INETD_MODE #if NON_INETD_MODE
static void main_noinetd(void); static void main_noinetd(void);
#endif #endif
static void commonsetup(void); static void commonsetup(void);
@ -58,7 +58,7 @@ int main(int argc, char ** argv)
/* get commandline options */ /* get commandline options */
svr_getopts(argc, argv); svr_getopts(argc, argv);
#ifdef INETD_MODE #if INETD_MODE
/* service program mode */ /* service program mode */
if (svr_opts.inetdmode) { if (svr_opts.inetdmode) {
main_inetd(); main_inetd();
@ -66,7 +66,7 @@ int main(int argc, char ** argv)
} }
#endif #endif
#ifdef NON_INETD_MODE #if NON_INETD_MODE
main_noinetd(); main_noinetd();
/* notreached */ /* notreached */
#endif #endif
@ -76,7 +76,7 @@ int main(int argc, char ** argv)
} }
#endif #endif
#ifdef INETD_MODE #if INETD_MODE
static void main_inetd() { static void main_inetd() {
char *host, *port = NULL; char *host, *port = NULL;
@ -103,7 +103,7 @@ static void main_inetd() {
} }
#endif /* INETD_MODE */ #endif /* INETD_MODE */
#ifdef NON_INETD_MODE #if NON_INETD_MODE
static void main_noinetd() { static void main_noinetd() {
fd_set fds; fd_set fds;
unsigned int i, j; unsigned int i, j;

View File

@ -64,7 +64,7 @@ static void printhelp(const char * progname) {
#else #else
"-E Log to stderr rather than syslog\n" "-E Log to stderr rather than syslog\n"
#endif #endif
#ifdef DO_MOTD #if DO_MOTD
"-m Don't display the motd on login\n" "-m Don't display the motd on login\n"
#endif #endif
"-w Disallow root logins\n" "-w Disallow root logins\n"
@ -88,7 +88,7 @@ static void printhelp(const char * progname) {
" (default port is %s if none specified)\n" " (default port is %s if none specified)\n"
"-P PidFile Create pid file PidFile\n" "-P PidFile Create pid file PidFile\n"
" (default %s)\n" " (default %s)\n"
#ifdef INETD_MODE #if INETD_MODE
"-i Start for inetd\n" "-i Start for inetd\n"
#endif #endif
"-W <receive_window_buffer> (default %d, larger may be faster, max 1MB)\n" "-W <receive_window_buffer> (default %d, larger may be faster, max 1MB)\n"
@ -156,7 +156,7 @@ void svr_getopts(int argc, char ** argv) {
opts.ipv4 = 1; opts.ipv4 = 1;
opts.ipv6 = 1; opts.ipv6 = 1;
*/ */
#ifdef DO_MOTD #if DO_MOTD
svr_opts.domotd = 1; svr_opts.domotd = 1;
#endif #endif
#ifndef DISABLE_SYSLOG #ifndef DISABLE_SYSLOG
@ -210,7 +210,7 @@ void svr_getopts(int argc, char ** argv) {
opts.listen_fwd_all = 1; opts.listen_fwd_all = 1;
break; break;
#endif #endif
#ifdef INETD_MODE #if INETD_MODE
case 'i': case 'i':
svr_opts.inetdmode = 1; svr_opts.inetdmode = 1;
break; break;
@ -221,7 +221,7 @@ void svr_getopts(int argc, char ** argv) {
case 'P': case 'P':
next = &svr_opts.pidfile; next = &svr_opts.pidfile;
break; break;
#ifdef DO_MOTD #if DO_MOTD
/* motd is displayed by default, -m turns it off */ /* motd is displayed by default, -m turns it off */
case 'm': case 'm':
svr_opts.domotd = 0; svr_opts.domotd = 0;

View File

@ -35,7 +35,7 @@
#include "auth.h" #include "auth.h"
#include "netio.h" #include "netio.h"
#ifndef DROPBEAR_SVR_REMOTETCPFWD #if !DROPBEAR_SVR_REMOTETCPFWD
/* This is better than SSH_MSG_UNIMPLEMENTED */ /* This is better than SSH_MSG_UNIMPLEMENTED */
void recv_msg_global_request_remotetcp() { void recv_msg_global_request_remotetcp() {

View File

@ -192,7 +192,7 @@
#define DROPBEAR_CLI_MULTIHOP ((DROPBEAR_CLI_NETCAT) && (DROPBEAR_CLI_PROXYCMD)) #define DROPBEAR_CLI_MULTIHOP ((DROPBEAR_CLI_NETCAT) && (DROPBEAR_CLI_PROXYCMD))
#define ENABLE_CONNECT_UNIX ((DROPBEAR_CLI_AGENTFWD) || (DROPBEAR_PRNGD_SOCKET)) #define ENABLE_CONNECT_UNIX ((DROPBEAR_CLI_AGENTFWD) || (DROPBEAR_USE_PRNGD))
/* if we're using authorized_keys or known_hosts */ /* if we're using authorized_keys or known_hosts */
#define DROPBEAR_KEY_LINES ((DROPBEAR_CLIENT) || (DROPBEAR_SVR_PUBKEY_AUTH)) #define DROPBEAR_KEY_LINES ((DROPBEAR_CLIENT) || (DROPBEAR_SVR_PUBKEY_AUTH))