From: Volker Lendecke Date: Wed, 27 Nov 2019 18:00:26 +0000 (+0100) Subject: winbind: Use vasprintf() in winbindd_cache X-Git-Tag: ldb-2.1.0~484 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6d1ce7dc1723e0c9f63b6b5ec08141f198049a56;p=thirdparty%2Fsamba.git winbind: Use vasprintf() in winbindd_cache Don't need to panic, we can do explicit checks in these few callers Signed-off-by: Volker Lendecke Reviewed-by: Martin Schwenke --- diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index 9122e2bc5d6..63368fd1821 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -710,6 +710,7 @@ static struct cache_entry *wcache_fetch(struct winbind_cache *cache, va_list ap; char *kstr; struct cache_entry *centry; + int ret; if (!winbindd_use_cache() || is_my_own_sam_domain(domain) || @@ -720,9 +721,13 @@ static struct cache_entry *wcache_fetch(struct winbind_cache *cache, refresh_sequence_number(domain); va_start(ap, format); - smb_xvasprintf(&kstr, format, ap); + ret = vasprintf(&kstr, format, ap); va_end(ap); + if (ret == -1) { + return NULL; + } + centry = wcache_fetch_raw(kstr); if (centry == NULL) { free(kstr); @@ -752,11 +757,16 @@ static void wcache_delete(const char *format, ...) va_list ap; char *kstr; TDB_DATA key; + int ret; va_start(ap, format); - smb_xvasprintf(&kstr, format, ap); + ret = vasprintf(&kstr, format, ap); va_end(ap); + if (ret == -1) { + return; + } + key = string_tdb_data(kstr); tdb_delete(wcache->tdb, key); @@ -927,15 +937,20 @@ static void centry_end(struct cache_entry *centry, const char *format, ...) va_list ap; char *kstr; TDB_DATA key, data; + int ret; if (!winbindd_use_cache()) { return; } va_start(ap, format); - smb_xvasprintf(&kstr, format, ap); + ret = vasprintf(&kstr, format, ap); va_end(ap); + if (ret == -1) { + return; + } + key = string_tdb_data(kstr); data.dptr = centry->data; data.dsize = centry->ofs;