[nagiosplug] Die when asprintf fails

Nagios Plugin Development nagios-plugins at users.sourceforge.net
Fri Jun 29 14:20:54 CEST 2012


    Module: nagiosplug
    Branch: master
    Commit: 028d50d6f99e647a325a0a68303016382c4bbdc9
    Author: Anders Kaseorg <andersk at mit.edu>
 Committer: Holger Weiss <holger at zedat.fu-berlin.de>
      Date: Fri Jun 29 00:57:48 2012 -0400
       URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=028d50d

Die when asprintf fails

Fixes many instances of
warning: ignoring return value of 'asprintf', declared with attribute warn_unused_result [-Wunused-result]

Signed-off-by: Anders Kaseorg <andersk at mit.edu>

---

 contrib/check_http-with-client-certificate.c |  142 +++++++++---------
 plugins/check_by_ssh.c                       |   10 +-
 plugins/check_dig.c                          |    4 +-
 plugins/check_disk.c                         |   24 ++--
 plugins/check_dns.c                          |    8 +-
 plugins/check_fping.c                        |    6 +-
 plugins/check_game.c                         |    4 +-
 plugins/check_hpjd.c                         |    2 +-
 plugins/check_http.c                         |   78 +++++-----
 plugins/check_ldap.c                         |    8 +-
 plugins/check_load.c                         |    2 +-
 plugins/check_mrtgtraf.c                     |    2 +-
 plugins/check_mysql.c                        |    2 +-
 plugins/check_mysql_query.c                  |    4 +-
 plugins/check_nagios.c                       |    2 +-
 plugins/check_nt.c                           |   52 ++++----
 plugins/check_ntp.c                          |   20 ++--
 plugins/check_ntp_peer.c                     |   36 +++---
 plugins/check_ntp_time.c                     |   16 +-
 plugins/check_nwstat.c                       |  204 +++++++++++++-------------
 plugins/check_overcr.c                       |    2 +-
 plugins/check_pgsql.c                        |    2 +-
 plugins/check_ping.c                         |   10 +-
 plugins/check_procs.c                        |   34 ++--
 plugins/check_radius.c                       |    2 +-
 plugins/check_real.c                         |    2 +-
 plugins/check_smtp.c                         |   30 ++--
 plugins/check_snmp.c                         |   34 ++--
 plugins/check_ssh.c                          |    4 +-
 plugins/check_swap.c                         |   16 +-
 plugins/check_tcp.c                          |    4 +-
 plugins/check_time.c                         |    2 +-
 plugins/check_ups.c                          |   60 ++++----
 plugins/check_users.c                        |    2 +-
 plugins/negate.c                             |    2 +-
 plugins/urlize.c                             |    2 +-
 plugins/utils.c                              |   67 ++++++---
 plugins/utils.h                              |    2 +
 38 files changed, 466 insertions(+), 437 deletions(-)

diff --git a/contrib/check_http-with-client-certificate.c b/contrib/check_http-with-client-certificate.c
index 60e1481..c47cbd4 100644
--- a/contrib/check_http-with-client-certificate.c
+++ b/contrib/check_http-with-client-certificate.c
@@ -606,7 +606,7 @@ process_arguments( int argc, char **argv )
                          *if ( !is_hostname( optarg ) )
                          *        usage2( "invalid hostname", optarg );
                          */
-                        asprintf( &server_hostname, "%s", optarg );
+                        xasprintf( &server_hostname, "%s", optarg );
                         use_server_hostname = TRUE;
                         break;
                 case 'F': /* File (dummy) */
@@ -619,7 +619,7 @@ process_arguments( int argc, char **argv )
                          *if ( !is_host( optarg ) )
                          *        usage2( "invalid ip address or hostname", optarg )
                          */
-                        asprintf( &server_host, "%s", optarg );
+                        xasprintf( &server_host, "%s", optarg );
                         break;
                 case 'p': /* Server port */
                         if ( !is_intnonneg( optarg ) )
@@ -653,7 +653,7 @@ process_arguments( int argc, char **argv )
                         break;
                 case 'A': /* client certificate */
 #ifdef HAVE_SSL
-                        asprintf( &client_certificate_file, "%s", optarg );
+                        xasprintf( &client_certificate_file, "%s", optarg );
                         use_client_certificate = TRUE;
 #else
                         usage( "check_http: invalid option - SSL is not available\n" );
@@ -661,26 +661,26 @@ process_arguments( int argc, char **argv )
                         break;
                 case 'K': /* client certificate passphrase */
 #ifdef HAVE_SSL
-                        asprintf( &client_certificate_passphrase, "%s", optarg );
+                        xasprintf( &client_certificate_passphrase, "%s", optarg );
                         use_client_certificate_passphrase = TRUE;
 #else
                         usage( "check_http: invalid option - SSL is not available\n" );
 #endif
                 case 'Z': /* valid CA certificates */
 #ifdef HAVE_SSL
-                        asprintf( &ca_certificate_file, "%s", optarg );
+                        xasprintf( &ca_certificate_file, "%s", optarg );
                         use_ca_certificate = TRUE;
 #else
                         usage( "check_http: invalid option - SSL is not available\n" );
 #endif
                         break;
                 case 'u': /* URL PATH */
-                        asprintf( &http_url_path, "%s", optarg );
+                        xasprintf( &http_url_path, "%s", optarg );
                         break;
                 case 'P': /* POST DATA */
-                        asprintf( &http_post_data, "%s", optarg );
+                        xasprintf( &http_post_data, "%s", optarg );
                         use_http_post_data = TRUE;
-                        asprintf( &http_method, "%s", "POST" );
+                        xasprintf( &http_method, "%s", "POST" );
                         break;
                 case 'e': /* expected string in first line of HTTP response */
                         strncpy( http_expect , optarg, MAX_INPUT_BUFFER - 1 );
@@ -765,13 +765,13 @@ process_arguments( int argc, char **argv )
          *    without an option
          */
         if ( ( strcmp( server_host, "" ) ) && (c < argc) ) {
-                asprintf( &server_host, "%s", argv[c++] );
+                xasprintf( &server_host, "%s", argv[c++] );
         }
 
         /* 2. check if another artument is supplied
          */
         if ( ( strcmp( server_hostname, "" ) == 0 ) && (c < argc) ) {
-               asprintf( &server_hostname, "%s", argv[c++] ); 
+               xasprintf( &server_hostname, "%s", argv[c++] ); 
         }
 
         /* 3. if host is still not defined, just copy hostname, 
@@ -781,7 +781,7 @@ process_arguments( int argc, char **argv )
                 if ( strcmp( server_hostname, "" ) == 0 ) {
 			usage ("check_http: you must specify a server address or host name\n");
                 } else {
-                        asprintf( &server_host, "%s", server_hostname );
+                        xasprintf( &server_host, "%s", server_hostname );
                 }
         }
 
@@ -807,9 +807,9 @@ process_arguments( int argc, char **argv )
 
         /* Finally set some default values if necessary */
         if ( strcmp( http_method, "" ) == 0 )
-                asprintf( &http_method, "%s", DEFAULT_HTTP_METHOD );
+                xasprintf( &http_method, "%s", DEFAULT_HTTP_METHOD );
         if ( strcmp( http_url_path, "" ) == 0 ) {
-                asprintf( &http_url_path, "%s", DEFAULT_HTTP_URL_PATH );
+                xasprintf( &http_url_path, "%s", DEFAULT_HTTP_URL_PATH );
         }
 
         return TRUE;
@@ -829,25 +829,25 @@ http_request( int sock, struct pageref *page )
         size_t size = 0;
         char *basic_auth_encoded = NULL;
 
-        asprintf( &buffer, HTTP_TEMPLATE_REQUEST, buffer, http_method, http_url_path );
+        xasprintf( &buffer, HTTP_TEMPLATE_REQUEST, buffer, http_method, http_url_path );
 
