changeset 1043:38d2f6b2d1b8

Add more ATTRIB_NORETURN annotations, from Thorsten Horstmann
author Matt Johnston <matt@ucc.asn.au>
date Tue, 24 Feb 2015 22:36:20 +0800
parents 9699b9438ad9
children a5b785c12340
files cli-session.c libtomcrypt/src/headers/tomcrypt_argchk.h session.h
diffstat 3 files changed, 14 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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 <signal.h>
 
+/* 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)
 
--- 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 */