From: Martin Willi Date: Wed, 15 Dec 2010 11:15:12 +0000 (+0100) Subject: Added a null-safe strdup variant X-Git-Tag: 4.5.1~190 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1038d9fee53f4c678f41959a8492ee8d1965a815;p=thirdparty%2Fstrongswan.git Added a null-safe strdup variant --- diff --git a/src/libcharon/config/child_cfg.c b/src/libcharon/config/child_cfg.c index 8ca3224843..74949be3ca 100644 --- a/src/libcharon/config/child_cfg.c +++ b/src/libcharon/config/child_cfg.c @@ -536,7 +536,7 @@ child_cfg_t *child_cfg_create(char *name, lifetime_cfg_t *lifetime, .destroy = _destroy, }, .name = strdup(name), - .updown = updown ? strdup(updown) : NULL, + .updown = strdupnull(updown), .hostaccess = hostaccess, .mode = mode, .start_action = start_action, diff --git a/src/libcharon/config/peer_cfg.c b/src/libcharon/config/peer_cfg.c index 9df14c9ae4..6f0c872794 100644 --- a/src/libcharon/config/peer_cfg.c +++ b/src/libcharon/config/peer_cfg.c @@ -682,7 +682,7 @@ peer_cfg_t *peer_cfg_create(char *name, u_int ike_version, ike_cfg_t *ike_cfg, this->use_mobike = mobike; this->dpd = dpd; this->virtual_ip = virtual_ip; - this->pool = pool ? strdup(pool) : NULL; + this->pool = strdupnull(pool); this->local_auth = linked_list_create(); this->remote_auth = linked_list_create(); this->refcount = 1; diff --git a/src/libcharon/plugins/android/android_creds.c b/src/libcharon/plugins/android/android_creds.c index aa7fc6f922..601c91e7bf 100644 --- a/src/libcharon/plugins/android/android_creds.c +++ b/src/libcharon/plugins/android/android_creds.c @@ -235,7 +235,7 @@ METHOD(android_creds_t, set_username_password, void, DESTROY_IF(this->user); this->user = id->clone(id); free(this->pass); - this->pass = password ? strdup(password) : NULL; + this->pass = strdupnull(password); this->lock->unlock(this->lock); } diff --git a/src/libcharon/plugins/nm/nm_creds.c b/src/libcharon/plugins/nm/nm_creds.c index 6387870193..ea98c056d6 100644 --- a/src/libcharon/plugins/nm/nm_creds.c +++ b/src/libcharon/plugins/nm/nm_creds.c @@ -400,7 +400,7 @@ static void set_username_password(private_nm_creds_t *this, identification_t *id DESTROY_IF(this->user); this->user = id->clone(id); free(this->pass); - this->pass = password ? strdup(password) : NULL; + this->pass = strdupnull(password); this->lock->unlock(this->lock); } @@ -411,7 +411,7 @@ static void set_key_password(private_nm_creds_t *this, char *password) { this->lock->write_lock(this->lock); free(this->keypass); - this->keypass = password ? strdup(password) : NULL; + this->keypass = strdupnull(password); this->lock->unlock(this->lock); } @@ -423,7 +423,7 @@ static void set_pin(private_nm_creds_t *this, chunk_t keyid, char *pin) this->lock->write_lock(this->lock); free(this->keypass); free(this->keyid.ptr); - this->keypass = pin ? strdup(pin) : NULL; + this->keypass = strdupnull(pin); this->keyid = chunk_clone(keyid); this->lock->unlock(this->lock); } diff --git a/src/libfast/request.c b/src/libfast/request.c index 89e91b3773..a3db70e823 100644 --- a/src/libfast/request.c +++ b/src/libfast/request.c @@ -120,7 +120,7 @@ static char *getenv_cb(void *null, const char *key) private_request_t *this = (private_request_t*)thread_this->get(thread_this); value = FCGX_GetParam(key, this->req.envp); - return value ? strdup(value) : NULL; + return strdupnull(value); } /** diff --git a/src/libstrongswan/settings.c b/src/libstrongswan/settings.c index 47ed60edca..bd279f51df 100644 --- a/src/libstrongswan/settings.c +++ b/src/libstrongswan/settings.c @@ -127,7 +127,7 @@ static section_t *section_create(char *name) { section_t *this; INIT(this, - .name = name ? strdup(name) : NULL, + .name = strdupnull(name), .sections = linked_list_create(), .kv = linked_list_create(), ); diff --git a/src/libstrongswan/utils.h b/src/libstrongswan/utils.h index 8ab7322057..ed61895ee9 100644 --- a/src/libstrongswan/utils.h +++ b/src/libstrongswan/utils.h @@ -71,6 +71,11 @@ */ #define strncaseeq(x,y,len) (strncasecmp(x, y, len) == 0) +/** + * NULL-safe strdup variant + */ +#define strdupnull(x) ({ char *_x = x; _x ? strdup(_x) : NULL; }) + /** * Macro compares two binary blobs for equality */