From 51f9aa6a1ed763cb133fff2efddfbf564a82a528 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 21 Jun 2011 17:09:44 -0400 Subject: [PATCH] Fix crash in unsuccessful uses of nss_db --- ChangeLog | 3 +++ nss/nss_db/db-XXX.c | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index abc4894..5dc235e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-06-21 Ulrich Drepper + * nss/nss_db/db-XXX.c (nss_db_setENT): Only set entidx for successful + calls to internal_setent. + [BZ #12885] * sysdeps/posix/getaddrinfo.c (gaih_inet): When looking up only IPv6 addresses using gethostbyname4_r ignore IPv4 addresses. diff --git a/nss/nss_db/db-XXX.c b/nss/nss_db/db-XXX.c index 3947893..0600e38 100644 --- a/nss/nss_db/db-XXX.c +++ b/nss/nss_db/db-XXX.c @@ -71,11 +71,14 @@ CONCAT(_nss_db_set,ENTNAME) (int stayopen) status = internal_setent (DBFILE, &state); - /* Remember STAYOPEN flag. */ if (status == NSS_STATUS_SUCCESS) - keep_db |= stayopen; - /* Reset the sequential index. */ - entidx = (const char *) state.header + state.header->valstroffset; + { + /* Remember STAYOPEN flag. */ + keep_db |= stayopen; + + /* Reset the sequential index. */ + entidx = (const char *) state.header + state.header->valstroffset; + } __libc_lock_unlock (lock); -- 2.7.4