Ignore:
Timestamp:
Nov 26, 2007, 9:24:27 AM (18 years ago)
Author:
Paul Smedley
Message:

Update source to 3.0.27a

Location:
branches/samba-3.0/source/nsswitch
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.0/source/nsswitch/idmap.c

    r71 r105  
    253253}
    254254
    255 /**********************************************************************
    256  Initialise idmap cache and a remote backend (if configured).
    257 **********************************************************************/
    258 
    259 static const char *idmap_default_domain[] = { "default domain", NULL };
    260 
    261255/****************************************************************************
    262256 ****************************************************************************/
     
    293287        char *compat_params = NULL;
    294288        const char **dom_list = NULL;
     289        const char *default_domain = NULL;
    295290        char *alloc_backend = NULL;
    296291        BOOL default_already_defined = False;
     
    321316                } else {
    322317                        compat = 1;
    323 
    324                         compat_backend = talloc_strdup(idmap_ctx, *compat_list);
    325                         if (compat_backend == NULL) {
    326                                 ret = NT_STATUS_NO_MEMORY;
    327                                 goto done;
    328                         }
    329318
    330319                        /* strip any leading idmap_ prefix of */
     
    341330                        }
    342331
     332                        if (compat_backend == NULL) {
     333                                ret = NT_STATUS_NO_MEMORY;
     334                                goto done;
     335                        }
     336
    343337                        /* separate the backend and module arguements */
    344338                        if ((p = strchr(compat_backend, ':')) != NULL) {
     
    357351
    358352        if ( ! dom_list) {
    359                 dom_list = idmap_default_domain;
     353                /* generate a list with our main domain */
     354                char ** dl;
     355
     356                dl = talloc_array(idmap_ctx, char *, 2);
     357                if (dl == NULL) {
     358                        ret = NT_STATUS_NO_MEMORY;
     359                        goto done;
     360                }
     361                dl[0] = talloc_strdup(dl, lp_workgroup());
     362                if (dl[0] == NULL) {
     363                        ret = NT_STATUS_NO_MEMORY;
     364                        goto done;
     365                }
     366
     367                /* terminate */
     368                dl[1] = NULL;
     369
     370                dom_list = dl;
     371                default_domain = dl[0];
    360372        }
    361373
     
    365377        DEBUG(1, ("Initializing idmap domains\n"));
    366378
    367         for (i = 0; dom_list[i]; i++) {
     379        for (i=0, num_domains=0; dom_list[i]; i++) {
    368380                const char *parm_backend;
    369381                char *config_option;
     
    373385                     || strequal(dom_list[i], get_global_sam_name()))
    374386                {
    375                         DEBUG(0,("idmap_init: Ignoring invalid domain %s\n",
     387                        DEBUG(0,("idmap_init: Ignoring domain %s\n",
    376388                                 dom_list[i]));
    377389                        continue;
    378390                }
    379391
    380                 if (strequal(dom_list[i], lp_workgroup())) {
     392                if ((dom_list[i] != default_domain) &&
     393                    strequal(dom_list[i], lp_workgroup())) {
    381394                        pri_dom_is_in_list = True;
    382395                }
     
    399412
    400413                if (dom->default_domain ||
    401                     strequal(dom_list[i], idmap_default_domain[0])) {
     414                    (default_domain && strequal(dom_list[i], default_domain))) {
    402415
    403416                        /* make sure this is set even when we match
    404                          * idmap_default_domain[0] */
     417                         * default_domain */
    405418                        dom->default_domain = True;
    406419
     
    423436                        parm_backend = talloc_strdup(idmap_ctx, compat_backend);
    424437                } else {
    425                         char *backend = lp_parm_const_string(-1, config_option,
    426                                                              "backend", "tdb");
    427                         parm_backend = talloc_strdup(idmap_ctx, backend);
     438                        parm_backend = talloc_strdup(idmap_ctx,
     439                                                     lp_parm_const_string(
     440                                                        -1, config_option,
     441                                                        "backend", "tdb"));
    428442                }
    429443                IDMAP_CHECK_ALLOC(parm_backend);
     
    479493                        goto done;
    480494                }
    481                 idmap_domains[i] = dom;
     495                idmap_domains[num_domains] = dom;
    482496
    483497                /* save default domain position for future uses */
    484498                if (dom->default_domain) {
    485                         def_dom_num = i;
    486                 }
     499                        def_dom_num = num_domains;
     500                }
     501
     502                /* Bump counter to next available slot */
     503
     504                num_domains++;
    487505
    488506                DEBUG(10, ("Domain %s - Backend %s - %sdefault - %sreadonly\n",
     
    493511                talloc_free(config_option);
    494512        }
    495 
    496         /* save the number of domains we have */
    497         num_domains = i;
    498513
    499514        /* automatically add idmap_nss backend if needed */
  • branches/samba-3.0/source/nsswitch/winbindd.c

    r44 r105  
    541541
    542542        if (*(uint32 *)(&state->request) != sizeof(state->request)) {
    543                 DEBUG(0,("request_len_recv: Invalid request size received: %d\n",
    544                          *(uint32 *)(&state->request)));
     543                DEBUG(0,("request_len_recv: Invalid request size received: %d (expected %d)\n",
     544                         *(uint32 *)(&state->request), sizeof(state->request)));
    545545                state->finished = True;
    546546                return;
  • branches/samba-3.0/source/nsswitch/winbindd_async.c

    r39 r105  
    14141414        }
    14151415
     1416        if (response->result != WINBINDD_OK) {
     1417                DEBUG(5, ("query_user returned an error\n"));
     1418                cont(private_data, False, NULL, NULL, NULL, NULL, -1, -1);
     1419                return;
     1420        }
     1421
    14161422        cont(private_data, True, response->data.user_info.acct_name,
    14171423             response->data.user_info.full_name,
  • branches/samba-3.0/source/nsswitch/winbindd_nss.h

    r1 r105  
    320320                   an 8 byte boundary.   --jerry */
    321321
    322                 char padding[1560];
     322                char padding[1800];
    323323        } data;
    324324        union {
Note: See TracChangeset for help on using the changeset viewer.