s3: Fix a winbind crash
authorVolker Lendecke <vl@samba.org>
Fri, 25 Jun 2010 09:47:30 +0000 (11:47 +0200)
committerVolker Lendecke <vl@samba.org>
Fri, 25 Jun 2010 10:54:15 +0000 (12:54 +0200)
nss_get_info_cached might deep inside sequence_number() invalidate the
ads_struct without telling its callers.

source3/winbindd/winbindd_ads.c

index 92e1188714ff9fd0f69ea93b2f6356d54789a8b2..00b53a205c40cb109a32e65cc04159817bb4dc92 100644 (file)
@@ -563,6 +563,16 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
                info->full_name = ads_pull_string(ads, mem_ctx, msg, "name");
        }
 
+       /*
+        * We have to re-fetch ads from the domain,
+        * nss_get_info_cached might have invalidated it.
+        */
+       ads = ads_cached_connection(domain);
+       if (ads == NULL) {
+               domain->last_status = NT_STATUS_SERVER_DISABLED;
+               goto done;
+       }
+
        if (!ads_pull_uint32(ads, msg, "primaryGroupID", &group_rid)) {
                DEBUG(1,("No primary group for %s !?\n",
                         sid_string_dbg(sid)));