-        asprintf( &buffer, HTTP_TEMPLATE_HEADER_USERAGENT, buffer, progname, REVISION, PACKAGE_VERSION );
+        xasprintf( &buffer, HTTP_TEMPLATE_HEADER_USERAGENT, buffer, progname, REVISION, PACKAGE_VERSION );
 
         if ( use_server_hostname ) {
-                asprintf( &buffer, HTTP_TEMPLATE_HEADER_HOST, buffer, server_hostname );
+                xasprintf( &buffer, HTTP_TEMPLATE_HEADER_HOST, buffer, server_hostname );
         }
 
         if ( use_basic_auth ) {
                 basic_auth_encoded = base64( basic_auth, strlen( basic_auth ) );
-                asprintf( &buffer, HTTP_TEMPLATE_HEADER_AUTH, buffer, basic_auth_encoded );
+                xasprintf( &buffer, HTTP_TEMPLATE_HEADER_AUTH, buffer, basic_auth_encoded );
         }
 
         /* either send http POST data */
         if ( use_http_post_data ) {
         /* based on code written by Chris Henesy <lurker at shadowtech.org> */
-                asprintf( &buffer, "Content-Type: application/x-www-form-urlencoded\r\n" );
-                asprintf( &buffer, "Content-Length: %i\r\n\r\n", buffer, content_len );
-                asprintf( &buffer, "%s%s%s", buffer, http_post_data, "\r\n" );
+                xasprintf( &buffer, "Content-Type: application/x-www-form-urlencoded\r\n" );
+                xasprintf( &buffer, "Content-Length: %i\r\n\r\n", buffer, content_len );
+                xasprintf( &buffer, "%s%s%s", buffer, http_post_data, "\r\n" );
                 sendsize = send( sock, buffer, strlen( buffer ), 0 );
                 if ( sendsize < strlen( buffer ) ) {
                         printf( "ERROR: Incomplete write\n" );
@@ -855,7 +855,7 @@ http_request( int sock, struct pageref *page )
                 }
         /* or just a newline */
         } else {
-	        asprintf( &buffer, "%s%s", buffer, "\r\n" );
+	        xasprintf( &buffer, "%s%s", buffer, "\r\n" );
 	       	sendsize = send( sock, buffer, strlen( buffer ) , 0 );
 	       	if ( sendsize < strlen( buffer ) ) {
 	  	        printf( "ERROR: Incomplete write\n" );
@@ -870,12 +870,12 @@ http_request( int sock, struct pageref *page )
                 recvsize = recv( sock, recvbuff, MAX_INPUT_BUFFER - 1, 0 );
                 if ( recvsize > (size_t) 0 ) {
                         recvbuff[recvsize] = '\0';
-                        asprintf( &content, "%s%s", content, recvbuff );
+                        xasprintf( &content, "%s%s", content, recvbuff );
                         size += recvsize;
                 }
         } while ( recvsize > (size_t) 0 );
 
-        asprintf( &page->content, "%s", content );
+        xasprintf( &page->content, "%s", content );
         page->size = size;
 
         /* return a CRITICAL status if we couldn't read any data */
@@ -895,7 +895,7 @@ parse_http_response( struct pageref *page )
         size_t len = 0;         //temporary used
         char *pos = "";         //temporary used
 
-        asprintf( &content, "%s", page->content );
+        xasprintf( &content, "%s", page->content );
 
         /* find status line and null-terminate it */
         // copy content to status
@@ -962,7 +962,7 @@ check_http_response( struct pageref *page )
 
         /* check response time befor anything else */
         if ( use_critical_interval && ( elapsed_time > critical_interval ) ) {
-                asprintf( &msg, RESULT_TEMPLATE_RESPONSE_TIME, 
+                xasprintf( &msg, RESULT_TEMPLATE_RESPONSE_TIME, 
                                 protocol_text( use_ssl ),
                                 state_text( STATE_CRITICAL ),
                                 elapsed_time,
@@ -970,7 +970,7 @@ check_http_response( struct pageref *page )
                 terminate( STATE_CRITICAL, msg );
         }
         if ( use_warning_interval  && ( elapsed_time > warning_interval ) ) {
-                asprintf( &msg, RESULT_TEMPLATE_RESPONSE_TIME, 
+                xasprintf( &msg, RESULT_TEMPLATE_RESPONSE_TIME, 
                                 protocol_text( use_ssl ),
                                 state_text( STATE_WARNING ),
                                 elapsed_time,
@@ -990,9 +990,9 @@ check_http_response( struct pageref *page )
 #else
                            )
 #endif 
-                                asprintf( &msg, "Expected HTTP response received from host\n" );
+                                xasprintf( &msg, "Expected HTTP response received from host\n" );
                         else
-                                asprintf( &msg, "Expected HTTP response received from host on port %d\n", server_port );
+                                xasprintf( &msg, "Expected HTTP response received from host on port %d\n", server_port );
                         terminate( STATE_OK, msg );
                 }
         } else {
@@ -1002,9 +1002,9 @@ check_http_response( struct pageref *page )
 #else
                    )
 #endif
-                        asprintf( &msg, "Invalid HTTP response received from host\n" );
+                        xasprintf( &msg, "Invalid HTTP response received from host\n" );
                 else
-                        asprintf( &msg, "Invalid HTTP response received from host on port %d\n", server_port );
+                        xasprintf( &msg, "Invalid HTTP response received from host on port %d\n", server_port );
                 terminate( STATE_CRITICAL, msg );
         }
 
@@ -1016,7 +1016,7 @@ check_http_response( struct pageref *page )
              strstr( page->status, "503" ) ||
              strstr( page->status, "504" ) ||
              strstr( page->status, "505" )) {
-                asprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
+                xasprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
                                 protocol_text( use_ssl ),
                                 state_text( http_client_error_state ),
                                 page->status,
@@ -1044,7 +1044,7 @@ check_http_response( struct pageref *page )
              strstr( page->status, "415" ) ||
              strstr( page->status, "416" ) ||
              strstr( page->status, "417" ) ) {
-                asprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
+                xasprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
                                 protocol_text( use_ssl ),
                                 state_text( http_client_error_state ),
                                 page->status,
@@ -1066,7 +1066,7 @@ check_http_response( struct pageref *page )
                                 /* returning STATE_DEPENDENT means follow redirect */
                                 return STATE_DEPENDENT;
                 } else {
-                        asprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
+                        xasprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
                                         protocol_text( use_ssl ),
                                         state_text( http_redirect_state ),
                                         page->status,
@@ -1087,7 +1087,7 @@ check_http_content( struct pageref *page )
         /* check for string in content */
         if ( check_content_string ) {
                 if ( strstr( page->content, content_string ) ) {
-                        asprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
+                        xasprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
                                         protocol_text( use_ssl ),
                                         state_text( STATE_OK ),
                                         page->status,
@@ -1095,7 +1095,7 @@ check_http_content( struct pageref *page )
                                         elapsed_time );
                         terminate( STATE_OK, msg );
                 } else {
-                        asprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
+                        xasprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
                                         protocol_text( use_ssl ),
                                         state_text( STATE_CRITICAL ),
                                         page->status,
@@ -1110,7 +1110,7 @@ check_http_content( struct pageref *page )
         if ( check_content_regex ) {
                 regex_error = regexec( &regex_preg, page->content, REGEX_REGS, regex_pmatch, 0);
                 if ( regex_error == 0 ) {
-                        asprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
+                        xasprintf( &msg, RESULT_TEMPLATE_STATUS_RESPONSE_TIME,
                                         protocol_text( use_ssl ),
                                         state_text( STATE_OK ),
                                         page->status,
@@ -1119,13 +1119,13 @@ check_http_content( struct pageref *page )
                         terminate( STATE_OK, msg );
                 } else {
                         if ( regex_error == REG_NOMATCH ) {
-                                asprintf( &msg, "%s, %s: regex pattern not found\n",
+                                xasprintf( &msg, "%s, %s: regex pattern not found\n",
                                                 protocol_text( use_ssl) ,
                                                 state_text( STATE_CRITICAL ) );
                                 terminate( STATE_CRITICAL, msg );
                         } else {
                                 regerror( regex_error, &regex_preg, regex_error_buffer, MAX_INPUT_BUFFER);
-                                asprintf( &msg, "%s %s: Regex execute Error: %s\n",
+                                xasprintf( &msg, "%s %s: Regex execute Error: %s\n",
                                                 protocol_text( use_ssl) ,
                                                 state_text( STATE_CRITICAL ),
                                                 regex_error_buffer );
@@ -1152,16 +1152,16 @@ prepare_follow_redirect( struct pageref *page )
         char *orig_url_dirname = NULL;
         size_t len = 0;
 
-        asprintf( &header, "%s", page->header );
+        xasprintf( &header, "%s", page->header );
 
 
         /* restore some default values */
         use_http_post_data = FALSE;
-        asprintf( &http_method, "%s", DEFAULT_HTTP_METHOD );
+        xasprintf( &http_method, "%s", DEFAULT_HTTP_METHOD );
 
         /* copy url of original request, maybe we need it to compose 
            absolute url from relative Location: header */
-        asprintf( &orig_url_path, "%s", http_url_path );
+        xasprintf( &orig_url_path, "%s", http_url_path );
 
         while ( strcspn( header, "\r\n" ) > (size_t) 0 ) {
                 url_path = realloc( url_path, (size_t) strcspn( header, "\r\n" ) );
@@ -1172,43 +1172,43 @@ prepare_follow_redirect( struct pageref *page )
                 /* Try to find a Location header combination of METHOD HOSTNAME PORT and PATH */
                 /* 1. scan for Location: http[s]://hostname:port/path */
                 if ( sscanf ( header, HTTP_HEADER_LOCATION_MATCH HTTP_HEADER_PROTOCOL_MATCH HTTP_HEADER_HOSTNAME_MATCH HTTP_HEADER_PORT_MATCH HTTP_HEADER_URL_PATH_MATCH, &protocol, &hostname, &port, url_path ) == 4 ) {
-                        asprintf( &server_hostname, "%s", hostname );
-                        asprintf( &server_host, "%s", hostname );
+                        xasprintf( &server_hostname, "%s", hostname );
+                        xasprintf( &server_host, "%s", hostname );
                         use_ssl = chk_protocol(protocol);
                         server_port = atoi( port );
-                        asprintf( &http_url_path, "%s", url_path );
+                        xasprintf( &http_url_path, "%s", url_path );
                         return STATE_DEPENDENT;
                 } 
                 else if ( sscanf ( header, HTTP_HEADER_LOCATION_MATCH HTTP_HEADER_PROTOCOL_MATCH HTTP_HEADER_HOSTNAME_MATCH HTTP_HEADER_URL_PATH_MATCH, &protocol, &hostname, url_path ) == 3) {
-                        asprintf( &server_hostname, "%s", hostname );
-                        asprintf( &server_host, "%s", hostname );
+                        xasprintf( &server_hostname, "%s", hostname );
+                        xasprintf( &server_host, "%s", hostname );
                         use_ssl = chk_protocol(protocol);
                         server_port = protocol_std_port(use_ssl);
-                        asprintf( &http_url_path, "%s", url_path );
+                        xasprintf( &http_url_path, "%s", url_path );
                         return STATE_DEPENDENT;
                 }
                 else if ( sscanf ( header, HTTP_HEADER_LOCATION_MATCH HTTP_HEADER_PROTOCOL_MATCH HTTP_HEADER_HOSTNAME_MATCH HTTP_HEADER_PORT_MATCH, &protocol, &hostname, &port ) == 3) {
-                        asprintf( &server_hostname, "%s", hostname );
-                        asprintf( &server_host, "%s", hostname );
+                        xasprintf( &server_hostname, "%s", hostname );
+                        xasprintf( &server_host, "%s", hostname );
                         use_ssl = chk_protocol(protocol);
                         server_port = atoi( port );
-                        asprintf( &http_url_path, "%s", DEFAULT_HTTP_URL_PATH );
+                        xasprintf( &http_url_path, "%s", DEFAULT_HTTP_URL_PATH );
                         return STATE_DEPENDENT;
                 }
                 else if ( sscanf ( header, HTTP_HEADER_LOCATION_MATCH HTTP_HEADER_PROTOCOL_MATCH HTTP_HEADER_HOSTNAME_MATCH, protocol, hostname ) == 2 ) {
-                        asprintf( &server_hostname, "%s", hostname );
-                        asprintf( &server_host, "%s", hostname );
+                        xasprintf( &server_hostname, "%s", hostname );
+                        xasprintf( &server_host, "%s", hostname );
                         use_ssl = chk_protocol(protocol);
                         server_port = protocol_std_port(use_ssl);
-                        asprintf( &http_url_path, "%s", DEFAULT_HTTP_URL_PATH );
+                        xasprintf( &http_url_path, "%s", DEFAULT_HTTP_URL_PATH );
                 }
                 else if ( sscanf ( header, HTTP_HEADER_LOCATION_MATCH HTTP_HEADER_URL_PATH_MATCH, url_path ) == 1 ) {
                         /* check for relative url and prepend path if necessary */
                         if ( ( url_path[0] != '/' ) && ( orig_url_dirname = strrchr( orig_url_path, '/' ) ) ) {
                                 *orig_url_dirname = '\0';
-                                asprintf( &http_url_path, "%s%s", orig_url_path, url_path );
+                                xasprintf( &http_url_path, "%s%s", orig_url_path, url_path );
                         } else {
-                                asprintf( &http_url_path, "%s", url_path );
+                                xasprintf( &http_url_path, "%s", url_path );
                         }
                         return STATE_DEPENDENT;
                 }
@@ -1218,7 +1218,7 @@ prepare_follow_redirect( struct pageref *page )
         
 
         /* default return value is STATE_DEPENDENT to continue looping in main() */
-        asprintf( &msg, "% %: % - Could not find redirect Location",
+        xasprintf( &msg, "% %: % - Could not find redirect Location",
                         protocol_text( use_ssl ),
                         state_text( STATE_UNKNOWN ),
                         page->status );
@@ -1239,24 +1239,24 @@ https_request( SSL_CTX *ctx, SSL *ssl, struct pageref *page )
         size_t size = 0;
         char *basic_auth_encoded = NULL;
 
-        asprintf( &buffer, HTTP_TEMPLATE_REQUEST, buffer, http_method, http_url_path );
+        xasprintf( &buffer, HTTP_TEMPLATE_REQUEST, buffer, http_method, http_url_path );
 
-        asprintf( &buffer, HTTP_TEMPLATE_HEADER_USERAGENT, buffer, progname, REVISION, PACKAGE_VERSION );
+        xasprintf( &buffer, HTTP_TEMPLATE_HEADER_USERAGENT, buffer, progname, REVISION, PACKAGE_VERSION );
         
         if ( use_server_hostname ) {
-                asprintf( &buffer, HTTP_TEMPLATE_HEADER_HOST, buffer, server_hostname );
+                xasprintf( &buffer, HTTP_TEMPLATE_HEADER_HOST, buffer, server_hostname );
         }
 
         if ( use_basic_auth ) {
                 basic_auth_encoded = base64( basic_auth, strlen( basic_auth ) );
-                asprintf( &buffer, HTTP_TEMPLATE_HEADER_AUTH, buffer, basic_auth_encoded );
+                xasprintf( &buffer, HTTP_TEMPLATE_HEADER_AUTH, buffer, basic_auth_encoded );
         }
 
         /* either send http POST data */
         if ( use_http_post_data ) {
-                asprintf( &buffer, "%sContent-Type: application/x-www-form-urlencoded\r\n", buffer );
-                asprintf( &buffer, "%sContent-Length: %i\r\n\r\n", buffer, content_len );
-                asprintf( &buffer, "%s%s%s", buffer, http_post_data, "\r\n" );
+                xasprintf( &buffer, "%sContent-Type: application/x-www-form-urlencoded\r\n", buffer );
+                xasprintf( &buffer, "%sContent-Length: %i\r\n\r\n", buffer, content_len );
+                xasprintf( &buffer, "%s%s%s", buffer, http_post_data, "\r\n" );
                 sendsize = SSL_write( ssl, buffer, strlen( buffer ) );
                 switch ( SSL_get_error( ssl, sendsize ) ) {
                         case SSL_ERROR_NONE:
@@ -1270,7 +1270,7 @@ https_request( SSL_CTX *ctx, SSL *ssl, struct pageref *page )
         /* or just a newline */
         } else {
 
-                asprintf( &buffer, "%s\r\n", buffer );
+                xasprintf( &buffer, "%s\r\n", buffer );
                 sendsize = SSL_write( ssl, buffer, strlen( buffer ) );
                 switch ( SSL_get_error( ssl, sendsize ) ) {
                         case SSL_ERROR_NONE:
@@ -1293,7 +1293,7 @@ https_request( SSL_CTX *ctx, SSL *ssl, struct pageref *page )
                         case SSL_ERROR_NONE:
                                 if ( recvsize > (size_t) 0 ) {
                                         recvbuff[recvsize] = '\0';
-                                        asprintf( &content, "%s%s", content, recvbuff );
+                                        xasprintf( &content, "%s%s", content, recvbuff );
                                         size += recvsize;
                                 }
                                 break;
@@ -1317,7 +1317,7 @@ https_request( SSL_CTX *ctx, SSL *ssl, struct pageref *page )
                 }
         } while ( recvsize > (size_t) 0 );
 
-        asprintf( &page->content, "%s", content );
+        xasprintf( &page->content, "%s", content );
         page->size = size;
 
         /* return a CRITICAL status if we couldn't read any data */
@@ -1446,7 +1446,7 @@ check_server_certificate_hostname( )
         char *msg = NULL;
         X509_NAME_get_text_by_NID( X509_get_subject_name( server_certificate ), NID_commonName, server_CN, 256 );
         if ( strcasecmp( server_CN, server_hostname ) ) {
-                asprintf( &msg, "SSL ERROR: Server Certificate does not match Hostname %s.\n", server_hostname );
+                xasprintf( &msg, "SSL ERROR: Server Certificate does not match Hostname %s.\n", server_hostname );
                 ssl_terminate( STATE_WARNING, msg );
         }
 
@@ -1507,20 +1507,20 @@ check_server_certificate_expires( )
                  stamp.tm_hour, stamp.tm_min );
 
         if ( ( days_left > 0 ) && ( days_left <= server_certificate_min_days_valid ) ) {
-                asprintf( &msg, "Certificate expires in %d day(s) (%s).\n", days_left, timestamp );
+                xasprintf( &msg, "Certificate expires in %d day(s) (%s).\n", days_left, timestamp );
                 ssl_terminate( STATE_WARNING, msg );
         }
         if ( days_left < 0 ) {
-                asprintf( &msg, "Certificate expired on %s.\n", timestamp );
+                xasprintf( &msg, "Certificate expired on %s.\n", timestamp );
                 ssl_terminate( STATE_CRITICAL, msg );
         }
 
         if (days_left == 0) {
-                asprintf( &msg, "Certificate expires today (%s).\n", timestamp );
+                xasprintf( &msg, "Certificate expires today (%s).\n", timestamp );
                 ssl_terminate( STATE_WARNING, msg );
         }
 
-        asprintf( &msg, "Certificate will expire on %s.\n", timestamp );
+        xasprintf( &msg, "Certificate will expire on %s.\n", timestamp );
         ssl_terminate( STATE_OK, msg );
 }
 #endif
diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c
index 8752016..c5f0d52 100644
--- a/plugins/check_by_ssh.c
+++ b/plugins/check_by_ssh.c
@@ -281,8 +281,8 @@ process_arguments (int argc, char **argv)
 		case 'C':									/* Command for remote machine */
 			commands++;
 			if (commands > 1)
-				asprintf (&remotecmd, "%s;echo STATUS CODE: $?;", remotecmd);
-			asprintf (&remotecmd, "%s%s", remotecmd, optarg);
+				xasprintf (&remotecmd, "%s;echo STATUS CODE: $?;", remotecmd);
+			xasprintf (&remotecmd, "%s%s", remotecmd, optarg);
 			break;
 		case 'S':									/* skip n (or all) lines on stdout */
 			if (optarg == NULL)
@@ -328,13 +328,13 @@ process_arguments (int argc, char **argv)
 	if (strlen(remotecmd) == 0) {
 		for (; c < argc; c++)
 			if (strlen(remotecmd) > 0)
-				asprintf (&remotecmd, "%s %s", remotecmd, argv[c]);
+				xasprintf (&remotecmd, "%s %s", remotecmd, argv[c]);
 			else
-				asprintf (&remotecmd, "%s", argv[c]);
+				xasprintf (&remotecmd, "%s", argv[c]);
 	}
 
 	if (commands > 1 || passive)
-		asprintf (&remotecmd, "%s;echo STATUS CODE: $?;", remotecmd);
+		xasprintf (&remotecmd, "%s;echo STATUS CODE: $?;", remotecmd);
 
 	if (remotecmd == NULL || strlen (remotecmd) <= 1)
 		usage_va(_("No remotecmd"));
diff --git a/plugins/check_dig.c b/plugins/check_dig.c
index 06f59c8..893e0a1 100644
--- a/plugins/check_dig.c
+++ b/plugins/check_dig.c
@@ -87,7 +87,7 @@ main (int argc, char **argv)
     usage_va(_("Could not parse arguments"));
 
   /* get the command to run */
-  asprintf (&command_line, "%s @%s -p %d %s -t %s %s",
+  xasprintf (&command_line, "%s @%s -p %d %s -t %s %s",
             PATH_TO_DIG, dns_server, server_port, query_address, record_type, dig_args);
 
   alarm (timeout_interval);
@@ -306,7 +306,7 @@ print_help (void)
 {
   char *myport;
 
-  asprintf (&myport, "%d", DEFAULT_PORT);
+  xasprintf (&myport, "%d", DEFAULT_PORT);
 
   print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_disk.c b/plugins/check_disk.c
index f889764..f8e913e 100644
--- a/plugins/check_disk.c
+++ b/plugins/check_disk.c
@@ -320,7 +320,7 @@ main (int argc, char **argv)
       }
 
       /* Nb: *_high_tide are unset when == UINT_MAX */
-      asprintf (&perf, "%s %s", perf,
+      xasprintf (&perf, "%s %s", perf,
                 perfdata ((!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
                           path->dused_units, units,
                           (warning_high_tide != UINT_MAX ? TRUE : FALSE), warning_high_tide,
@@ -331,20 +331,20 @@ main (int argc, char **argv)
       if (disk_result==STATE_OK && erronly && !verbose)
         continue;
 
-      asprintf (&output, "%s %s %.0f %s (%.0f%%",
+      xasprintf (&output, "%s %s %.0f %s (%.0f%%",
                 output,
                 (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
                 path->dfree_units,
                 units,
                 path->dfree_pct);
       if (path->dused_inodes_percent < 0) {
-        asprintf(&output, "%s inode=-);", output);
+        xasprintf(&output, "%s inode=-);", output);
       } else {
-        asprintf(&output, "%s inode=%.0f%%);", output, path->dfree_inodes_percent );
+        xasprintf(&output, "%s inode=%.0f%%);", output, path->dfree_inodes_percent );
       }
 
       /* TODO: Need to do a similar debug line
-      asprintf (&details, _("%s\n\
+      xasprintf (&details, _("%s\n\
 %.0f of %.0f %s (%.0f%% inode=%.0f%%) free on %s (type %s mounted on %s) warn:%lu crit:%lu warn%%:%.0f%% crit%%:%.0f%%"),
                 details, dfree_units, dtotal_units, units, dfree_pct, inode_space_pct,
                 me->me_devname, me->me_type, me->me_mountdir,
@@ -356,7 +356,7 @@ main (int argc, char **argv)
   }
 
   if (verbose >= 2)
-    asprintf (&output, "%s%s", output, details);
+    xasprintf (&output, "%s%s", output, details);
 
 
   printf ("DISK %s%s%s|%s\n", state_text (result), (erronly && result==STATE_OK) ? "" : preamble, output, perf);
@@ -473,13 +473,13 @@ process_arguments (int argc, char **argv)
         if (*optarg == '@') {
           warn_freespace_percent = optarg;
         } else {
-          asprintf(&warn_freespace_percent, "@%s", optarg);
+          xasprintf(&warn_freespace_percent, "@%s", optarg);
         }
       } else {
         if (*optarg == '@') {
           warn_freespace_units = optarg;
         } else {
-          asprintf(&warn_freespace_units, "@%s", optarg);
+          xasprintf(&warn_freespace_units, "@%s", optarg);
         }
       }
       break;
@@ -494,13 +494,13 @@ process_arguments (int argc, char **argv)
         if (*optarg == '@') {
           crit_freespace_percent = optarg;
         } else {
-          asprintf(&crit_freespace_percent, "@%s", optarg);
+          xasprintf(&crit_freespace_percent, "@%s", optarg);
         }
       } else {
         if (*optarg == '@') {
           crit_freespace_units = optarg;
         } else {
-          asprintf(&crit_freespace_units, "@%s", optarg);
+          xasprintf(&crit_freespace_units, "@%s", optarg);
         }
       }
       break;
@@ -509,14 +509,14 @@ process_arguments (int argc, char **argv)
       if (*optarg == '@') {
         warn_freeinodes_percent = optarg;
       } else {
-        asprintf(&warn_freeinodes_percent, "@%s", optarg);
+        xasprintf(&warn_freeinodes_percent, "@%s", optarg);
       }
       break;
     case 'K':			/* critical inode threshold */
       if (*optarg == '@') {
         crit_freeinodes_percent = optarg;
       } else {
-        asprintf(&crit_freeinodes_percent, "@%s", optarg);
+        xasprintf(&crit_freeinodes_percent, "@%s", optarg);
       }
       break;
     case 'u':
diff --git a/plugins/check_dns.c b/plugins/check_dns.c
index 73b560c..91af730 100644
--- a/plugins/check_dns.c
+++ b/plugins/check_dns.c
@@ -103,7 +103,7 @@ main (int argc, char **argv)
   }
 
   /* get the command to run */
-  asprintf (&command_line, "%s %s %s", NSLOOKUP_COMMAND, query_address, dns_server);
+  xasprintf (&command_line, "%s %s %s", NSLOOKUP_COMMAND, query_address, dns_server);
 
   alarm (timeout_interval);
   gettimeofday (&tv, NULL);
@@ -208,19 +208,19 @@ main (int argc, char **argv)
     for (i=0; i<expected_address_cnt; i++) {
       /* check if we get a match and prepare an error string */
       if (strcmp(address, expected_address[i]) == 0) result = STATE_OK;
-      asprintf(&temp_buffer, "%s%s; ", temp_buffer, expected_address[i]);
+      xasprintf(&temp_buffer, "%s%s; ", temp_buffer, expected_address[i]);
     }
     if (result == STATE_CRITICAL) {
       /* Strip off last semicolon... */
       temp_buffer[strlen(temp_buffer)-2] = '\0';
-      asprintf(&msg, _("expected '%s' but got '%s'"), temp_buffer, address);
+      xasprintf(&msg, _("expected '%s' but got '%s'"), temp_buffer, address);
     }
   }
 
   /* check if authoritative */
   if (result == STATE_OK && expect_authority && non_authoritative) {
     result = STATE_CRITICAL;
-    asprintf(&msg, _("server %s is not authoritative for %s"), dns_server, query_address);
+    xasprintf(&msg, _("server %s is not authoritative for %s"), dns_server, query_address);
   }
 
   microsec = deltime (tv);
diff --git a/plugins/check_fping.c b/plugins/check_fping.c
index dd3f86d..675a547 100644
--- a/plugins/check_fping.c
+++ b/plugins/check_fping.c
@@ -92,11 +92,11 @@ main (int argc, char **argv)
 
   /* compose the command */
   if (target_timeout)
-    asprintf(&option_string, "%s-t %d ", option_string, target_timeout);
+    xasprintf(&option_string, "%s-t %d ", option_string, target_timeout);
   if (packet_interval)
-    asprintf(&option_string, "%s-p %d ", option_string, packet_interval);
+    xasprintf(&option_string, "%s-p %d ", option_string, packet_interval);
 
-  asprintf (&command_line, "%s %s-b %d -c %d %s", PATH_TO_FPING,
+  xasprintf (&command_line, "%s %s-b %d -c %d %s", PATH_TO_FPING,
             option_string, packet_size, packet_count, server);
 
   if (verbose)
diff --git a/plugins/check_game.c b/plugins/check_game.c
index 5496c4d..89bb4b1 100644
--- a/plugins/check_game.c
+++ b/plugins/check_game.c
@@ -84,11 +84,11 @@ main (int argc, char **argv)
   result = STATE_OK;
 
   /* create the command line to execute */
-  asprintf (&command_line, "%s -raw %s -%s %s",
+  xasprintf (&command_line, "%s -raw %s -%s %s",
             PATH_TO_QSTAT, QSTAT_DATA_DELIMITER, game_type, server_ip);
 
   if (port)
-    asprintf (&command_line, "%s:%-d", command_line, port);
+    xasprintf (&command_line, "%s:%-d", command_line, port);
 
   if (verbose > 0)
     printf ("%s\n", command_line);
diff --git a/plugins/check_hpjd.c b/plugins/check_hpjd.c
index 51a0099..60e922e 100644
--- a/plugins/check_hpjd.c
+++ b/plugins/check_hpjd.c
@@ -227,7 +227,7 @@ main (int argc, char **argv)
 
 		/* might not be the problem, but most likely is. */
 		result = STATE_UNKNOWN ;
-		asprintf (&errmsg, "%s : Timeout from host %s\n", errmsg, address );
+		xasprintf (&errmsg, "%s : Timeout from host %s\n", errmsg, address );
 
 	}
 
diff --git a/plugins/check_http.c b/plugins/check_http.c
index 703e317..77a235e 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -147,7 +147,7 @@ main (int argc, char **argv)
   /* Set default URL. Must be malloced for subsequent realloc if --onredirect=follow */
   server_url = strdup(HTTP_URL);
   server_url_length = strlen(server_url);
-  asprintf (&user_agent, "User-Agent: check_http/v%s (nagios-plugins %s)",
+  xasprintf (&user_agent, "User-Agent: check_http/v%s (nagios-plugins %s)",
             NP_VERSION, VERSION);
 
   /* Parse extra opts if any */
@@ -265,7 +265,7 @@ process_arguments (int argc, char **argv)
       warning_thresholds = optarg;
       break;
     case 'A': /* User Agent String */
-      asprintf (&user_agent, "User-Agent: %s", optarg);
+      xasprintf (&user_agent, "User-Agent: %s", optarg);
       break;
     case 'k': /* Additional headers */
       if (http_opt_headers_count == 0)
@@ -273,7 +273,7 @@ process_arguments (int argc, char **argv)
       else
         http_opt_headers = realloc (http_opt_headers, sizeof (char *) * (++http_opt_headers_count));
       http_opt_headers[http_opt_headers_count - 1] = optarg;
-      /* asprintf (&http_opt_headers, "%s", optarg); */
+      /* xasprintf (&http_opt_headers, "%s", optarg); */
       break;
     case 'L': /* show html link */
       display_html = TRUE;
@@ -394,7 +394,7 @@ process_arguments (int argc, char **argv)
       server_expect_yn = 1;
       break;
     case 'T': /* Content-type */
-      asprintf (&http_content_type, "%s", optarg);
+      xasprintf (&http_content_type, "%s", optarg);
       break;
     case 'l': /* linespan */
       cflags &= ~REG_NEWLINE;
@@ -690,31 +690,31 @@ check_document_dates (const char *headers, char **msg)
 
   /* Done parsing the body.  Now check the dates we (hopefully) parsed.  */
   if (!server_date || !*server_date) {
-    asprintf (msg, _("%sServer date unknown, "), *msg);
+    xasprintf (msg, _("%sServer date unknown, "), *msg);
     date_result = max_state_alt(STATE_UNKNOWN, date_result);
   } else if (!document_date || !*document_date) {
-    asprintf (msg, _("%sDocument modification date unknown, "), *msg);
+    xasprintf (msg, _("%sDocument modification date unknown, "), *msg);
     date_result = max_state_alt(STATE_CRITICAL, date_result);
   } else {
     time_t srv_data = parse_time_string (server_date);
     time_t doc_data = parse_time_string (document_date);
 
     if (srv_data <= 0) {
-      asprintf (msg, _("%sServer date \"%100s\" unparsable, "), *msg, server_date);
+      xasprintf (msg, _("%sServer date \"%100s\" unparsable, "), *msg, server_date);
       date_result = max_state_alt(STATE_CRITICAL, date_result);
     } else if (doc_data <= 0) {
-      asprintf (msg, _("%sDocument date \"%100s\" unparsable, "), *msg, document_date);
+      xasprintf (msg, _("%sDocument date \"%100s\" unparsable, "), *msg, document_date);
       date_result = max_state_alt(STATE_CRITICAL, date_result);
     } else if (doc_data > srv_data + 30) {
-      asprintf (msg, _("%sDocument is %d seconds in the future, "), *msg, (int)doc_data - (int)srv_data);
+      xasprintf (msg, _("%sDocument is %d seconds in the future, "), *msg, (int)doc_data - (int)srv_data);
       date_result = max_state_alt(STATE_CRITICAL, date_result);
     } else if (doc_data < srv_data - maximum_age) {
       int n = (srv_data - doc_data);
       if (n > (60 * 60 * 24 * 2)) {
-        asprintf (msg, _("%sLast modified %.1f days ago, "), *msg, ((float) n) / (60 * 60 * 24));
+        xasprintf (msg, _("%sLast modified %.1f days ago, "), *msg, ((float) n) / (60 * 60 * 24));
         date_result = max_state_alt(STATE_CRITICAL, date_result);
       } else {
-        asprintf (msg, _("%sLast modified %d:%02d:%02d ago, "), *msg, n / (60 * 60), (n / 60) % 60, n % 60);
+        xasprintf (msg, _("%sLast modified %d:%02d:%02d ago, "), *msg, n / (60 * 60), (n / 60) % 60, n % 60);
         date_result = max_state_alt(STATE_CRITICAL, date_result);
       }
     }
@@ -831,10 +831,10 @@ check_http (void)
   }
 #endif /* HAVE_SSL */
 
-  asprintf (&buf, "%s %s %s\r\n%s\r\n", http_method, server_url, host_name ? "HTTP/1.1" : "HTTP/1.0", user_agent);
+  xasprintf (&buf, "%s %s %s\r\n%s\r\n", http_method, server_url, host_name ? "HTTP/1.1" : "HTTP/1.0", user_agent);
 
   /* tell HTTP/1.1 servers not to keep the connection alive */
-  asprintf (&buf, "%sConnection: close\r\n", buf);
+  xasprintf (&buf, "%sConnection: close\r\n", buf);
 
   /* optionally send the host header info */
   if (host_name) {
@@ -845,16 +845,16 @@ check_http (void)
      */
     if ((use_ssl == FALSE && server_port == HTTP_PORT) ||
         (use_ssl == TRUE && server_port == HTTPS_PORT))
-      asprintf (&buf, "%sHost: %s\r\n", buf, host_name);
+      xasprintf (&buf, "%sHost: %s\r\n", buf, host_name);
     else
-      asprintf (&buf, "%sHost: %s:%d\r\n", buf, host_name, server_port);
+      xasprintf (&buf, "%sHost: %s:%d\r\n", buf, host_name, server_port);
   }
 
   /* optionally send any other header tag */
   if (http_opt_headers_count) {
     for (i = 0; i < http_opt_headers_count ; i++) {
       for ((pos = strtok(http_opt_headers[i], INPUT_DELIMITER)); pos; (pos = strtok(NULL, INPUT_DELIMITER)))
-        asprintf (&buf, "%s%s\r\n", buf, pos);
+        xasprintf (&buf, "%s%s\r\n", buf, pos);
     }
     /* This cannot be free'd here because a redirection will then try to access this and segfault */
     /* Covered in a testcase in tests/check_http.t */
@@ -864,29 +864,29 @@ check_http (void)
   /* optionally send the authentication info */
   if (strlen(user_auth)) {
     base64_encode_alloc (user_auth, strlen (user_auth), &auth);
-    asprintf (&buf, "%sAuthorization: Basic %s\r\n", buf, auth);
+    xasprintf (&buf, "%sAuthorization: Basic %s\r\n", buf, auth);
   }
 
   /* optionally send the proxy authentication info */
   if (strlen(proxy_auth)) {
     base64_encode_alloc (proxy_auth, strlen (proxy_auth), &auth);
-    asprintf (&buf, "%sProxy-Authorization: Basic %s\r\n", buf, auth);
+    xasprintf (&buf, "%sProxy-Authorization: Basic %s\r\n", buf, auth);
   }
 
   /* either send http POST data (any data, not only POST)*/
   if (http_post_data) {
     if (http_content_type) {
-      asprintf (&buf, "%sContent-Type: %s\r\n", buf, http_content_type);
+      xasprintf (&buf, "%sContent-Type: %s\r\n", buf, http_content_type);
     } else {
-      asprintf (&buf, "%sContent-Type: application/x-www-form-urlencoded\r\n", buf);
+      xasprintf (&buf, "%sContent-Type: application/x-www-form-urlencoded\r\n", buf);
     }
 
-    asprintf (&buf, "%sContent-Length: %i\r\n\r\n", buf, (int)strlen (http_post_data));
-    asprintf (&buf, "%s%s%s", buf, http_post_data, CRLF);
+    xasprintf (&buf, "%sContent-Length: %i\r\n\r\n", buf, (int)strlen (http_post_data));
+    xasprintf (&buf, "%s%s%s", buf, http_post_data, CRLF);
   }
   else {
     /* or just a newline so the server knows we're done with the request */
-    asprintf (&buf, "%s%s", buf, CRLF);
+    xasprintf (&buf, "%s%s", buf, CRLF);
   }
 
   if (verbose) printf ("%s\n", buf);
@@ -896,7 +896,7 @@ check_http (void)
   full_page = strdup("");
   while ((i = my_recv (buffer, MAX_INPUT_BUFFER-1)) > 0) {
     buffer[i] = '\0';
-    asprintf (&full_page_new, "%s%s", full_page, buffer);
+    xasprintf (&full_page_new, "%s%s", full_page, buffer);
     free (full_page);
     full_page = full_page_new;
     pagesize += i;
@@ -981,11 +981,11 @@ check_http (void)
   /* make sure the status line matches the response we are looking for */
   if (!expected_statuscode (status_line, server_expect)) {
     if (server_port == HTTP_PORT)
-      asprintf (&msg,
+      xasprintf (&msg,
                 _("Invalid HTTP response received from host: %s\n"),
                 status_line);
     else
-      asprintf (&msg,
+      xasprintf (&msg,
                 _("Invalid HTTP response received from host on port %d: %s\n"),
                 server_port, status_line);
     die (STATE_CRITICAL, "HTTP CRITICAL - %s", msg);
@@ -994,7 +994,7 @@ check_http (void)
   /* Bypass normal status line check if server_expect was set by user and not default */
   /* NOTE: After this if/else block msg *MUST* be an asprintf-allocated string */
   if ( server_expect_yn  )  {
-    asprintf (&msg,
+    xasprintf (&msg,
               _("Status line output matched \"%s\" - "), server_expect);
     if (verbose)
       printf ("%s\n",msg);
@@ -1017,12 +1017,12 @@ check_http (void)
     }
     /* server errors result in a critical state */
     else if (http_status >= 500) {
-      asprintf (&msg, _("%s - "), status_line);
+      xasprintf (&msg, _("%s - "), status_line);
       result = STATE_CRITICAL;
     }
     /* client errors result in a warning state */
     else if (http_status >= 400) {
-      asprintf (&msg, _("%s - "), status_line);
+      xasprintf (&msg, _("%s - "), status_line);
       result = max_state_alt(STATE_WARNING, result);
     }
     /* check redirected page if specified */
@@ -1032,11 +1032,11 @@ check_http (void)
         redir (header, status_line);
       else
         result = max_state_alt(onredirect, result);
-      asprintf (&msg, _("%s - "), status_line);
+      xasprintf (&msg, _("%s - "), status_line);
     } /* end if (http_status >= 300) */
     else {
       /* Print OK status anyway */
-      asprintf (&msg, _("%s - "), status_line);
+      xasprintf (&msg, _("%s - "), status_line);
     }
 
   } /* end else (server_expect_yn)  */
@@ -1056,7 +1056,7 @@ check_http (void)
       if(output_string_search[sizeof(output_string_search)-1]!='\0') {
         bcopy("...",&output_string_search[sizeof(output_string_search)-4],4);
       }
-      asprintf (&msg, _("%sstring '%s' not found on '%s://%s:%d%s', "), msg, output_string_search, use_ssl ? "https" : "http", host_name ? host_name : server_address, server_port, server_url);
+      xasprintf (&msg, _("%sstring '%s' not found on '%s://%s:%d%s', "), msg, output_string_search, use_ssl ? "https" : "http", host_name ? host_name : server_address, server_port, server_url);
       result = STATE_CRITICAL;
     }
   }
@@ -1069,15 +1069,15 @@ check_http (void)
     }
     else if ((errcode == REG_NOMATCH && invert_regex == 0) || (errcode == 0 && invert_regex == 1)) {
       if (invert_regex == 0)
-        asprintf (&msg, _("%spattern not found, "), msg);
+        xasprintf (&msg, _("%spattern not found, "), msg);
       else
-        asprintf (&msg, _("%spattern found, "), msg);
+        xasprintf (&msg, _("%spattern found, "), msg);
       result = STATE_CRITICAL;
     }
     else {
       /* FIXME: Shouldn't that be UNKNOWN? */
       regerror (errcode, &preg, errbuf, MAX_INPUT_BUFFER);
-      asprintf (&msg, _("%sExecute Error: %s, "), msg, errbuf);
+      xasprintf (&msg, _("%sExecute Error: %s, "), msg, errbuf);
       result = STATE_CRITICAL;
     }
   }
@@ -1093,10 +1093,10 @@ check_http (void)
    */
   page_len = pagesize;
   if ((max_page_len > 0) && (page_len > max_page_len)) {
-    asprintf (&msg, _("%spage size %d too large, "), msg, page_len);
+    xasprintf (&msg, _("%spage size %d too large, "), msg, page_len);
     result = max_state_alt(STATE_WARNING, result);
   } else if ((min_page_len > 0) && (page_len < min_page_len)) {
-    asprintf (&msg, _("%spage size %d too small, "), msg, page_len);
+    xasprintf (&msg, _("%spage size %d too small, "), msg, page_len);
     result = max_state_alt(STATE_WARNING, result);
   }
 
@@ -1107,7 +1107,7 @@ check_http (void)
     msg[strlen(msg)-3] = '\0';
 
   /* check elapsed time */
-  asprintf (&msg,
+  xasprintf (&msg,
             _("%s - %d bytes in %.3f second response time %s|%s %s"),
             msg, page_len, elapsed_time,
             (display_html ? "</A>" : ""),
@@ -1214,7 +1214,7 @@ redir (char *pos, char *status_line)
       if ((url[0] != '/')) {
         if ((x = strrchr(server_url, '/')))
           *x = '\0';
-        asprintf (&url, "%s/%s", server_url, url);
+        xasprintf (&url, "%s/%s", server_url, url);
       }
       i = server_port;
       strcpy (type, server_type);
diff --git a/plugins/check_ldap.c b/plugins/check_ldap.c
index f83f139..65db851 100644
--- a/plugins/check_ldap.c
+++ b/plugins/check_ldap.c
@@ -99,7 +99,7 @@ main (int argc, char *argv[])
 	textdomain (PACKAGE);
 
 	if (strstr(argv[0],"check_ldaps")) {
-		asprintf (&progname, "check_ldaps");
+		xasprintf (&progname, "check_ldaps");
  	}
 
 	/* Parse extra opts if any */
@@ -145,7 +145,7 @@ main (int argc, char *argv[])
 #endif
 
 	if (ld_port == LDAPS_PORT || ssl_on_connect) {
-		asprintf (&SERVICE, "LDAPS");
+		xasprintf (&SERVICE, "LDAPS");
 #if defined(HAVE_LDAP_SET_OPTION) && defined(LDAP_OPT_X_TLS)
 		/* ldaps: set option tls */
 		tls = LDAP_OPT_X_TLS_HARD;
@@ -162,7 +162,7 @@ main (int argc, char *argv[])
 		return STATE_CRITICAL;
 #endif /* LDAP_OPT_X_TLS */
 	} else if (starttls) {
-		asprintf (&SERVICE, "LDAP-TLS");
+		xasprintf (&SERVICE, "LDAP-TLS");
 #if defined(HAVE_LDAP_SET_OPTION) && defined(HAVE_LDAP_START_TLS_S)
 		/* ldap with startTLS: set option version */
 		if (ldap_get_option(ld,LDAP_OPT_PROTOCOL_VERSION, &version) == LDAP_OPT_SUCCESS )
@@ -389,7 +389,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", DEFAULT_PORT);
+	xasprintf (&myport, "%d", DEFAULT_PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_load.c b/plugins/check_load.c
index 1bdb06a..780ffff 100644
--- a/plugins/check_load.c
+++ b/plugins/check_load.c
@@ -186,7 +186,7 @@ main (int argc, char **argv)
 	/* we got this far, so assume OK until we've measured */
 	result = STATE_OK;
 
-	asprintf(&status_line, _("load average: %.2f, %.2f, %.2f"), la1, la5, la15);
+	xasprintf(&status_line, _("load average: %.2f, %.2f, %.2f"), la1, la5, la15);
 
 	for(i = 0; i < 3; i++) {
 		if(la[i] > cload[i]) {
diff --git a/plugins/check_mrtgtraf.c b/plugins/check_mrtgtraf.c
index 4fd9bc0..a822651 100644
--- a/plugins/check_mrtgtraf.c
+++ b/plugins/check_mrtgtraf.c
@@ -191,7 +191,7 @@ main (int argc, char **argv)
 		result = STATE_WARNING;
 	}
 
-	asprintf (&error_message, _("%s. In = %0.1f %s, %s. Out = %0.1f %s|%s %s\n"),
+	xasprintf (&error_message, _("%s. In = %0.1f %s, %s. Out = %0.1f %s|%s %s\n"),
 	          (use_average == TRUE) ? _("Avg") : _("Max"), adjusted_incoming_rate,
 	          incoming_speed_rating, (use_average == TRUE) ? _("Avg") : _("Max"),
 	          adjusted_outgoing_rate, outgoing_speed_rating,
diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c
index d9b4e53..4fbdc2b 100644
--- a/plugins/check_mysql.c
+++ b/plugins/check_mysql.c
@@ -369,7 +369,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", MYSQL_PORT);
+	xasprintf (&myport, "%d", MYSQL_PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_mysql_query.c b/plugins/check_mysql_query.c
index cf9d8df..0bb83c3 100644
--- a/plugins/check_mysql_query.c
+++ b/plugins/check_mysql_query.c
@@ -233,7 +233,7 @@ process_arguments (int argc, char **argv)
 			print_help ();
 			exit (STATE_OK);
 		case 'q':
-			asprintf(&sql_query, "%s", optarg);
+			xasprintf(&sql_query, "%s", optarg);
 			break;
 		case 'w':
 			warning = optarg;
@@ -277,7 +277,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", MYSQL_PORT);
+	xasprintf (&myport, "%d", MYSQL_PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_nagios.c b/plugins/check_nagios.c
index 6485aa9..c8cdbc0 100644
--- a/plugins/check_nagios.c
+++ b/plugins/check_nagios.c
@@ -137,7 +137,7 @@ main (int argc, char **argv)
 			chld_out.line[i][pos+1] = 0x0;
 		}
 		if ( cols >= expected_cols ) {
-			asprintf (&procargs, "%s", chld_out.line[i] + pos);
+			xasprintf (&procargs, "%s", chld_out.line[i] + pos);
 			strip (procargs);
 
 			/* Some ps return full pathname for command. This removes path */
diff --git a/plugins/check_nt.c b/plugins/check_nt.c
index 60806bb..89c4d8d 100644
--- a/plugins/check_nt.c
+++ b/plugins/check_nt.c
@@ -135,13 +135,13 @@ int main(int argc, char **argv){
 
 	case CHECK_CLIENTVERSION:
 
-		asprintf(&send_buffer, "%s&1", req_password);
+		xasprintf(&send_buffer, "%s&1", req_password);
 		fetch_data (server_address, server_port, send_buffer);
 		if (value_list != NULL && strcmp(recv_buffer, value_list) != 0) {
-			asprintf (&output_message, _("Wrong client version - running: %s, required: %s"), recv_buffer, value_list);
+			xasprintf (&output_message, _("Wrong client version - running: %s, required: %s"), recv_buffer, value_list);
 			return_code = STATE_WARNING;
 		} else {
-			asprintf (&output_message, "%s", recv_buffer);
+			xasprintf (&output_message, "%s", recv_buffer);
 			return_code = STATE_OK;
 		}
 		break;
@@ -167,7 +167,7 @@ int main(int argc, char **argv){
 						 lvalue_list[2+offset]<=(unsigned long)100) {
 
 				/* Send request and retrieve data */
-				asprintf(&send_buffer,"%s&2&%lu",req_password,lvalue_list[0+offset]);
+				xasprintf(&send_buffer,"%s&2&%lu",req_password,lvalue_list[0+offset]);
 				fetch_data (server_address, server_port, send_buffer);
 
 				utilization=strtoul(recv_buffer,NULL,10);
@@ -178,11 +178,11 @@ int main(int argc, char **argv){
 				else if(utilization >= lvalue_list[1+offset] && return_code<STATE_WARNING)
 					return_code=STATE_WARNING;
 
-				asprintf(&output_message,_(" %lu%% (%lu min average)"), utilization, lvalue_list[0+offset]);
-				asprintf(&temp_string,"%s%s",temp_string,output_message);
-				asprintf(&perfdata,_(" '%lu min avg Load'=%lu%%;%lu;%lu;0;100"), lvalue_list[0+offset], utilization,
+				xasprintf(&output_message,_(" %lu%% (%lu min average)"), utilization, lvalue_list[0+offset]);
+				xasprintf(&temp_string,"%s%s",temp_string,output_message);
+				xasprintf(&perfdata,_(" '%lu min avg Load'=%lu%%;%lu;%lu;0;100"), lvalue_list[0+offset], utilization,
 				  lvalue_list[1+offset], lvalue_list[2+offset]);
-				asprintf(&temp_string_perf,"%s%s",temp_string_perf,perfdata);
+				xasprintf(&temp_string_perf,"%s%s",temp_string_perf,perfdata);
 				offset+=3;	/* move across the array */
 			}
 
@@ -196,13 +196,13 @@ int main(int argc, char **argv){
 
 	case CHECK_UPTIME:
 
-		asprintf(&send_buffer, "%s&3", req_password);
+		xasprintf(&send_buffer, "%s&3", req_password);
 		fetch_data (server_address, server_port, send_buffer);
 		uptime=strtoul(recv_buffer,NULL,10);
 		updays = uptime / 86400;
 		uphours = (uptime % 86400) / 3600;
 		upminutes = ((uptime % 86400) % 3600) / 60;
-		asprintf(&output_message,_("System Uptime - %u day(s) %u hour(s) %u minute(s)"),updays,uphours, upminutes);
+		xasprintf(&output_message,_("System Uptime - %u day(s) %u hour(s) %u minute(s)"),updays,uphours, upminutes);
 		if (check_critical_value==TRUE && uptime <= critical_value)
 			return_code=STATE_CRITICAL;
 		else if (check_warning_value==TRUE && uptime <= warning_value)
@@ -218,7 +218,7 @@ int main(int argc, char **argv){
 		else if (strlen(value_list)!=1)
 			output_message = strdup (_("wrong -l argument"));
 		else {
-			asprintf(&send_buffer,"%s&4&%s", req_password, value_list);
+			xasprintf(&send_buffer,"%s&4&%s", req_password, value_list);
 			fetch_data (server_address, server_port, send_buffer);
 			fds=strtok(recv_buffer,"&");
 			tds=strtok(NULL,"&");
@@ -232,10 +232,10 @@ int main(int argc, char **argv){
 				warning_used_space = ((float)warning_value / 100) * total_disk_space;
 				critical_used_space = ((float)critical_value / 100) * total_disk_space;
 
-				asprintf(&temp_string,_("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"),
+				xasprintf(&temp_string,_("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"),
 				  value_list, total_disk_space / 1073741824, (total_disk_space - free_disk_space) / 1073741824,
 				  percent_used_space, free_disk_space / 1073741824, (free_disk_space / total_disk_space)*100);
-				asprintf(&temp_string_perf,_("'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f"), value_list,
+				xasprintf(&temp_string_perf,_("'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f"), value_list,
 				  (total_disk_space - free_disk_space) / 1073741824, warning_used_space / 1073741824,
 				  critical_used_space / 1073741824, total_disk_space / 1073741824);
 
@@ -262,7 +262,7 @@ int main(int argc, char **argv){
 			output_message = strdup (_("No service/process specified"));
 		else {
 			preparelist(value_list);		/* replace , between services with & to send the request */
-			asprintf(&send_buffer,"%s&%u&%s&%s", req_password,(vars_to_check==CHECK_SERVICESTATE)?5:6,
+			xasprintf(&send_buffer,"%s&%u&%s&%s", req_password,(vars_to_check==CHECK_SERVICESTATE)?5:6,
 							 (show_all==TRUE) ? "ShowAll" : "ShowFail",value_list);
 			fetch_data (server_address, server_port, send_buffer);
 			return_code=atoi(strtok(recv_buffer,"&"));
@@ -273,7 +273,7 @@ int main(int argc, char **argv){
 
 	case CHECK_MEMUSE:
 
-		asprintf(&send_buffer,"%s&7", req_password);
+		xasprintf(&send_buffer,"%s&7", req_password);
 		fetch_data (server_address, server_port, send_buffer);
 		mem_commitLimit=atof(strtok(recv_buffer,"&"));
 		mem_commitByte=atof(strtok(NULL,"&"));
@@ -283,10 +283,10 @@ int main(int argc, char **argv){
 
 		/* Divisor should be 1048567, not 3044515, as we are measuring "Commit Charge" here,
 		which equals RAM + Pagefiles. */
-		asprintf(&output_message,_("Memory usage: total:%.2f Mb - used: %.2f Mb (%.0f%%) - free: %.2f Mb (%.0f%%)"),
+		xasprintf(&output_message,_("Memory usage: total:%.2f Mb - used: %.2f Mb (%.0f%%) - free: %.2f Mb (%.0f%%)"),
 		  mem_commitLimit / 1048567, mem_commitByte / 1048567, percent_used_space,
 		  (mem_commitLimit - mem_commitByte) / 1048567, (mem_commitLimit - mem_commitByte) / mem_commitLimit * 100);
-		asprintf(&perfdata,_("'Memory usage'=%.2fMb;%.2f;%.2f;0.00;%.2f"), mem_commitByte / 1048567,
+		xasprintf(&perfdata,_("'Memory usage'=%.2fMb;%.2f;%.2f;0.00;%.2f"), mem_commitByte / 1048567,
 		  warning_used_space / 1048567, critical_used_space / 1048567, mem_commitLimit / 1048567);
 
 		return_code=STATE_OK;
@@ -331,12 +331,12 @@ int main(int argc, char **argv){
 			strtok (value_list, "&");	/* burn the first parameters */
 			description = strtok (NULL, "&");
 			counter_unit = strtok (NULL, "&");
-			asprintf (&send_buffer, "%s&8&%s", req_password, value_list);
+			xasprintf (&send_buffer, "%s&8&%s", req_password, value_list);
 			fetch_data (server_address, server_port, send_buffer);
 			counter_value = atof (recv_buffer);
 
 			if (description == NULL)
-			asprintf (&output_message, "%.f", counter_value);
+			xasprintf (&output_message, "%.f", counter_value);
 			else if (isPercent)
 			{
 				counter_unit = strdup ("%");
@@ -371,13 +371,13 @@ int main(int argc, char **argv){
 			{
 				/* Let's format the output string, finally... */
 					if (strstr(description, "%") == NULL) {
-						asprintf (&output_message, "%s = %.2f %s", description, counter_value, counter_unit);
+						xasprintf (&output_message, "%s = %.2f %s", description, counter_value, counter_unit);
 					} else {
 						/* has formatting, will segv if wrong */
-						asprintf (&output_message, description, counter_value);
+						xasprintf (&output_message, description, counter_value);
 					}
-					asprintf (&output_message, "%s |", output_message);
-					asprintf (&output_message,"%s %s", output_message,
+					xasprintf (&output_message, "%s |", output_message);
+					xasprintf (&output_message,"%s %s", output_message,
 						fperfdata (description, counter_value,
 							counter_unit, 1, warning_value, 1, critical_value,
 							(!(isPercent) && (minval != NULL)), fminval,
@@ -410,7 +410,7 @@ int main(int argc, char **argv){
 			output_message = strdup (_("No counter specified"));
 		else {
 			preparelist(value_list);		/* replace , between services with & to send the request */
-			asprintf(&send_buffer,"%s&9&%s", req_password,value_list);
+			xasprintf(&send_buffer,"%s&9&%s", req_password,value_list);
 			fetch_data (server_address, server_port, send_buffer);
 			age_in_minutes = atoi(strtok(recv_buffer,"&"));
 			description = strtok(NULL,"&");
@@ -439,13 +439,13 @@ int main(int argc, char **argv){
 		if (value_list==NULL)
 			output_message = strdup (_("No counter specified"));
 		else {
-			asprintf(&send_buffer,"%s&10&%s", req_password,value_list);
+			xasprintf(&send_buffer,"%s&10&%s", req_password,value_list);
 			fetch_data (server_address, server_port, send_buffer);
 			if (!strncmp(recv_buffer,"ERROR",5)) {
 				printf("NSClient - %s\n",recv_buffer);
 				exit(STATE_UNKNOWN);
 			}
-			asprintf(&output_message,"%s",recv_buffer);
+			xasprintf(&output_message,"%s",recv_buffer);
 			return_code=STATE_OK;
 		}
 		break;
diff --git a/plugins/check_ntp.c b/plugins/check_ntp.c
index ac89def..76d19ba 100644
--- a/plugins/check_ntp.c
+++ b/plugins/check_ntp.c
@@ -800,28 +800,28 @@ int main(int argc, char *argv[]){
 
 	switch (result) {
 		case STATE_CRITICAL :
-			asprintf(&result_line, _("NTP CRITICAL:"));
+			xasprintf(&result_line, _("NTP CRITICAL:"));
 			break;
 		case STATE_WARNING :
-			asprintf(&result_line, _("NTP WARNING:"));
+			xasprintf(&result_line, _("NTP WARNING:"));
 			break;
 		case STATE_OK :
-			asprintf(&result_line, _("NTP OK:"));
+			xasprintf(&result_line, _("NTP OK:"));
 			break;
 		default :
-			asprintf(&result_line, _("NTP UNKNOWN:"));
+			xasprintf(&result_line, _("NTP UNKNOWN:"));
 			break;
 	}
 	if(offset_result == STATE_UNKNOWN){
-		asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
-		asprintf(&perfdata_line, "");
+		xasprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
+		xasprintf(&perfdata_line, "");
 	} else {
-		asprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
-		asprintf(&perfdata_line, "%s", perfd_offset(offset));
+		xasprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
+		xasprintf(&perfdata_line, "%s", perfd_offset(offset));
 	}
 	if (do_jitter) {
-		asprintf(&result_line, "%s, jitter=%f", result_line, jitter);
-		asprintf(&perfdata_line, "%s %s", perfdata_line,  perfd_jitter(jitter));
+		xasprintf(&result_line, "%s, jitter=%f", result_line, jitter);
+		xasprintf(&perfdata_line, "%s %s", perfdata_line,  perfd_jitter(jitter));
 	}
 	printf("%s|%s\n", result_line, perfdata_line);
 
diff --git a/plugins/check_ntp_peer.c b/plugins/check_ntp_peer.c
index 62ac9ae..f0dd2d8 100644
--- a/plugins/check_ntp_peer.c
+++ b/plugins/check_ntp_peer.c
@@ -295,7 +295,7 @@ int ntp_request(const char *host, double *offset, int *offset_result, double *ji
 		/* If there's no sync.peer, query all candidates and use the best one */
 		if (PEER_SEL(peers[i].status) >= min_peer_sel){
 			if(verbose) printf("Getting offset, jitter and stratum for peer %.2x\n", ntohs(peers[i].assoc));
-			asprintf(&data, "");
+			xasprintf(&data, "");
 			do{
 				setup_control_request(&req, OP_READVAR, 2);
 				req.assoc = peers[i].assoc;
@@ -318,7 +318,7 @@ int ntp_request(const char *host, double *offset, int *offset_result, double *ji
 				DBG(print_ntp_control_message(&req));
 
 				if(!(req.op&REM_ERROR))
-					asprintf(&data, "%s%s", data, req.data);
+					xasprintf(&data, "%s%s", data, req.data);
 			} while(req.op&REM_MORE);
 
 			if(req.op&REM_ERROR) {
@@ -603,41 +603,41 @@ int main(int argc, char *argv[]){
 
 	switch (result) {
 		case STATE_CRITICAL :
-			asprintf(&result_line, _("NTP CRITICAL:"));
+			xasprintf(&result_line, _("NTP CRITICAL:"));
 			break;
 		case STATE_WARNING :
-			asprintf(&result_line, _("NTP WARNING:"));
+			xasprintf(&result_line, _("NTP WARNING:"));
 			break;
 		case STATE_OK :
-			asprintf(&result_line, _("NTP OK:"));
+			xasprintf(&result_line, _("NTP OK:"));
 			break;
 		default :
-			asprintf(&result_line, _("NTP UNKNOWN:"));
+			xasprintf(&result_line, _("NTP UNKNOWN:"));
 			break;
 	}
 	if(!syncsource_found)
-		asprintf(&result_line, "%s %s,", result_line, _("Server not synchronized"));
+		xasprintf(&result_line, "%s %s,", result_line, _("Server not synchronized"));
 	else if(li_alarm)
-		asprintf(&result_line, "%s %s,", result_line, _("Server has the LI_ALARM bit set"));
+		xasprintf(&result_line, "%s %s,", result_line, _("Server has the LI_ALARM bit set"));
 
 	if(offset_result == STATE_UNKNOWN){
-		asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
-		asprintf(&perfdata_line, "");
+		xasprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
+		xasprintf(&perfdata_line, "");
 	} else {
-		asprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
-		asprintf(&perfdata_line, "%s", perfd_offset(offset));
+		xasprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
+		xasprintf(&perfdata_line, "%s", perfd_offset(offset));
 	}
 	if (do_jitter) {
-		asprintf(&result_line, "%s, jitter=%f", result_line, jitter);
-		asprintf(&perfdata_line, "%s %s", perfdata_line, perfd_jitter(jitter));
+		xasprintf(&result_line, "%s, jitter=%f", result_line, jitter);
+		xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_jitter(jitter));
 	}
 	if (do_stratum) {
-		asprintf(&result_line, "%s, stratum=%i", result_line, stratum);
-		asprintf(&perfdata_line, "%s %s", perfdata_line, perfd_stratum(stratum));
+		xasprintf(&result_line, "%s, stratum=%i", result_line, stratum);
+		xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_stratum(stratum));
 	}
 	if (do_truechimers) {
-		asprintf(&result_line, "%s, truechimers=%i", result_line, num_truechimers);
-		asprintf(&perfdata_line, "%s %s", perfdata_line, perfd_truechimers(num_truechimers));
+		xasprintf(&result_line, "%s, truechimers=%i", result_line, num_truechimers);
+		xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_truechimers(num_truechimers));
 	}
 	printf("%s|%s\n", result_line, perfdata_line);
 
diff --git a/plugins/check_ntp_time.c b/plugins/check_ntp_time.c
index f0f74b4..d543d6b 100644
--- a/plugins/check_ntp_time.c
+++ b/plugins/check_ntp_time.c
@@ -564,24 +564,24 @@ int main(int argc, char *argv[]){
 
 	switch (result) {
 		case STATE_CRITICAL :
-			asprintf(&result_line, _("NTP CRITICAL:"));
+			xasprintf(&result_line, _("NTP CRITICAL:"));
 			break;
 		case STATE_WARNING :
-			asprintf(&result_line, _("NTP WARNING:"));
+			xasprintf(&result_line, _("NTP WARNING:"));
 			break;
 		case STATE_OK :
-			asprintf(&result_line, _("NTP OK:"));
+			xasprintf(&result_line, _("NTP OK:"));
 			break;
 		default :
-			asprintf(&result_line, _("NTP UNKNOWN:"));
+			xasprintf(&result_line, _("NTP UNKNOWN:"));
 			break;
 	}
 	if(offset_result == STATE_UNKNOWN){
-		asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
-		asprintf(&perfdata_line, "");
+		xasprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
+		xasprintf(&perfdata_line, "");
 	} else {
-		asprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
-		asprintf(&perfdata_line, "%s", perfd_offset(offset));
+		xasprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
+		xasprintf(&perfdata_line, "%s", perfd_offset(offset));
 	}
 	printf("%s|%s\n", result_line, perfdata_line);
 
diff --git a/plugins/check_nwstat.c b/plugins/check_nwstat.c
index 81c5575..6ebe8f8 100644
--- a/plugins/check_nwstat.c
+++ b/plugins/check_nwstat.c
@@ -191,7 +191,7 @@ main(int argc, char **argv) {
 			netware_version = strdup("");
 		else {
 			recv_buffer[strlen(recv_buffer)-1]=0;
-			asprintf (&netware_version,_("NetWare %s: "),recv_buffer);
+			xasprintf (&netware_version,_("NetWare %s: "),recv_buffer);
 		}
 	} else
 		netware_version = strdup("");
@@ -215,7 +215,7 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"UTIL%s\r\n",temp_buffer);
+		xasprintf (&send_buffer,"UTIL%s\r\n",temp_buffer);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -236,7 +236,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && utilization >= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,
+		xasprintf (&output_message,
 		          _("Load %s - %s %s-min load average = %lu%%|load%s=%lu;%lu;%lu;0;100"),
 		          state_text(result),
 		          uptime,
@@ -264,7 +264,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && current_connections >= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,
+		xasprintf (&output_message,
 			_("Conns %s - %lu current connections|Conns=%lu;%lu;%lu;;"),
 		          state_text(result),
 		          current_connections,
@@ -289,7 +289,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && cache_hits <= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,
+		xasprintf (&output_message,
 		          _("%s: Long term cache hits = %lu%%"),
 		          state_text(result),
 		          cache_hits);
@@ -311,7 +311,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && cache_buffers <= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,
+		xasprintf (&output_message,
 		          _("%s: Total cache buffers = %lu|Cachebuffers=%lu;%lu;%lu;;"),
 		          state_text(result),
 		          cache_buffers,
@@ -336,7 +336,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && cache_buffers >= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,
+		xasprintf (&output_message,
 		          _("%s: Dirty cache buffers = %lu|Dirty-Cache-Buffers=%lu;%lu;%lu;;"),
 		          state_text(result),
 		          cache_buffers,
@@ -361,7 +361,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && lru_time <= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,
+		xasprintf (&output_message,
 		          _("%s: LRU sitting time = %lu minutes"),
 		          state_text(result),
 		          lru_time);
@@ -373,13 +373,13 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"VKF%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VKF%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 		}	else {
 			free_disk_space=strtoul(recv_buffer,NULL,10);
@@ -387,7 +387,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && free_disk_space <= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s%lu KB free on volume %s|KBFree%s=%lu;%lu;%lu;;"),
 			         (result==STATE_OK)?"":_("Only "),
 			         free_disk_space,
@@ -401,13 +401,13 @@ main(int argc, char **argv) {
 		/* check MB free space on volume */
 	} else if (vars_to_check==VMF) {
 
-		asprintf (&send_buffer,"VMF%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VMF%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 		}	else {
 			free_disk_space=strtoul(recv_buffer,NULL,10);
@@ -415,7 +415,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && free_disk_space <= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s%lu MB free on volume %s|MBFree%s=%lu;%lu;%lu;;"),
 			         (result==STATE_OK)?"":_("Only "),
 			         free_disk_space,
@@ -428,13 +428,13 @@ main(int argc, char **argv) {
 		/* check MB used space on volume */
 	} else if (vars_to_check==VMU) {
 
-		asprintf (&send_buffer,"VMU%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VMU%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 		}	else {
 			free_disk_space=strtoul(recv_buffer,NULL,10);
@@ -442,7 +442,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && free_disk_space <= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s%lu MB used on volume %s|MBUsed%s=%lu;%lu;%lu;;"),
 			         (result==STATE_OK)?"":_("Only "),
 			         free_disk_space,
@@ -460,14 +460,14 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"VKF%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VKF%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
 
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 
 		} else {
@@ -477,7 +477,7 @@ main(int argc, char **argv) {
 			close(sd);
 			my_tcp_connect (server_address, server_port, &sd);
 
-			asprintf (&send_buffer,"VKS%s\r\n",volume_name);
+			xasprintf (&send_buffer,"VKS%s\r\n",volume_name);
 			result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 			if (result!=STATE_OK)
 				return result;
@@ -491,7 +491,7 @@ main(int argc, char **argv) {
 				result=STATE_WARNING;
 			free_disk_space/=1024;
 			total_disk_space/=1024;
-			asprintf (&output_message,_("%lu MB (%lu%%) free on volume %s - total %lu MB|FreeMB%s=%lu;%lu;%lu;0;100"),
+			xasprintf (&output_message,_("%lu MB (%lu%%) free on volume %s - total %lu MB|FreeMB%s=%lu;%lu;%lu;0;100"),
 				free_disk_space,
 				percent_free_space,
 				volume_name,
@@ -525,7 +525,7 @@ main(int argc, char **argv) {
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		temp_buffer=strtok(recv_buffer,"\r\n");
 
-		asprintf (&output_message,_("Directory Services Database is %s (DS version %s)"),(result==STATE_OK)?"open":"closed",temp_buffer);
+		xasprintf (&output_message,_("Directory Services Database is %s (DS version %s)"),(result==STATE_OK)?"open":"closed",temp_buffer);
 
 		/* check to see if logins are enabled */
 	} else if (vars_to_check==LOGINS) {
@@ -542,13 +542,13 @@ main(int argc, char **argv) {
 		else
 			result=STATE_WARNING;
 
-		asprintf (&output_message,_("Logins are %s"),(result==STATE_OK)?_("enabled"):_("disabled"));
+		xasprintf (&output_message,_("Logins are %s"),(result==STATE_OK)?_("enabled"):_("disabled"));
 
 
 		/* check NRM Health Status Summary*/
 	} else if (vars_to_check==NRMH) {
 
-		asprintf (&send_buffer,"NRMH\r\n");
+		xasprintf (&send_buffer,"NRMH\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -557,15 +557,15 @@ main(int argc, char **argv) {
 
 		if (nrm_health_status==2) {
 			result=STATE_OK;
-			asprintf (&output_message,_("CRITICAL - NRM Status is bad!"));
+			xasprintf (&output_message,_("CRITICAL - NRM Status is bad!"));
 		}
 		else {
 			if (nrm_health_status==1) {
 				result=STATE_WARNING;
-				asprintf (&output_message,_("Warning - NRM Status is suspect!"));
+				xasprintf (&output_message,_("Warning - NRM Status is suspect!"));
 			}
 
-			asprintf (&output_message,_("OK - NRM Status is good!"));
+			xasprintf (&output_message,_("OK - NRM Status is good!"));
 		}
 
 
@@ -576,7 +576,7 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S15\r\n");
+		xasprintf (&send_buffer,"S15\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -586,7 +586,7 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S16\r\n");
+		xasprintf (&send_buffer,"S16\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -607,7 +607,7 @@ main(int argc, char **argv) {
 				result=STATE_WARNING;
 		}
 
-		asprintf (&output_message,_("%lu of %lu (%lu%%) packet receive buffers used"),used_packet_receive_buffers,max_packet_receive_buffers,percent_used_packet_receive_buffers);
+		xasprintf (&output_message,_("%lu of %lu (%lu%%) packet receive buffers used"),used_packet_receive_buffers,max_packet_receive_buffers,percent_used_packet_receive_buffers);
 
 		/* check SAP table entries */
 	} else if (vars_to_check==SAPENTRIES) {
@@ -616,9 +616,9 @@ main(int argc, char **argv) {
 		my_tcp_connect (server_address, server_port, &sd);
 
 		if (sap_number==-1)
-			asprintf (&send_buffer,"S9\r\n");
+			xasprintf (&send_buffer,"S9\r\n");
 		else
-			asprintf (&send_buffer,"S9.%d\r\n",sap_number);
+			xasprintf (&send_buffer,"S9.%d\r\n",sap_number);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -631,9 +631,9 @@ main(int argc, char **argv) {
 			result=STATE_WARNING;
 
 		if (sap_number==-1)
-			asprintf (&output_message,_("%lu entries in SAP table"),sap_entries);
+			xasprintf (&output_message,_("%lu entries in SAP table"),sap_entries);
 		else
-			asprintf (&output_message,_("%lu entries in SAP table for SAP type %d"),sap_entries,sap_number);
+			xasprintf (&output_message,_("%lu entries in SAP table for SAP type %d"),sap_entries,sap_number);
 
 		/* check KB purgeable space on volume */
 	} else if (vars_to_check==VKP) {
@@ -641,13 +641,13 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"VKP%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VKP%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 		} else {
 			purgeable_disk_space=strtoul(recv_buffer,NULL,10);
@@ -655,7 +655,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && purgeable_disk_space >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,_("%s%lu KB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;"),
+			xasprintf (&output_message,_("%s%lu KB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;"),
 				 (result==STATE_OK)?"":_("Only "),
 				 purgeable_disk_space,
 				 volume_name,
@@ -667,13 +667,13 @@ main(int argc, char **argv) {
 		/* check MB purgeable space on volume */
 	} else if (vars_to_check==VMP) {
 
-		asprintf (&send_buffer,"VMP%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VMP%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 		} else {
 			purgeable_disk_space=strtoul(recv_buffer,NULL,10);
@@ -681,7 +681,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && purgeable_disk_space >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,_("%s%lu MB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;"),
+			xasprintf (&output_message,_("%s%lu MB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;"),
 				 (result==STATE_OK)?"":_("Only "),
 				 purgeable_disk_space,
 				 volume_name,
@@ -697,14 +697,14 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"VKP%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VKP%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
 
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 
 		} else {
@@ -714,7 +714,7 @@ main(int argc, char **argv) {
 			close(sd);
 			my_tcp_connect (server_address, server_port, &sd);
 
-			asprintf (&send_buffer,"VKS%s\r\n",volume_name);
+			xasprintf (&send_buffer,"VKS%s\r\n",volume_name);
 			result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 			if (result!=STATE_OK)
 				return result;
@@ -727,7 +727,7 @@ main(int argc, char **argv) {
 			else if (check_warning_value==TRUE && percent_purgeable_space >= warning_value)
 				result=STATE_WARNING;
 			purgeable_disk_space/=1024;
-			asprintf (&output_message,_("%lu MB (%lu%%) purgeable on volume %s|Purgeable%s=%lu;%lu;%lu;0;100"),
+			xasprintf (&output_message,_("%lu MB (%lu%%) purgeable on volume %s|Purgeable%s=%lu;%lu;%lu;0;100"),
 					purgeable_disk_space,
 					percent_purgeable_space,
 					volume_name,
@@ -744,13 +744,13 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"VKNP%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VKNP%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 		} else {
 			non_purgeable_disk_space=strtoul(recv_buffer,NULL,10);
@@ -758,7 +758,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && non_purgeable_disk_space >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,_("%s%lu KB not yet purgeable on volume %s"),(result==STATE_OK)?"":_("Only "),non_purgeable_disk_space,volume_name);
+			xasprintf (&output_message,_("%s%lu KB not yet purgeable on volume %s"),(result==STATE_OK)?"":_("Only "),non_purgeable_disk_space,volume_name);
 		}
 
 		/* check % not yet purgeable space on volume */
@@ -767,14 +767,14 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"VKNP%s\r\n",volume_name);
+		xasprintf (&send_buffer,"VKNP%s\r\n",volume_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
 
-			asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
+			xasprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
 			result=STATE_CRITICAL;
 
 		} else {
@@ -784,7 +784,7 @@ main(int argc, char **argv) {
 			close(sd);
 			my_tcp_connect (server_address, server_port, &sd);
 
-			asprintf (&send_buffer,"VKS%s\r\n",volume_name);
+			xasprintf (&send_buffer,"VKS%s\r\n",volume_name);
 			result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 			if (result!=STATE_OK)
 				return result;
@@ -797,7 +797,7 @@ main(int argc, char **argv) {
 			else if (check_warning_value==TRUE && percent_non_purgeable_space >= warning_value)
 				result=STATE_WARNING;
 			purgeable_disk_space/=1024;
-			asprintf (&output_message,_("%lu MB (%lu%%) not yet purgeable on volume %s"),non_purgeable_disk_space,percent_non_purgeable_space,volume_name);
+			xasprintf (&output_message,_("%lu MB (%lu%%) not yet purgeable on volume %s"),non_purgeable_disk_space,percent_non_purgeable_space,volume_name);
 		}
 
 		/* check # of open files */
@@ -806,7 +806,7 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S18\r\n");
+		xasprintf (&send_buffer,"S18\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -818,7 +818,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && open_files >= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,_("%lu open files|Openfiles=%lu;%lu;%lu;0,0"),
+		xasprintf (&output_message,_("%lu open files|Openfiles=%lu;%lu;%lu;0,0"),
 				open_files,
 				open_files,
 				warning_value,
@@ -831,7 +831,7 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S17\r\n");
+		xasprintf (&send_buffer,"S17\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -843,7 +843,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && abended_threads >= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,_("%lu abended threads|Abends=%lu;%lu;%lu;;"),
+		xasprintf (&output_message,_("%lu abended threads|Abends=%lu;%lu;%lu;;"),
 				abended_threads,
 				abended_threads,
 				warning_value,
@@ -855,7 +855,7 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S20\r\n");
+		xasprintf (&send_buffer,"S20\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -865,7 +865,7 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S21\r\n");
+		xasprintf (&send_buffer,"S21\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -877,7 +877,7 @@ main(int argc, char **argv) {
 		else if (check_warning_value==TRUE && current_service_processes >= warning_value)
 			result=STATE_WARNING;
 
-		asprintf (&output_message,
+		xasprintf (&output_message,
 		          _("%lu current service processes (%lu max)|Processes=%lu;%lu;%lu;0;%lu"),
 		          current_service_processes,
 		          max_service_processes,
@@ -892,7 +892,7 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S22\r\n");
+		xasprintf (&send_buffer,"S22\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
@@ -901,10 +901,10 @@ main(int argc, char **argv) {
 
 		if (time_sync_status==0) {
 			result=STATE_CRITICAL;
-			asprintf (&output_message,_("CRITICAL - Time not in sync with network!"));
+			xasprintf (&output_message,_("CRITICAL - Time not in sync with network!"));
 		}
 		else {
-			asprintf (&output_message,_("OK - Time in sync with network!"));
+			xasprintf (&output_message,_("OK - Time in sync with network!"));
 		}
 
 
@@ -927,7 +927,7 @@ main(int argc, char **argv) {
 			result=STATE_CRITICAL;
 		else if (check_warning_value==TRUE && lru_time <= warning_value)
 			result=STATE_WARNING;
-		asprintf (&output_message,_("LRU sitting time = %lu seconds"),lru_time);
+		xasprintf (&output_message,_("LRU sitting time = %lu seconds"),lru_time);
 
 
 		/* check % dirty cacheobuffers as a percentage of the total*/
@@ -946,7 +946,7 @@ main(int argc, char **argv) {
 			result=STATE_CRITICAL;
 		else if (check_warning_value==TRUE && dirty_cache_buffers <= warning_value)
 			result=STATE_WARNING;
-		asprintf (&output_message,_("Dirty cache buffers = %lu%% of the total|DCB=%lu;%lu;%lu;0;100"),
+		xasprintf (&output_message,_("Dirty cache buffers = %lu%% of the total|DCB=%lu;%lu;%lu;0;100"),
 				dirty_cache_buffers,
 				dirty_cache_buffers,
 				warning_value,
@@ -968,7 +968,7 @@ main(int argc, char **argv) {
 			result=STATE_CRITICAL;
 		else if (check_warning_value==TRUE && total_cache_buffers <= warning_value)
 			result=STATE_WARNING;
-		asprintf (&output_message,_("Total cache buffers = %lu%% of the original|TCB=%lu;%lu;%lu;0;100"),
+		xasprintf (&output_message,_("Total cache buffers = %lu%% of the original|TCB=%lu;%lu;%lu;0;100"),
 				total_cache_buffers,
 				total_cache_buffers,
 				warning_value,
@@ -979,21 +979,21 @@ main(int argc, char **argv) {
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S13\r\n");
+		xasprintf (&send_buffer,"S13\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		recv_buffer[strlen(recv_buffer)-1]=0;
 
-		asprintf (&output_message,_("NDS Version %s"),recv_buffer);
+		xasprintf (&output_message,_("NDS Version %s"),recv_buffer);
 
 	} else if (vars_to_check==UPTIME) {
 
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"UPTIME\r\n");
+		xasprintf (&send_buffer,"UPTIME\r\n");
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 	 		return result;
@@ -1002,35 +1002,35 @@ main(int argc, char **argv) {
 		recv_buffer[sizeof(recv_buffer)-1]=0;
 		recv_buffer[strlen(recv_buffer)-1]=0;
 
-		asprintf (&output_message,_("Up %s"),recv_buffer);
+		xasprintf (&output_message,_("Up %s"),recv_buffer);
 
 	} else if (vars_to_check==NLM) {
 
 		close(sd);
 		my_tcp_connect (server_address, server_port, &sd);
 
-		asprintf (&send_buffer,"S24:%s\r\n",nlm_name);
+		xasprintf (&send_buffer,"S24:%s\r\n",nlm_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		recv_buffer[strlen(recv_buffer)-1]=0;
 		if (strcmp(recv_buffer,"-1")) {
-			asprintf (&output_message,_("Module %s version %s is loaded"),nlm_name,recv_buffer);
+			xasprintf (&output_message,_("Module %s version %s is loaded"),nlm_name,recv_buffer);
 		} else {
 			result=STATE_CRITICAL;
-			asprintf (&output_message,_("Module %s is not loaded"),nlm_name);
+			xasprintf (&output_message,_("Module %s is not loaded"),nlm_name);
 
 			}
 	} else if (vars_to_check==NRMP) {
 
-		asprintf (&send_buffer,"NRMP:%s\r\n",nrmp_name);
+		xasprintf (&send_buffer,"NRMP:%s\r\n",nrmp_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nrmp_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nrmp_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nrmp_value=strtoul(recv_buffer,NULL,10);
@@ -1038,7 +1038,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nrmp_value <= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nrmp_name,
 			         nrmp_value,
@@ -1050,13 +1050,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NRMM) {
 
-		asprintf (&send_buffer,"NRMM:%s\r\n",nrmm_name);
+		xasprintf (&send_buffer,"NRMM:%s\r\n",nrmm_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nrmm_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nrmm_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nrmm_value=strtoul(recv_buffer,NULL,10);
@@ -1064,7 +1064,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nrmm_value <= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nrmm_name,
 			         nrmm_value,
@@ -1076,13 +1076,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NRMS) {
 
-		asprintf (&send_buffer,"NRMS:%s\r\n",nrms_name);
+		xasprintf (&send_buffer,"NRMS:%s\r\n",nrms_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nrms_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nrms_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nrms_value=strtoul(recv_buffer,NULL,10);
@@ -1090,7 +1090,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nrms_value >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nrms_name,
 			         nrms_value,
@@ -1102,13 +1102,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NSS1) {
 
-		asprintf (&send_buffer,"NSS1:%s\r\n",nss1_name);
+		xasprintf (&send_buffer,"NSS1:%s\r\n",nss1_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss1_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss1_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nss1_value=strtoul(recv_buffer,NULL,10);
@@ -1116,7 +1116,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nss1_value >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nss1_name,
 			         nss1_value,
@@ -1128,13 +1128,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NSS2) {
 
-		asprintf (&send_buffer,"NSS2:%s\r\n",nss2_name);
+		xasprintf (&send_buffer,"NSS2:%s\r\n",nss2_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss2_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss2_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nss2_value=strtoul(recv_buffer,NULL,10);
@@ -1142,7 +1142,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nss2_value >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nss2_name,
 			         nss2_value,
@@ -1154,13 +1154,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NSS3) {
 
-		asprintf (&send_buffer,"NSS3:%s\r\n",nss3_name);
+		xasprintf (&send_buffer,"NSS3:%s\r\n",nss3_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss3_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss3_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nss3_value=strtoul(recv_buffer,NULL,10);
@@ -1168,7 +1168,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nss3_value >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nss3_name,
 			         nss3_value,
@@ -1180,13 +1180,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NSS4) {
 
-		asprintf (&send_buffer,"NSS4:%s\r\n",nss4_name);
+		xasprintf (&send_buffer,"NSS4:%s\r\n",nss4_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss4_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss4_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nss4_value=strtoul(recv_buffer,NULL,10);
@@ -1194,7 +1194,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nss4_value >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nss4_name,
 			         nss4_value,
@@ -1206,13 +1206,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NSS5) {
 
-		asprintf (&send_buffer,"NSS5:%s\r\n",nss5_name);
+		xasprintf (&send_buffer,"NSS5:%s\r\n",nss5_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss5_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss5_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nss5_value=strtoul(recv_buffer,NULL,10);
@@ -1220,7 +1220,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nss5_value >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nss5_name,
 			         nss5_value,
@@ -1232,13 +1232,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NSS6) {
 
-		asprintf (&send_buffer,"NSS6:%s\r\n",nss6_name);
+		xasprintf (&send_buffer,"NSS6:%s\r\n",nss6_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss6_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss6_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nss6_value=strtoul(recv_buffer,NULL,10);
@@ -1246,7 +1246,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nss6_value >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nss6_name,
 			         nss6_value,
@@ -1258,13 +1258,13 @@ main(int argc, char **argv) {
 
 	} else if (vars_to_check==NSS7) {
 
-		asprintf (&send_buffer,"NSS7:%s\r\n",nss7_name);
+		xasprintf (&send_buffer,"NSS7:%s\r\n",nss7_name);
 		result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
 		if (result!=STATE_OK)
 			return result;
 
 		if (!strcmp(recv_buffer,"-1\n")) {
-			asprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss7_name);
+			xasprintf (&output_message,_("CRITICAL - Value '%s' does not exist!"),nss7_name);
 			result=STATE_CRITICAL;
 		}	else {
 			nss7_value=strtoul(recv_buffer,NULL,10);
@@ -1272,7 +1272,7 @@ main(int argc, char **argv) {
 				result=STATE_CRITICAL;
 			else if (check_warning_value==TRUE && nss7_value >= warning_value)
 				result=STATE_WARNING;
-			asprintf (&output_message,
+			xasprintf (&output_message,
 			          _("%s is  %lu|%s=%lu;%lu;%lu;;"),
 			         nss7_name,
 			         nss7_value,
@@ -1591,7 +1591,7 @@ int process_arguments(int argc, char **argv) {
 void print_help(void)
 {
 	char *myport;
-	asprintf (&myport, "%d", PORT);
+	xasprintf (&myport, "%d", PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_overcr.c b/plugins/check_overcr.c
index 16ada20..95977e9 100644
--- a/plugins/check_overcr.c
+++ b/plugins/check_overcr.c
@@ -409,7 +409,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", PORT);
+	xasprintf (&myport, "%d", PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_pgsql.c b/plugins/check_pgsql.c
index 19c3117..69edae7 100644
--- a/plugins/check_pgsql.c
+++ b/plugins/check_pgsql.c
@@ -417,7 +417,7 @@ print_help (void)
 {
 	char *myport;
 
-	asprintf (&myport, "%d", DEFAULT_PORT);
+	xasprintf (&myport, "%d", DEFAULT_PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_ping.c b/plugins/check_ping.c
index 473f9f2..eef2195 100644
--- a/plugins/check_ping.c
+++ b/plugins/check_ping.c
@@ -121,12 +121,12 @@ main (int argc, char **argv)
 		/* does the host address of number of packets argument come first? */
 #ifdef PING_PACKETS_FIRST
 # ifdef PING_HAS_TIMEOUT
-		asprintf (&cmd, rawcmd, timeout_interval, max_packets, addresses[i]);
+		xasprintf (&cmd, rawcmd, timeout_interval, max_packets, addresses[i]);
 # else
-		asprintf (&cmd, rawcmd, max_packets, addresses[i]);
+		xasprintf (&cmd, rawcmd, max_packets, addresses[i]);
 # endif
 #else
-		asprintf (&cmd, rawcmd, addresses[i], max_packets);
+		xasprintf (&cmd, rawcmd, addresses[i], max_packets);
 #endif
 
 		if (verbose >= 2)
@@ -491,7 +491,7 @@ run_ping (const char *cmd, const char *addr)
 				if (warn_text == NULL) {
 					warn_text = strdup(_("System call sent warnings to stderr "));
 				} else {
-					asprintf(&warn_text, "%s %s", warn_text, _("System call sent warnings to stderr "));
+					xasprintf(&warn_text, "%s %s", warn_text, _("System call sent warnings to stderr "));
 				}
 			}
 		}
@@ -540,7 +540,7 @@ error_scan (char buf[MAX_INPUT_BUFFER], const char *addr)
 		if (warn_text == NULL)
 			warn_text = strdup (_(WARN_DUPLICATES));
 		else if (! strstr (warn_text, _(WARN_DUPLICATES)) &&
-		         asprintf (&warn_text, "%s %s", warn_text, _(WARN_DUPLICATES)) == -1)
+		         xasprintf (&warn_text, "%s %s", warn_text, _(WARN_DUPLICATES)) == -1)
 			die (STATE_UNKNOWN, _("Unable to realloc warn_text\n"));
 		return (STATE_WARNING);
 	}
diff --git a/plugins/check_procs.c b/plugins/check_procs.c
index d875a61..2f2dcc5 100644
--- a/plugins/check_procs.c
+++ b/plugins/check_procs.c
@@ -137,7 +137,7 @@ main (int argc, char **argv)
 	input_buffer = malloc (MAX_INPUT_BUFFER);
 	procprog = malloc (MAX_INPUT_BUFFER);
 
-	asprintf (&metric_name, "PROCS");
+	xasprintf (&metric_name, "PROCS");
 	metric = METRIC_PROCS;
 
 	/* Parse extra opts if any */
@@ -176,7 +176,7 @@ main (int argc, char **argv)
 			printf ("%s", input_line);
 
 		strcpy (procprog, "");
-		asprintf (&procargs, "%s", "");
+		xasprintf (&procargs, "%s", "");
 
 		cols = sscanf (input_line, PS_FORMAT, PS_VARLIST);
 
@@ -186,7 +186,7 @@ main (int argc, char **argv)
 		}
 		if ( cols >= expected_cols ) {
 			resultsum = 0;
-			asprintf (&procargs, "%s", input_line + pos);
+			xasprintf (&procargs, "%s", input_line + pos);
 			strip (procargs);
 
 			/* Some ps return full pathname for command. This removes path */
@@ -250,12 +250,12 @@ main (int argc, char **argv)
 			if (metric != METRIC_PROCS) {
 				if (i == STATE_WARNING) {
 					warn++;
-					asprintf (&fails, "%s%s%s", fails, (strcmp(fails,"") ? ", " : ""), procprog);
+					xasprintf (&fails, "%s%s%s", fails, (strcmp(fails,"") ? ", " : ""), procprog);
 					result = max_state (result, i);
 				}
 				if (i == STATE_CRITICAL) {
 					crit++;
-					asprintf (&fails, "%s%s%s", fails, (strcmp(fails,"") ? ", " : ""), procprog);
+					xasprintf (&fails, "%s%s%s", fails, (strcmp(fails,"") ? ", " : ""), procprog);
 					result = max_state (result, i);
 				}
 			}
@@ -393,7 +393,7 @@ process_arguments (int argc, char **argv)
 			break;
 		case 'p':									/* process id */
 			if (sscanf (optarg, "%d%[^0-9]", &ppid, tmp) == 1) {
-				asprintf (&fmt, "%s%sPPID = %d", (fmt ? fmt : "") , (options ? ", " : ""), ppid);
+				xasprintf (&fmt, "%s%sPPID = %d", (fmt ? fmt : "") , (options ? ", " : ""), ppid);
 				options |= PPID;
 				break;
 			}
@@ -403,7 +403,7 @@ process_arguments (int argc, char **argv)
 				break;
 			else
 				statopts = optarg;
-			asprintf (&fmt, _("%s%sSTATE = %s"), (fmt ? fmt : ""), (options ? ", " : ""), statopts);
+			xasprintf (&fmt, _("%s%sSTATE = %s"), (fmt ? fmt : ""), (options ? ", " : ""), statopts);
 			options |= STAT;
 			break;
 		case 'u':									/* user or user id */
@@ -423,7 +423,7 @@ process_arguments (int argc, char **argv)
 				uid = pw->pw_uid;
 			}
 			user = pw->pw_name;
-			asprintf (&fmt, "%s%sUID = %d (%s)", (fmt ? fmt : ""), (options ? ", " : ""),
+			xasprintf (&fmt, "%s%sUID = %d (%s)", (fmt ? fmt : ""), (options ? ", " : ""),
 			          uid, user);
 			options |= USER;
 			break;
@@ -433,7 +433,7 @@ process_arguments (int argc, char **argv)
 				break;
 			else
 				prog = optarg;
-			asprintf (&fmt, _("%s%scommand name '%s'"), (fmt ? fmt : ""), (options ? ", " : ""),
+			xasprintf (&fmt, _("%s%scommand name '%s'"), (fmt ? fmt : ""), (options ? ", " : ""),
 			          prog);
 			options |= PROG;
 			break;
@@ -443,7 +443,7 @@ process_arguments (int argc, char **argv)
 				break;
 			else
 				args = optarg;
-			asprintf (&fmt, "%s%sargs '%s'", (fmt ? fmt : ""), (options ? ", " : ""), args);
+			xasprintf (&fmt, "%s%sargs '%s'", (fmt ? fmt : ""), (options ? ", " : ""), args);
 			options |= ARGS;
 			break;
 		case CHAR_MAX+1:
@@ -459,19 +459,19 @@ process_arguments (int argc, char **argv)
 					temp_string[i]=',';
 				i++;
 			}
-			asprintf (&fmt, "%s%sregex args '%s'", (fmt ? fmt : ""), (options ? ", " : ""), temp_string);
+			xasprintf (&fmt, "%s%sregex args '%s'", (fmt ? fmt : ""), (options ? ", " : ""), temp_string);
 			options |= EREG_ARGS;
 			break;
 		case 'r': 					/* RSS */
 			if (sscanf (optarg, "%d%[^0-9]", &rss, tmp) == 1) {
-				asprintf (&fmt, "%s%sRSS >= %d", (fmt ? fmt : ""), (options ? ", " : ""), rss);
+				xasprintf (&fmt, "%s%sRSS >= %d", (fmt ? fmt : ""), (options ? ", " : ""), rss);
 				options |= RSS;
 				break;
 			}
 			usage4 (_("RSS must be an integer!"));
 		case 'z':					/* VSZ */
 			if (sscanf (optarg, "%d%[^0-9]", &vsz, tmp) == 1) {
-				asprintf (&fmt, "%s%sVSZ >= %d", (fmt ? fmt : ""), (options ? ", " : ""), vsz);
+				xasprintf (&fmt, "%s%sVSZ >= %d", (fmt ? fmt : ""), (options ? ", " : ""), vsz);
 				options |= VSZ;
 				break;
 			}
@@ -479,13 +479,13 @@ process_arguments (int argc, char **argv)
 		case 'P':					/* PCPU */
 			/* TODO: -P 1.5.5 is accepted */
 			if (sscanf (optarg, "%f%[^0-9.]", &pcpu, tmp) == 1) {
-				asprintf (&fmt, "%s%sPCPU >= %.2f", (fmt ? fmt : ""), (options ? ", " : ""), pcpu);
+				xasprintf (&fmt, "%s%sPCPU >= %.2f", (fmt ? fmt : ""), (options ? ", " : ""), pcpu);
 				options |= PCPU;
 				break;
 			}
 			usage4 (_("PCPU must be a float!"));
 		case 'm':
-			asprintf (&metric_name, "%s", optarg);
+			xasprintf (&metric_name, "%s", optarg);
 			if ( strcmp(optarg, "PROCS") == 0) {
 				metric = METRIC_PROCS;
 				break;
@@ -523,8 +523,8 @@ process_arguments (int argc, char **argv)
 	if (cmax == -1 && argv[c])
 		cmax = atoi (argv[c++]);
 	if (statopts == NULL && argv[c]) {
-		asprintf (&statopts, "%s", argv[c++]);
-		asprintf (&fmt, _("%s%sSTATE = %s"), (fmt ? fmt : ""), (options ? ", " : ""), statopts);
+		xasprintf (&statopts, "%s", argv[c++]);
+		xasprintf (&fmt, _("%s%sSTATE = %s"), (fmt ? fmt : ""), (options ? ", " : ""), statopts);
 		options |= STAT;
 	}
 
diff --git a/plugins/check_radius.c b/plugins/check_radius.c
index c2c93ee..e54105b 100644
--- a/plugins/check_radius.c
+++ b/plugins/check_radius.c
@@ -328,7 +328,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", PW_AUTH_UDP_PORT);
+	xasprintf (&myport, "%d", PW_AUTH_UDP_PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_real.c b/plugins/check_real.c
index d67e190..18240f3 100644
--- a/plugins/check_real.c
+++ b/plugins/check_real.c
@@ -403,7 +403,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", PORT);
+	xasprintf (&myport, "%d", PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c
index 77ac5ce..6b3f9dd 100644
--- a/plugins/check_smtp.c
+++ b/plugins/check_smtp.c
@@ -156,15 +156,15 @@ main (int argc, char **argv)
 		}
 	}
 	if(use_ehlo)
-		asprintf (&helocmd, "%s%s%s", SMTP_EHLO, localhostname, "\r\n");
+		xasprintf (&helocmd, "%s%s%s", SMTP_EHLO, localhostname, "\r\n");
 	else
-		asprintf (&helocmd, "%s%s%s", SMTP_HELO, localhostname, "\r\n");
+		xasprintf (&helocmd, "%s%s%s", SMTP_HELO, localhostname, "\r\n");
 
 	if (verbose)
 		printf("HELOCMD: %s", helocmd);
 
 	/* initialize the MAIL command with optional FROM command  */
-	asprintf (&cmd_str, "%sFROM:<%s>%s", mail_command, from_arg, "\r\n");
+	xasprintf (&cmd_str, "%sFROM:<%s>%s", mail_command, from_arg, "\r\n");
 
 	if (verbose && smtp_use_dummycmd)
 		printf ("FROM CMD: %s", cmd_str);
@@ -299,7 +299,7 @@ main (int argc, char **argv)
 		}
 
 		while (n < ncommands) {
-			asprintf (&cmd_str, "%s%s", commands[n], "\r\n");
+			xasprintf (&cmd_str, "%s%s", commands[n], "\r\n");
 			my_send(cmd_str, strlen(cmd_str));
 			if (recvlines(buffer, MAX_INPUT_BUFFER) >= 1 && verbose)
 				printf("%s", buffer);
@@ -336,12 +336,12 @@ main (int argc, char **argv)
 				do {
 					if (authuser == NULL) {
 						result = STATE_CRITICAL;
-						asprintf(&error_msg, _("no authuser specified, "));
+						xasprintf(&error_msg, _("no authuser specified, "));
 						break;
 					}
 					if (authpass == NULL) {
 						result = STATE_CRITICAL;
-						asprintf(&error_msg, _("no authpass specified, "));
+						xasprintf(&error_msg, _("no authpass specified, "));
 						break;
 					}
 
@@ -351,7 +351,7 @@ main (int argc, char **argv)
 						printf (_("sent %s\n"), "AUTH LOGIN");
 
 					if ((ret = recvlines(buffer, MAX_INPUT_BUFFER)) <= 0) {
-						asprintf(&error_msg, _("recv() failed after AUTH LOGIN, "));
+						xasprintf(&error_msg, _("recv() failed after AUTH LOGIN, "));
 						result = STATE_WARNING;
 						break;
 					}
@@ -360,7 +360,7 @@ main (int argc, char **argv)
 
 					if (strncmp (buffer, "334", 3) != 0) {
 						result = STATE_CRITICAL;
-						asprintf(&error_msg, _("invalid response received after AUTH LOGIN, "));
+						xasprintf(&error_msg, _("invalid response received after AUTH LOGIN, "));
 						break;
 					}
 
@@ -374,7 +374,7 @@ main (int argc, char **argv)
 
 					if ((ret = recvlines(buffer, MAX_INPUT_BUFFER)) <= 0) {
 						result = STATE_CRITICAL;
-						asprintf(&error_msg, _("recv() failed after sending authuser, "));
+						xasprintf(&error_msg, _("recv() failed after sending authuser, "));
 						break;
 					}
 					if (verbose) {
@@ -382,7 +382,7 @@ main (int argc, char **argv)
 					}
 					if (strncmp (buffer, "334", 3) != 0) {
 						result = STATE_CRITICAL;
-						asprintf(&error_msg, _("invalid response received after authuser, "));
+						xasprintf(&error_msg, _("invalid response received after authuser, "));
 						break;
 					}
 					/* encode authpass with base64 */
@@ -395,7 +395,7 @@ main (int argc, char **argv)
 					}
 					if ((ret = recvlines(buffer, MAX_INPUT_BUFFER)) <= 0) {
 						result = STATE_CRITICAL;
-						asprintf(&error_msg, _("recv() failed after sending authpass, "));
+						xasprintf(&error_msg, _("recv() failed after sending authpass, "));
 						break;
 					}
 					if (verbose) {
@@ -403,14 +403,14 @@ main (int argc, char **argv)
 					}
 					if (strncmp (buffer, "235", 3) != 0) {
 						result = STATE_CRITICAL;
-						asprintf(&error_msg, _("invalid response received after authpass, "));
+						xasprintf(&error_msg, _("invalid response received after authpass, "));
 						break;
 					}
 					break;
 				} while (0);
 			} else {
 				result = STATE_CRITICAL;
-				asprintf(&error_msg, _("only authtype LOGIN is supported, "));
+				xasprintf(&error_msg, _("only authtype LOGIN is supported, "));
 			}
 		}
 
@@ -654,7 +654,7 @@ process_arguments (int argc, char **argv)
 				usage2 (_("Invalid hostname/address"), argv[c]);
 		}
 		else {
-			asprintf (&server_address, "127.0.0.1");
+			xasprintf (&server_address, "127.0.0.1");
 		}
 	}
 
@@ -787,7 +787,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", SMTP_PORT);
+	xasprintf (&myport, "%d", SMTP_PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index a5a88d2..2d9861b 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -255,9 +255,9 @@ main (int argc, char **argv)
 	command_line = calloc (9 + numauthpriv + 1 + numoids + 1, sizeof (char *));
 	command_line[0] = snmpcmd;
 	command_line[1] = strdup ("-t");
-	asprintf (&command_line[2], "%d", timeout_interval);
+	xasprintf (&command_line[2], "%d", timeout_interval);
 	command_line[3] = strdup ("-r");
-	asprintf (&command_line[4], "%d", retries);
+	xasprintf (&command_line[4], "%d", retries);
 	command_line[5] = strdup ("-m");
 	command_line[6] = strdup (miblist);
 	command_line[7] = "-v";
@@ -267,16 +267,16 @@ main (int argc, char **argv)
 		command_line[9 + i] = authpriv[i];
 	}
 
-	asprintf (&command_line[9 + numauthpriv], "%s:%s", server_address, port);
+	xasprintf (&command_line[9 + numauthpriv], "%s:%s", server_address, port);
 
 	/* This is just for display purposes, so it can remain a string */
-	asprintf(&cl_hidden_auth, "%s -t %d -r %d -m %s -v %s %s %s:%s",
+	xasprintf(&cl_hidden_auth, "%s -t %d -r %d -m %s -v %s %s %s:%s",
 		snmpcmd, timeout_interval, retries, strlen(miblist) ? miblist : "''", proto, "[authpriv]",
 		server_address, port);
 
 	for (i = 0; i < numoids; i++) {
 		command_line[9 + numauthpriv + 1 + i] = oids[i];
-		asprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]);	
+		xasprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]);	
 	}
 
 	command_line[9 + numauthpriv + 1 + numoids] = NULL;
@@ -371,14 +371,14 @@ main (int argc, char **argv)
 			if (dq_count) { /* unfinished line */
 				/* copy show verbatim first */
 				if (!mult_resp) mult_resp = strdup("");
-				asprintf (&mult_resp, "%s%s:\n%s\n", mult_resp, oids[i], show);
+				xasprintf (&mult_resp, "%s%s:\n%s\n", mult_resp, oids[i], show);
 				/* then strip out unmatched double-quote from single-line output */
 				if (show[0] == '"') show++;
 
 				/* Keep reading until we match end of double-quoted string */
 				for (line++; line < chld_out.lines; line++) {
 					ptr = chld_out.line[line];
-					asprintf (&mult_resp, "%s%s\n", mult_resp, ptr);
+					xasprintf (&mult_resp, "%s%s\n", mult_resp, ptr);
 
 					COUNT_SEQ(ptr, bk_count, dq_count)
 					while (dq_count && ptr[0] != '\n' && ptr[0] != '\0') {
@@ -424,11 +424,11 @@ main (int argc, char **argv)
 					/* Convert to per second, then use multiplier */
 					temp_double = temp_double/duration*rate_multiplier;
 					iresult = get_status(temp_double, thlds[i]);
-					asprintf (&show, conv, temp_double);
+					xasprintf (&show, conv, temp_double);
 				}
 			} else {
 				iresult = get_status(response_value[i], thlds[i]);
-				asprintf (&show, conv, response_value[i]);
+				xasprintf (&show, conv, response_value[i]);
 			}
 		}
 
@@ -472,16 +472,16 @@ main (int argc, char **argv)
 
 		/* Prepend a label for this OID if there is one */
 		if (nlabels >= (size_t)1 && (size_t)i < nlabels && labels[i] != NULL)
-			asprintf (&outbuff, "%s%s%s %s%s%s", outbuff,
+			xasprintf (&outbuff, "%s%s%s %s%s%s", outbuff,
 				(i == 0) ? " " : output_delim,
 				labels[i], mark (iresult), show, mark (iresult));
 		else
-			asprintf (&outbuff, "%s%s%s%s%s", outbuff, (i == 0) ? " " : output_delim,
+			xasprintf (&outbuff, "%s%s%s%s%s", outbuff, (i == 0) ? " " : output_delim,
 				mark (iresult), show, mark (iresult));
 
 		/* Append a unit string for this OID if there is one */
 		if (nunits > (size_t)0 && (size_t)i < nunits && unitv[i] != NULL)
-			asprintf (&outbuff, "%s %s", outbuff, unitv[i]);
+			xasprintf (&outbuff, "%s %s", outbuff, unitv[i]);
 
 		/* Write perfdata with whatever can be parsed by strtod, if possible */
 		ptr = NULL;
@@ -523,7 +523,7 @@ main (int argc, char **argv)
 		
 		current_length=0;
 		for(i=0; i<total_oids; i++) {
-			asprintf(&temp_string,"%.0f",response_value[i]);
+			xasprintf(&temp_string,"%.0f",response_value[i]);
 			if(temp_string==NULL)
 				die(STATE_UNKNOWN,_("Cannot asprintf()"));
 			response_length = strlen(temp_string);
@@ -869,7 +869,7 @@ validate_arguments ()
 		die(STATE_UNKNOWN, _("No OIDs specified\n"));
 
 	if (proto == NULL)
-		asprintf(&proto, DEFAULT_PROTOCOL);
+		xasprintf(&proto, DEFAULT_PROTOCOL);
 
 	if ((strcmp(proto,"1") == 0) || (strcmp(proto, "2c")==0)) {	/* snmpv1 or snmpv2c */
 		numauthpriv = 2;
@@ -879,7 +879,7 @@ validate_arguments ()
 	}
 	else if ( strcmp (proto, "3") == 0 ) {		/* snmpv3 args */
 		if (seclevel == NULL)
-			asprintf(&seclevel, "noAuthNoPriv");
+			xasprintf(&seclevel, "noAuthNoPriv");
 
 		if (strcmp(seclevel, "noAuthNoPriv") == 0) {
 			numauthpriv = 2;
@@ -892,7 +892,7 @@ validate_arguments ()
 			}
 
 			if (authproto == NULL )
-				asprintf(&authproto, DEFAULT_AUTH_PROTOCOL);
+				xasprintf(&authproto, DEFAULT_AUTH_PROTOCOL);
 
 			if (secname == NULL)
 				die(STATE_UNKNOWN, _("Required parameter: %s\n"), "secname");
@@ -913,7 +913,7 @@ validate_arguments ()
 				authpriv[7] = strdup (authpasswd);
 			} else if ( strcmp(seclevel, "authPriv") == 0 ) {
 				if (privproto == NULL )
-					asprintf(&privproto, DEFAULT_PRIV_PROTOCOL);
+					xasprintf(&privproto, DEFAULT_PRIV_PROTOCOL);
 
 				if (privpasswd == NULL)
 					die(STATE_UNKNOWN, _("Required parameter: %s\n"), "privpasswd");
diff --git a/plugins/check_ssh.c b/plugins/check_ssh.c
index 3bbf44d..4d63394 100644
--- a/plugins/check_ssh.c
+++ b/plugins/check_ssh.c
@@ -241,7 +241,7 @@ ssh_connect (char *haddr, int hport, char *remote_version)
 		ssh_server = ssh_proto + strspn (ssh_proto, "-0123456789. ");
 		ssh_proto[strspn (ssh_proto, "0123456789. ")] = 0;
 
-		asprintf (&buffer, "SSH-%s-check_ssh_%s\r\n", ssh_proto, rev_no);
+		xasprintf (&buffer, "SSH-%s-check_ssh_%s\r\n", ssh_proto, rev_no);
 		send (sd, buffer, strlen (buffer), MSG_DONTWAIT);
 		if (verbose)
 			printf ("%s\n", buffer);
@@ -271,7 +271,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", SSH_DFL_PORT);
+	xasprintf (&myport, "%d", SSH_DFL_PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_swap.c b/plugins/check_swap.c
index ce1f602..1b2a8dd 100644
--- a/plugins/check_swap.c
+++ b/plugins/check_swap.c
@@ -129,7 +129,7 @@ main (int argc, char **argv)
 					percent = 100 * (((double) dskused_mb) / ((double) dsktotal_mb));
 				result = max_state (result, check_swap (percent, dskfree_mb));
 				if (verbose)
-					asprintf (&status, "%s [%.0f (%d%%)]", status, dskfree_mb, 100 - percent);
+					xasprintf (&status, "%s [%.0f (%d%%)]", status, dskfree_mb, 100 - percent);
 			}
 		}
 		else if (sscanf (input_buffer, "%*[S]%*[w]%*[a]%*[p]%[TotalFre]%*[:] %f %*[k]%*[B]", str, &tmp_mb)) {
@@ -152,15 +152,15 @@ main (int argc, char **argv)
 	free_swap_mb = dskfree_mb;
 #else
 # ifdef HAVE_SWAP
-	asprintf(&swap_command, "%s", SWAP_COMMAND);
-	asprintf(&swap_format, "%s", SWAP_FORMAT);
+	xasprintf(&swap_command, "%s", SWAP_COMMAND);
+	xasprintf(&swap_format, "%s", SWAP_FORMAT);
 
 /* These override the command used if a summary (and thus ! allswaps) is required */
 /* The summary flag returns more accurate information about swap usage on these OSes */
 #  ifdef _AIX
 	if (!allswaps) {
-		asprintf(&swap_command, "%s", "/usr/sbin/lsps -s");
-		asprintf(&swap_format, "%s", "%f%*s %f");
+		xasprintf(&swap_command, "%s", "/usr/sbin/lsps -s");
+		xasprintf(&swap_format, "%s", "%f%*s %f");
 		conv_factor = 1;
 	}
 #  endif
@@ -228,7 +228,7 @@ main (int argc, char **argv)
 				percent = 100 * (((double) dskused_mb) / ((double) dsktotal_mb));
 				result = max_state (result, check_swap (percent, dskfree_mb));
 				if (verbose)
-					asprintf (&status, "%s [%.0f (%d%%)]", status, dskfree_mb, 100 - percent);
+					xasprintf (&status, "%s [%.0f (%d%%)]", status, dskfree_mb, 100 - percent);
 			}
 		}
 #  ifdef _AIX
@@ -290,7 +290,7 @@ main (int argc, char **argv)
 			percent = 100 * (((double) dskused_mb) / ((double) dsktotal_mb));
 			result = max_state (result, check_swap (percent, dskfree_mb));
 			if (verbose) {
-				asprintf (&status, "%s [%.0f (%d%%)]", status, dskfree_mb, 100 - percent);
+				xasprintf (&status, "%s [%.0f (%d%%)]", status, dskfree_mb, 100 - percent);
 			}
 		}
 
@@ -329,7 +329,7 @@ main (int argc, char **argv)
 			percent = 100 * (((double) dskused_mb) / ((double) dsktotal_mb));
 			result = max_state (result, check_swap (percent, dskfree_mb));
 			if (verbose) {
-				asprintf (&status, "%s [%.0f (%d%%)]", status, dskfree_mb, 100 - percent);
+				xasprintf (&status, "%s [%.0f (%d%%)]", status, dskfree_mb, 100 - percent);
 			}
 		}
 
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c
index 1bbb05a..f464b15 100644
--- a/plugins/check_tcp.c
+++ b/plugins/check_tcp.c
@@ -502,7 +502,7 @@ process_arguments (int argc, char **argv)
 			if (escape)
 				server_send = np_escaped_string(optarg);
 			else
-				asprintf(&server_send, "%s", optarg);
+				xasprintf(&server_send, "%s", optarg);
 			break;
 		case 'e': /* expect string (may be repeated) */
 			flags &= ~FLAG_EXACT_MATCH;
@@ -522,7 +522,7 @@ process_arguments (int argc, char **argv)
 			if (escape)
 				server_quit = np_escaped_string(optarg);
 			else
-				asprintf(&server_quit, "%s\r\n", optarg);
+				xasprintf(&server_quit, "%s\r\n", optarg);
 			break;
 		case 'r':
 			if (!strncmp(optarg,"ok",2))
diff --git a/plugins/check_time.c b/plugins/check_time.c
index 3dcc662..7ee014e 100644
--- a/plugins/check_time.c
+++ b/plugins/check_time.c
@@ -329,7 +329,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", TIME_PORT);
+	xasprintf (&myport, "%d", TIME_PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_ups.c b/plugins/check_ups.c
index 30c9357..59dcc26 100644
--- a/plugins/check_ups.c
+++ b/plugins/check_ups.c
@@ -136,56 +136,56 @@ main (int argc, char **argv)
 		result = STATE_OK;
 
 		if (status & UPSSTATUS_OFF) {
-			asprintf (&ups_status, "Off");
+			xasprintf (&ups_status, "Off");
 			result = STATE_CRITICAL;
 		}
 		else if ((status & (UPSSTATUS_OB | UPSSTATUS_LB)) ==
 						 (UPSSTATUS_OB | UPSSTATUS_LB)) {
-			asprintf (&ups_status, _("On Battery, Low Battery"));
+			xasprintf (&ups_status, _("On Battery, Low Battery"));
 			result = STATE_CRITICAL;
 		}
 		else {
 			if (status & UPSSTATUS_OL) {
-				asprintf (&ups_status, "%s%s", ups_status, _("Online"));
+				xasprintf (&ups_status, "%s%s", ups_status, _("Online"));
 			}
 			if (status & UPSSTATUS_OB) {
-				asprintf (&ups_status, "%s%s", ups_status, _("On Battery"));
+				xasprintf (&ups_status, "%s%s", ups_status, _("On Battery"));
 				result = STATE_WARNING;
 			}
 			if (status & UPSSTATUS_LB) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Low Battery"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Low Battery"));
 				result = STATE_WARNING;
 			}
 			if (status & UPSSTATUS_CAL) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Calibrating"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Calibrating"));
 			}
 			if (status & UPSSTATUS_RB) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Replace Battery"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Replace Battery"));
 				result = STATE_WARNING;
 			}
 			if (status & UPSSTATUS_BYPASS) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", On Bypass"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", On Bypass"));
 			}
 			if (status & UPSSTATUS_OVER) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Overload"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Overload"));
 			}
 			if (status & UPSSTATUS_TRIM) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Trimming"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Trimming"));
 			}
 			if (status & UPSSTATUS_BOOST) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Boosting"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Boosting"));
 			}
 			if (status & UPSSTATUS_CHRG) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Charging"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Charging"));
 			}
 			if (status & UPSSTATUS_DISCHRG) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Discharging"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Discharging"));
 			}
 			if (status & UPSSTATUS_UNKOWN) {
-				asprintf (&ups_status, "%s%s", ups_status, _(", Unknown"));
+				xasprintf (&ups_status, "%s%s", ups_status, _(", Unknown"));
 			}
 		}
-		asprintf (&message, "%sStatus=%s ", message, ups_status);
+		xasprintf (&message, "%sStatus=%s ", message, ups_status);
 	}
 
 	/* get the ups utility voltage if possible */
@@ -197,7 +197,7 @@ main (int argc, char **argv)
 		supported_options |= UPS_UTILITY;
 
 		ups_utility_voltage = atof (temp_buffer);
-		asprintf (&message, "%sUtility=%3.1fV ", message, ups_utility_voltage);
+		xasprintf (&message, "%sUtility=%3.1fV ", message, ups_utility_voltage);
 
 		if (ups_utility_voltage > 120.0)
 			ups_utility_deviation = 120.0 - ups_utility_voltage;
@@ -211,13 +211,13 @@ main (int argc, char **argv)
 			else if (check_warn==TRUE && ups_utility_deviation>=warning_value) {
 				result = max_state (result, STATE_WARNING);
 			}
-			asprintf (&data, "%s",
+			xasprintf (&data, "%s",
 			          perfdata ("voltage", (long)(1000*ups_utility_voltage), "mV",
 			                    check_warn, (long)(1000*warning_value),
 			                    check_crit, (long)(1000*critical_value),
 			                    TRUE, 0, FALSE, 0));
 		} else {
-			asprintf (&data, "%s",
+			xasprintf (&data, "%s",
 			          perfdata ("voltage", (long)(1000*ups_utility_voltage), "mV",
 			                    FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0));
 		}
@@ -231,7 +231,7 @@ main (int argc, char **argv)
 	else {
 		supported_options |= UPS_BATTPCT;
 		ups_battery_percent = atof (temp_buffer);
-		asprintf (&message, "%sBatt=%3.1f%% ", message, ups_battery_percent);
+		xasprintf (&message, "%sBatt=%3.1f%% ", message, ups_battery_percent);
 
 		if (check_variable == UPS_BATTPCT) {
 			if (check_crit==TRUE && ups_battery_percent <= critical_value) {
@@ -240,13 +240,13 @@ main (int argc, char **argv)
 			else if (check_warn==TRUE && ups_battery_percent<=warning_value) {
 				result = max_state (result, STATE_WARNING);
 			}
-			asprintf (&data, "%s %s", data,
+			xasprintf (&data, "%s %s", data,
 			          perfdata ("battery", (long)ups_battery_percent, "%",
 			                    check_warn, (long)(1000*warning_value),
 			                    check_crit, (long)(1000*critical_value),
 			                    TRUE, 0, TRUE, 100));
 		} else {
-			asprintf (&data, "%s %s", data,
+			xasprintf (&data, "%s %s", data,
 			          perfdata ("battery", (long)ups_battery_percent, "%",
 			                    FALSE, 0, FALSE, 0, TRUE, 0, TRUE, 100));
 		}
@@ -260,7 +260,7 @@ main (int argc, char **argv)
 	else {
 		supported_options |= UPS_LOADPCT;
 		ups_load_percent = atof (temp_buffer);
-		asprintf (&message, "%sLoad=%3.1f%% ", message, ups_load_percent);
+		xasprintf (&message, "%sLoad=%3.1f%% ", message, ups_load_percent);
 
 		if (check_variable == UPS_LOADPCT) {
 			if (check_crit==TRUE && ups_load_percent>=critical_value) {
@@ -269,13 +269,13 @@ main (int argc, char **argv)
 			else if (check_warn==TRUE && ups_load_percent>=warning_value) {
 				result = max_state (result, STATE_WARNING);
 			}
-			asprintf (&data, "%s %s", data,
+			xasprintf (&data, "%s %s", data,
 			          perfdata ("load", (long)ups_load_percent, "%",
 			                    check_warn, (long)(1000*warning_value),
 			                    check_crit, (long)(1000*critical_value),
 			                    TRUE, 0, TRUE, 100));
 		} else {
-			asprintf (&data, "%s %s", data,
+			xasprintf (&data, "%s %s", data,
 			          perfdata ("load", (long)ups_load_percent, "%",
 			                    FALSE, 0, FALSE, 0, TRUE, 0, TRUE, 100));
 		}
@@ -291,12 +291,12 @@ main (int argc, char **argv)
 		if (temp_output_c) {
 		  tunits="degC";
 		  ups_temperature = atof (temp_buffer);
-		  asprintf (&message, "%sTemp=%3.1fC", message, ups_temperature);
+		  xasprintf (&message, "%sTemp=%3.1fC", message, ups_temperature);
 		}
 		else {
 		  tunits="degF";
 		  ups_temperature = (atof (temp_buffer) * 1.8) + 32;
-		  asprintf (&message, "%sTemp=%3.1fF", message, ups_temperature);
+		  xasprintf (&message, "%sTemp=%3.1fF", message, ups_temperature);
 		}
 
 		if (check_variable == UPS_TEMP) {
@@ -306,13 +306,13 @@ main (int argc, char **argv)
 			else if (check_warn == TRUE && ups_temperature>=warning_value) {
 				result = max_state (result, STATE_WARNING);
 			}
-			asprintf (&data, "%s %s", data,
+			xasprintf (&data, "%s %s", data,
 			          perfdata ("temp", (long)ups_temperature, tunits,
 			                    check_warn, (long)(1000*warning_value),
 			                    check_crit, (long)(1000*critical_value),
 			                    TRUE, 0, FALSE, 0));
 		} else {
-			asprintf (&data, "%s %s", data,
+			xasprintf (&data, "%s %s", data,
 			          perfdata ("temp", (long)ups_temperature, tunits,
 			                    FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0));
 		}
@@ -321,7 +321,7 @@ main (int argc, char **argv)
 	/* if the UPS does not support any options we are looking for, report an error */
 	if (supported_options == UPS_NONE) {
 		result = STATE_CRITICAL;
-		asprintf (&message, _("UPS does not support any available options\n"));
+		xasprintf (&message, _("UPS does not support any available options\n"));
 	}
 
 	/* reset timeout */
@@ -595,7 +595,7 @@ void
 print_help (void)
 {
 	char *myport;
-	asprintf (&myport, "%d", PORT);
+	xasprintf (&myport, "%d", PORT);
 
 	print_revision (progname, NP_VERSION);
 
diff --git a/plugins/check_users.c b/plugins/check_users.c
index 3766292..c581fb2 100644
--- a/plugins/check_users.c
+++ b/plugins/check_users.c
@@ -89,7 +89,7 @@ main (int argc, char **argv)
 	if (result == STATE_UNKNOWN)
 		printf ("%s\n", _("Unable to read output"));
 	else {
-		asprintf (&perf, "%s", perfdata ("users", users, "",
+		xasprintf (&perf, "%s", perfdata ("users", users, "",
 		  TRUE, wusers,
 		  TRUE, cusers,
 		  TRUE, 0,
diff --git a/plugins/negate.c b/plugins/negate.c
index 96f4557..493988e 100644
--- a/plugins/negate.c
+++ b/plugins/negate.c
@@ -104,7 +104,7 @@ main (int argc, char **argv)
 				*sub = '\0';
 				sub += strlen (state_text (result));
 				/* then put everything back together */
-				asprintf (&chld_out.line[i], "%s%s%s", chld_out.line[i], state_text (state[result]), sub);
+				xasprintf (&chld_out.line[i], "%s%s%s", chld_out.line[i], state_text (state[result]), sub);
 			}
 		}
 		printf ("%s\n", chld_out.line[i]);
diff --git a/plugins/urlize.c b/plugins/urlize.c
index 6bb42db..30b2a35 100644
--- a/plugins/urlize.c
+++ b/plugins/urlize.c
@@ -102,7 +102,7 @@ main (int argc, char **argv)
 
 	cmd = strdup (argv[optind++]);
 	for (c = optind; c < argc; c++) {
-		asprintf (&cmd, "%s %s", cmd, argv[c]);
+		xasprintf (&cmd, "%s %s", cmd, argv[c]);
 	}
 
 	child_process = spopen (cmd);
diff --git a/plugins/utils.c b/plugins/utils.c
index 4537390..8827e31 100644
--- a/plugins/utils.c
+++ b/plugins/utils.c
@@ -358,7 +358,7 @@ strscpy (char *dest, const char *src)
 	if (src == NULL)
 		return NULL;
 
-	asprintf (&dest, "%s", src);
+	xasprintf (&dest, "%s", src);
 
 	return dest;
 }
@@ -513,6 +513,33 @@ strpcat (char *dest, const char *src, const char *str)
 	return dest;
 }
 
+
+/******************************************************************************
+ *
+ * asprintf, but die on failure
+ *
+ ******************************************************************************/
+
+int
+xvasprintf (char **strp, const char *fmt, va_list ap)
+{
+	int result = vasprintf (strp, fmt, ap);
+	if (result == -1 || *strp == NULL)
+		die (STATE_UNKNOWN, _("failed malloc in xvasprintf\n"));
+	return result;
+}
+
+int
+xasprintf (char **strp, const char *fmt, ...)
+{
+	va_list ap;
+	int result;
+	va_start (ap, fmt);
+	result = xvasprintf (strp, fmt, ap);
+	va_end (ap);
+	return result;
+}
+
 /******************************************************************************
  *
  * Print perfdata in a standard format
@@ -534,25 +561,25 @@ char *perfdata (const char *label,
 	char *data = NULL;
 
 	if (strpbrk (label, "'= "))
-		asprintf (&data, "'%s'=%ld%s;", label, val, uom);
+		xasprintf (&data, "'%s'=%ld%s;", label, val, uom);
 	else
-		asprintf (&data, "%s=%ld%s;", label, val, uom);
+		xasprintf (&data, "%s=%ld%s;", label, val, uom);
 
 	if (warnp)
-		asprintf (&data, "%s%ld;", data, warn);
+		xasprintf (&data, "%s%ld;", data, warn);
 	else
-		asprintf (&data, "%s;", data);
+		xasprintf (&data, "%s;", data);
 
 	if (critp)
-		asprintf (&data, "%s%ld;", data, crit);
+		xasprintf (&data, "%s%ld;", data, crit);
 	else
-		asprintf (&data, "%s;", data);
+		xasprintf (&data, "%s;", data);
 
 	if (minp)
-		asprintf (&data, "%s%ld", data, minv);
+		xasprintf (&data, "%s%ld", data, minv);
 
 	if (maxp)
-		asprintf (&data, "%s;%ld", data, maxv);
+		xasprintf (&data, "%s;%ld", data, maxv);
 
 	return data;
 }
@@ -573,29 +600,29 @@ char *fperfdata (const char *label,
 	char *data = NULL;
 
 	if (strpbrk (label, "'= "))
-		asprintf (&data, "'%s'=", label);
+		xasprintf (&data, "'%s'=", label);
 	else
-		asprintf (&data, "%s=", label);
+		xasprintf (&data, "%s=", label);
 
-	asprintf (&data, "%s%f", data, val);
-	asprintf (&data, "%s%s;", data, uom);
+	xasprintf (&data, "%s%f", data, val);
+	xasprintf (&data, "%s%s;", data, uom);
 
 	if (warnp)
-		asprintf (&data, "%s%f", data, warn);
+		xasprintf (&data, "%s%f", data, warn);
 
-	asprintf (&data, "%s;", data);
+	xasprintf (&data, "%s;", data);
 
 	if (critp)
-		asprintf (&data, "%s%f", data, crit);
+		xasprintf (&data, "%s%f", data, crit);
 
-	asprintf (&data, "%s;", data);
+	xasprintf (&data, "%s;", data);
 
 	if (minp)
-		asprintf (&data, "%s%f", data, minv);
+		xasprintf (&data, "%s%f", data, minv);
 
 	if (maxp) {
-		asprintf (&data, "%s;", data);
-		asprintf (&data, "%s%f", data, maxv);
+		xasprintf (&data, "%s;", data);
+		xasprintf (&data, "%s%f", data, maxv);
 	}
 
 	return data;
diff --git a/plugins/utils.h b/plugins/utils.h
index 3c3f189..822be94 100644
--- a/plugins/utils.h
+++ b/plugins/utils.h
@@ -81,6 +81,8 @@ char *strscpy (char *, const char *);
 char *strnl (char *);
 char *strpcpy (char *, const char *, const char *);
 char *strpcat (char *, const char *, const char *);
+int xvasprintf (char **strp, const char *fmt, va_list ap);
+int xasprintf (char **strp, const char *fmt, ...);
 
 int max_state (int a, int b);
 int max_state_alt (int a, int b);





More information about the Commits mailing list