# HG changeset patch # User Matt Johnston # Date 1302181158 0 # Node ID 00eca37e47e88972c88865d707d035c6d4a6f51a # Parent 8cd04e7071716af5ba28dc025c7dda38491bc55f Add noreturn and format attribute hints for some functions. diff -r 8cd04e707171 -r 00eca37e47e8 cli-main.c --- a/cli-main.c Thu Apr 07 12:34:44 2011 +0000 +++ b/cli-main.c Thu Apr 07 12:59:18 2011 +0000 @@ -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 -r 8cd04e707171 -r 00eca37e47e8 dbutil.c --- a/dbutil.c Thu Apr 07 12:34:44 2011 +0000 +++ b/dbutil.c Thu Apr 07 12:59:18 2011 +0000 @@ -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 -r 8cd04e707171 -r 00eca37e47e8 dbutil.h --- a/dbutil.h Thu Apr 07 12:34:44 2011 +0000 +++ b/dbutil.h Thu Apr 07 12:59:18 2011 +0000 @@ -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 -r 8cd04e707171 -r 00eca37e47e8 session.h --- a/session.h Thu Apr 07 12:34:44 2011 +0000 +++ b/session.h Thu Apr 07 12:59:18 2011 +0000 @@ -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 @@ /* 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 */