# HG changeset patch # User Matt Johnston # Date 1424788580 -28800 # Node ID 38d2f6b2d1b879913ee20b43da2865cf8e0b1ffb # Parent 9699b9438ad94eeb749499b0213fb18e3bd70530 Add more ATTRIB_NORETURN annotations, from Thorsten Horstmann diff -r 9699b9438ad9 -r 38d2f6b2d1b8 cli-session.c --- a/cli-session.c Tue Feb 24 22:23:32 2015 +0800 +++ b/cli-session.c Tue Feb 24 22:36:20 2015 +0800 @@ -38,10 +38,10 @@ #include "agentfwd.h" #include "crypto_desc.h" -static void cli_remoteclosed(); +static void cli_remoteclosed() ATTRIB_NORETURN; static void cli_sessionloop(); static void cli_session_init(); -static void cli_finished(); +static void cli_finished() ATTRIB_NORETURN; static void recv_msg_service_accept(void); static void cli_session_cleanup(void); static void recv_msg_global_request_cli(void); diff -r 9699b9438ad9 -r 38d2f6b2d1b8 libtomcrypt/src/headers/tomcrypt_argchk.h --- a/libtomcrypt/src/headers/tomcrypt_argchk.h Tue Feb 24 22:23:32 2015 +0800 +++ b/libtomcrypt/src/headers/tomcrypt_argchk.h Tue Feb 24 22:36:20 2015 +0800 @@ -4,8 +4,16 @@ #include +/* portability macros for compiler-specific code attributes */ +#ifdef __GNUC__ +#define ATTRIB_NORETURN __attribute__((noreturn)) +#else +#define ATTRIB_NORETURN +#endif + + /* this is the default LibTomCrypt macro */ -void crypt_argchk(char *v, char *s, int d); +void crypt_argchk(char *v, char *s, int d) ATTRIB_NORETURN; #define LTC_ARGCHK(x) if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } #define LTC_ARGCHKVD(x) LTC_ARGCHK(x) diff -r 9699b9438ad9 -r 38d2f6b2d1b8 session.h --- a/session.h Tue Feb 24 22:23:32 2015 +0800 +++ b/session.h Tue Feb 24 22:36:20 2015 +0800 @@ -43,7 +43,7 @@ extern int exitflag; void common_session_init(int sock_in, int sock_out); -void session_loop(void(*loophandler)()); +void session_loop(void(*loophandler)()) ATTRIB_NORETURN; void session_cleanup(); void send_session_identification(); void send_msg_ignore(); @@ -55,12 +55,12 @@ void fill_passwd(const char* username); /* Server */ -void svr_session(int sock, int childpipe); +void svr_session(int sock, int childpipe) ATTRIB_NORETURN; 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 */ -void cli_session(int sock_in, int sock_out); +void cli_session(int sock_in, int sock_out) ATTRIB_NORETURN; void cleantext(unsigned char* dirtytext); /* crypto parameters that are stored individually for transmit and receive */