summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cli-main.c2
-rw-r--r--dbutil.c4
-rw-r--r--dbutil.h28
-rw-r--r--session.h3
4 files changed, 27 insertions, 10 deletions
diff --git a/cli-main.c b/cli-main.c
index 273f59c..5f72969 100644
--- a/cli-main.c
+++ b/cli-main.c
@@ -29,7 +29,7 @@
#include "runopts.h"
#include "session.h"
-static void cli_dropbear_exit(int exitcode, const char* format, va_list param);
+static void cli_dropbear_exit(int exitcode, const char* format, va_list param) ATTRIB_NORETURN;
static void cli_dropbear_log(int priority, const char* format, va_list param);
#ifdef ENABLE_CLI_PROXYCMD
diff --git a/dbutil.c b/dbutil.c
index b3a119f..b95f85f 100644
--- a/dbutil.c
+++ b/dbutil.c
@@ -57,11 +57,11 @@
#define MAX_FMT 100
static void generic_dropbear_exit(int exitcode, const char* format,
- va_list param);
+ va_list param) ATTRIB_NORETURN;
static void generic_dropbear_log(int priority, const char* format,
va_list param);
-void (*_dropbear_exit)(int exitcode, const char* format, va_list param)
+void (*_dropbear_exit)(int exitcode, const char* format, va_list param) ATTRIB_NORETURN
= generic_dropbear_exit;
void (*_dropbear_log)(int priority, const char* format, va_list param)
= generic_dropbear_log;
diff --git a/dbutil.h b/dbutil.h
index 474db62..14c4c28 100644
--- a/dbutil.h
+++ b/dbutil.h
@@ -33,18 +33,34 @@
void startsyslog();
#endif
-extern void (*_dropbear_exit)(int exitcode, const char* format, va_list param);
+#ifdef __GNUC__
+#define ATTRIB_PRINTF(fmt,args) __attribute__((format(printf, fmt, args)))
+#else
+#define ATTRIB_PRINTF(fmt,args)
+#endif
+
+#ifdef __GNUC__
+#define ATTRIB_NORETURN __attribute__((noreturn))
+#else
+#define ATTRIB_NORETURN
+#endif
+
+extern void (*_dropbear_exit)(int exitcode, const char* format, va_list param) ATTRIB_NORETURN;
extern void (*_dropbear_log)(int priority, const char* format, va_list param);
-void dropbear_exit(const char* format, ...);
-void dropbear_close(const char* format, ...);
-void dropbear_log(int priority, const char* format, ...);
-void fail_assert(const char* expr, const char* file, int line);
+void dropbear_exit(const char* format, ...) ATTRIB_PRINTF(1,2) ATTRIB_NORETURN;
+
+void dropbear_close(const char* format, ...) ATTRIB_PRINTF(1,2) ;
+void dropbear_log(int priority, const char* format, ...) ATTRIB_PRINTF(2,3) ;
+
+void fail_assert(const char* expr, const char* file, int line) ATTRIB_NORETURN;
+
#ifdef DEBUG_TRACE
-void dropbear_trace(const char* format, ...);
+void dropbear_trace(const char* format, ...) ATTRIB_PRINTF(1,2);
void printhex(const char * label, const unsigned char * buf, int len);
extern int debug_trace;
#endif
+
char * stripcontrol(const char * text);
void get_socket_address(int fd, char **local_host, char **local_port,
char **remote_host, char **remote_port, int host_lookup);
diff --git a/session.h b/session.h
index 355cf03..09b3de5 100644
--- a/session.h
+++ b/session.h
@@ -37,6 +37,7 @@
#include "packet.h"
#include "tcpfwd.h"
#include "chansession.h"
+#include "dbutil.h"
extern int sessinitdone; /* Is set to 0 somewhere */
extern int exitflag;
@@ -52,7 +53,7 @@ void fill_passwd(const char* username);
/* Server */
void svr_session(int sock, int childpipe);
-void svr_dropbear_exit(int exitcode, const char* format, va_list param);
+void svr_dropbear_exit(int exitcode, const char* format, va_list param) ATTRIB_NORETURN;
void svr_dropbear_log(int priority, const char* format, va_list param);
/* Client */