mirror of
https://github.com/clearml/dropbear
synced 2025-04-07 22:24:21 +00:00
Cleaning out various dead wood found with -dead_strip
bignum.c: mptobytes now resides in dss.c loginrec.c: remove lastlog code since it isn't used. dbutil.c: removed obselete usingsyslog variable channel.h: client channel type only defined for client compile common-algo.c: s/rijndael/aes/ --HG-- extra : convert_revision : 411ea4e70506ecb0202376f94bcf2d330603d042
This commit is contained in:
parent
42c691a051
commit
34445aa819
19
bignum.c
19
bignum.c
@ -52,25 +52,6 @@ void m_mp_init_multi(mp_int *mp, ...)
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* convert an unsigned mp into an array of bytes, malloced.
|
|
||||||
* This array must be freed after use, len contains the length of the array,
|
|
||||||
* if len != NULL */
|
|
||||||
unsigned char* mptobytes(mp_int *mp, int *len) {
|
|
||||||
|
|
||||||
unsigned char* ret;
|
|
||||||
int size;
|
|
||||||
|
|
||||||
size = mp_unsigned_bin_size(mp);
|
|
||||||
ret = m_malloc(size);
|
|
||||||
if (mp_to_unsigned_bin(mp, ret) != MP_OKAY) {
|
|
||||||
dropbear_exit("mem alloc error");
|
|
||||||
}
|
|
||||||
if (len != NULL) {
|
|
||||||
*len = size;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void bytestomp(mp_int *mp, unsigned char* bytes, unsigned int len) {
|
void bytestomp(mp_int *mp, unsigned char* bytes, unsigned int len) {
|
||||||
|
|
||||||
if (mp_read_unsigned_bin(mp, bytes, len) != MP_OKAY) {
|
if (mp_read_unsigned_bin(mp, bytes, len) != MP_OKAY) {
|
||||||
|
1
bignum.h
1
bignum.h
@ -29,7 +29,6 @@
|
|||||||
|
|
||||||
void m_mp_init(mp_int *mp);
|
void m_mp_init(mp_int *mp);
|
||||||
void m_mp_init_multi(mp_int *mp, ...);
|
void m_mp_init_multi(mp_int *mp, ...);
|
||||||
unsigned char* mptobytes(mp_int *mp, int *len);
|
|
||||||
void bytestomp(mp_int *mp, unsigned char* bytes, unsigned int len);
|
void bytestomp(mp_int *mp, unsigned char* bytes, unsigned int len);
|
||||||
void sha1_process_mp(hash_state *hs, mp_int *mp);
|
void sha1_process_mp(hash_state *hs, mp_int *mp);
|
||||||
|
|
||||||
|
@ -118,7 +118,9 @@ void recv_msg_channel_eof();
|
|||||||
void common_recv_msg_channel_data(struct Channel *channel, int fd,
|
void common_recv_msg_channel_data(struct Channel *channel, int fd,
|
||||||
circbuffer * buf);
|
circbuffer * buf);
|
||||||
|
|
||||||
|
#ifdef DROPBEAR_CLIENT
|
||||||
const struct ChanType clichansess;
|
const struct ChanType clichansess;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USING_LISTENERS
|
#ifdef USING_LISTENERS
|
||||||
int send_msg_channel_open_init(int fd, const struct ChanType *type);
|
int send_msg_channel_open_init(int fd, const struct ChanType *type);
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#ifdef DROPBEAR_AES128_CBC
|
#ifdef DROPBEAR_AES128_CBC
|
||||||
const struct dropbear_cipher dropbear_aes128 =
|
const struct dropbear_cipher dropbear_aes128 =
|
||||||
{&rijndael_desc, 16, 16};
|
{&aes_desc, 16, 16};
|
||||||
#endif
|
#endif
|
||||||
#ifdef DROPBEAR_BLOWFISH_CBC
|
#ifdef DROPBEAR_BLOWFISH_CBC
|
||||||
const struct dropbear_cipher dropbear_blowfish =
|
const struct dropbear_cipher dropbear_blowfish =
|
||||||
@ -127,7 +127,7 @@ void crypto_init() {
|
|||||||
|
|
||||||
const struct _cipher_descriptor *regciphers[] = {
|
const struct _cipher_descriptor *regciphers[] = {
|
||||||
#ifdef DROPBEAR_AES128_CBC
|
#ifdef DROPBEAR_AES128_CBC
|
||||||
&rijndael_desc,
|
&aes_desc,
|
||||||
#endif
|
#endif
|
||||||
#ifdef DROPBEAR_BLOWFISH_CBC
|
#ifdef DROPBEAR_BLOWFISH_CBC
|
||||||
&blowfish_desc,
|
&blowfish_desc,
|
||||||
|
1
dbutil.c
1
dbutil.c
@ -70,7 +70,6 @@ void (*_dropbear_log)(int priority, const char* format, va_list param)
|
|||||||
int debug_trace = 0;
|
int debug_trace = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int usingsyslog = 0; /* set by runopts, but required externally to sessions */
|
|
||||||
#ifndef DISABLE_SYSLOG
|
#ifndef DISABLE_SYSLOG
|
||||||
void startsyslog() {
|
void startsyslog() {
|
||||||
|
|
||||||
|
19
dss.c
19
dss.c
@ -261,6 +261,25 @@ out:
|
|||||||
}
|
}
|
||||||
#endif /* DROPBEAR_SIGNKEY_VERIFY */
|
#endif /* DROPBEAR_SIGNKEY_VERIFY */
|
||||||
|
|
||||||
|
/* convert an unsigned mp into an array of bytes, malloced.
|
||||||
|
* This array must be freed after use, len contains the length of the array,
|
||||||
|
* if len != NULL */
|
||||||
|
static unsigned char* mptobytes(mp_int *mp, int *len) {
|
||||||
|
|
||||||
|
unsigned char* ret;
|
||||||
|
int size;
|
||||||
|
|
||||||
|
size = mp_unsigned_bin_size(mp);
|
||||||
|
ret = m_malloc(size);
|
||||||
|
if (mp_to_unsigned_bin(mp, ret) != MP_OKAY) {
|
||||||
|
dropbear_exit("mem alloc error");
|
||||||
|
}
|
||||||
|
if (len != NULL) {
|
||||||
|
*len = size;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Sign the data presented with key, writing the signature contents
|
/* Sign the data presented with key, writing the signature contents
|
||||||
* to the buffer
|
* to the buffer
|
||||||
*
|
*
|
||||||
|
150
loginrec.c
150
loginrec.c
@ -29,6 +29,8 @@
|
|||||||
** loginrec.c: platform-independent login recording and lastlog retrieval
|
** loginrec.c: platform-independent login recording and lastlog retrieval
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
/* For now lastlog code has been removed as it wasn't being used by Dropbear. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The new login code explained
|
The new login code explained
|
||||||
============================
|
============================
|
||||||
@ -174,11 +176,8 @@ int utmp_write_entry(struct logininfo *li);
|
|||||||
int utmpx_write_entry(struct logininfo *li);
|
int utmpx_write_entry(struct logininfo *li);
|
||||||
int wtmp_write_entry(struct logininfo *li);
|
int wtmp_write_entry(struct logininfo *li);
|
||||||
int wtmpx_write_entry(struct logininfo *li);
|
int wtmpx_write_entry(struct logininfo *li);
|
||||||
int lastlog_write_entry(struct logininfo *li);
|
|
||||||
int syslogin_write_entry(struct logininfo *li);
|
int syslogin_write_entry(struct logininfo *li);
|
||||||
|
|
||||||
int getlast_entry(struct logininfo *li);
|
|
||||||
int lastlog_get_entry(struct logininfo *li);
|
|
||||||
int wtmp_get_entry(struct logininfo *li);
|
int wtmp_get_entry(struct logininfo *li);
|
||||||
int wtmpx_get_entry(struct logininfo *li);
|
int wtmpx_get_entry(struct logininfo *li);
|
||||||
|
|
||||||
@ -221,74 +220,6 @@ login_logout(struct logininfo *li)
|
|||||||
return login_write(li);
|
return login_write(li);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* login_get_lastlog_time(int) - Retrieve the last login time
|
|
||||||
*
|
|
||||||
* Retrieve the last login time for the given uid. Will try to use the
|
|
||||||
* system lastlog facilities if they are available, but will fall back
|
|
||||||
* to looking in wtmp/wtmpx if necessary
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* 0 on failure, or if user has never logged in
|
|
||||||
* Time in seconds from the epoch if successful
|
|
||||||
*
|
|
||||||
* Useful preprocessor symbols:
|
|
||||||
* DISABLE_LASTLOG: If set, *never* even try to retrieve lastlog
|
|
||||||
* info
|
|
||||||
* USE_LASTLOG: If set, indicates the presence of system lastlog
|
|
||||||
* facilities. If this and DISABLE_LASTLOG are not set,
|
|
||||||
* try to retrieve lastlog information from wtmp/wtmpx.
|
|
||||||
*/
|
|
||||||
unsigned int
|
|
||||||
login_get_lastlog_time(const int uid)
|
|
||||||
{
|
|
||||||
struct logininfo li;
|
|
||||||
|
|
||||||
if (login_get_lastlog(&li, uid))
|
|
||||||
return li.tv_sec;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* login_get_lastlog(struct logininfo *, int) - Retrieve a lastlog entry
|
|
||||||
*
|
|
||||||
* Retrieve a logininfo structure populated (only partially) with
|
|
||||||
* information from the system lastlog data, or from wtmp/wtmpx if no
|
|
||||||
* system lastlog information exists.
|
|
||||||
*
|
|
||||||
* Note this routine must be given a pre-allocated logininfo.
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* >0: A pointer to your struct logininfo if successful
|
|
||||||
* 0 on failure (will use OpenSSH's logging facilities for diagnostics)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
struct logininfo *
|
|
||||||
login_get_lastlog(struct logininfo *li, const int uid)
|
|
||||||
{
|
|
||||||
struct passwd *pw;
|
|
||||||
|
|
||||||
memset(li, '\0', sizeof(*li));
|
|
||||||
li->uid = uid;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If we don't have a 'real' lastlog, we need the username to
|
|
||||||
* reliably search wtmp(x) for the last login (see
|
|
||||||
* wtmp_get_entry().)
|
|
||||||
*/
|
|
||||||
pw = getpwuid(uid);
|
|
||||||
if (pw == NULL)
|
|
||||||
dropbear_exit("login_get_lastlog: Cannot find account for uid %i", uid);
|
|
||||||
|
|
||||||
/* No MIN_SIZEOF here - we absolutely *must not* truncate the
|
|
||||||
* username */
|
|
||||||
strlcpy(li->username, pw->pw_name, sizeof(li->username));
|
|
||||||
|
|
||||||
if (getlast_entry(li))
|
|
||||||
return li;
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* login_alloc_entry(int, char*, char*, char*) - Allocate and initialise
|
/* login_alloc_entry(int, char*, char*, char*) - Allocate and initialise
|
||||||
* a logininfo structure
|
* a logininfo structure
|
||||||
@ -450,42 +381,6 @@ login_utmp_only(struct logininfo *li)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
** getlast_entry: Call low-level functions to retrieve the last login
|
|
||||||
** time.
|
|
||||||
**/
|
|
||||||
|
|
||||||
/* take the uid in li and return the last login time */
|
|
||||||
int
|
|
||||||
getlast_entry(struct logininfo *li)
|
|
||||||
{
|
|
||||||
#ifdef USE_LASTLOG
|
|
||||||
return(lastlog_get_entry(li));
|
|
||||||
#else /* !USE_LASTLOG */
|
|
||||||
|
|
||||||
#ifdef DISABLE_LASTLOG
|
|
||||||
/* On some systems we shouldn't even try to obtain last login
|
|
||||||
* time, e.g. AIX */
|
|
||||||
return 0;
|
|
||||||
# else /* DISABLE_LASTLOG */
|
|
||||||
/* Try to retrieve the last login time from wtmp */
|
|
||||||
# if defined(USE_WTMP) && (defined(HAVE_STRUCT_UTMP_UT_TIME) || defined(HAVE_STRUCT_UTMP_UT_TV))
|
|
||||||
/* retrieve last login time from utmp */
|
|
||||||
return (wtmp_get_entry(li));
|
|
||||||
# else /* defined(USE_WTMP) && (defined(HAVE_STRUCT_UTMP_UT_TIME) || defined(HAVE_STRUCT_UTMP_UT_TV)) */
|
|
||||||
/* If wtmp isn't available, try wtmpx */
|
|
||||||
# if defined(USE_WTMPX) && (defined(HAVE_STRUCT_UTMPX_UT_TIME) || defined(HAVE_STRUCT_UTMPX_UT_TV))
|
|
||||||
/* retrieve last login time from utmpx */
|
|
||||||
return (wtmpx_get_entry(li));
|
|
||||||
# else
|
|
||||||
/* Give up: No means of retrieving last login time */
|
|
||||||
return 0;
|
|
||||||
# endif /* USE_WTMPX && (HAVE_STRUCT_UTMPX_UT_TIME || HAVE_STRUCT_UTMPX_UT_TV) */
|
|
||||||
# endif /* USE_WTMP && (HAVE_STRUCT_UTMP_UT_TIME || HAVE_STRUCT_UTMP_UT_TV) */
|
|
||||||
# endif /* DISABLE_LASTLOG */
|
|
||||||
#endif /* USE_LASTLOG */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1495,45 +1390,4 @@ lastlog_write_entry(struct logininfo *li)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
lastlog_populate_entry(struct logininfo *li, struct lastlog *last)
|
|
||||||
{
|
|
||||||
line_fullname(li->line, last->ll_line, sizeof(li->line));
|
|
||||||
strlcpy(li->hostname, last->ll_host,
|
|
||||||
MIN_SIZEOF(li->hostname, last->ll_host));
|
|
||||||
li->tv_sec = last->ll_time;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
lastlog_get_entry(struct logininfo *li)
|
|
||||||
{
|
|
||||||
struct lastlog last;
|
|
||||||
int fd, ret;
|
|
||||||
|
|
||||||
if (!lastlog_openseek(li, &fd, O_RDONLY))
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
ret = atomicio(read, fd, &last, sizeof(last));
|
|
||||||
close(fd);
|
|
||||||
|
|
||||||
switch (ret) {
|
|
||||||
case 0:
|
|
||||||
memset(&last, '\0', sizeof(last));
|
|
||||||
/* FALLTHRU */
|
|
||||||
case sizeof(last):
|
|
||||||
lastlog_populate_entry(li, &last);
|
|
||||||
return (1);
|
|
||||||
case -1:
|
|
||||||
dropbear_log(LOG_ERR, "Error reading from %s: %s",
|
|
||||||
LASTLOG_FILE, strerror(errno));
|
|
||||||
return (0);
|
|
||||||
default:
|
|
||||||
dropbear_log(LOG_ERR, "Error reading from %s: Expecting %d, got %d",
|
|
||||||
LASTLOG_FILE, sizeof(last), ret);
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* NOTREACHED */
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
#endif /* USE_LASTLOG */
|
#endif /* USE_LASTLOG */
|
||||||
|
@ -150,7 +150,6 @@ struct logininfo {
|
|||||||
|
|
||||||
/** 'public' functions */
|
/** 'public' functions */
|
||||||
|
|
||||||
/* construct a new login entry */
|
|
||||||
struct logininfo *login_alloc_entry(int pid, const char *username,
|
struct logininfo *login_alloc_entry(int pid, const char *username,
|
||||||
const char *hostname, const char *line);
|
const char *hostname, const char *line);
|
||||||
/* free a structure */
|
/* free a structure */
|
||||||
@ -178,14 +177,6 @@ int login_log_entry(struct logininfo *li);
|
|||||||
void login_set_addr(struct logininfo *li, const struct sockaddr *sa,
|
void login_set_addr(struct logininfo *li, const struct sockaddr *sa,
|
||||||
const unsigned int sa_size);
|
const unsigned int sa_size);
|
||||||
|
|
||||||
/*
|
|
||||||
* lastlog retrieval functions
|
|
||||||
*/
|
|
||||||
/* lastlog *entry* functions fill out a logininfo */
|
|
||||||
struct logininfo *login_get_lastlog(struct logininfo *li, const int uid);
|
|
||||||
/* lastlog *time* functions return time_t equivalent (uint) */
|
|
||||||
unsigned int login_get_lastlog_time(const int uid);
|
|
||||||
|
|
||||||
/* produce various forms of the line filename */
|
/* produce various forms of the line filename */
|
||||||
char *line_fullname(char *dst, const char *src, size_t dstsize);
|
char *line_fullname(char *dst, const char *src, size_t dstsize);
|
||||||
char *line_stripname(char *dst, const char *src, size_t dstsize);
|
char *line_stripname(char *dst, const char *src, size_t dstsize);
|
||||||
|
Loading…
Reference in New Issue
Block a user