Changeset 10917
- Timestamp:
- 07/29/15 19:32:47 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-newcamd.c
r10913 r10917 580 580 { 581 581 int32_t i, j, found; 582 struct s_client *cl = cur_client(); 583 FILTER client_filter; 584 FILTER *pufilt = &client_filter; 585 582 FILTER old_filter; 583 584 memcpy(&old_filter, filt, sizeof(old_filter)); 586 585 memset(filt, 0, sizeof(*filt)); 587 memset(&client_filter, 0, sizeof(client_filter));588 589 if(cl->ftab.filts) client_filter = cl->ftab.filts[0];590 586 591 587 filt->caid = aureader->caid; 592 588 if(filt->caid == 0) 593 filt->caid = client_filter.caid;594 595 for(i = 0; i < aureader->nprov ; i++)589 filt->caid = old_filter.caid; 590 591 for(i = 0; i < aureader->nprov && filt->nprids < CS_MAXPROV; i++) 596 592 { filt->prids[filt->nprids++] = b2i(3, &aureader->prid[i][1]); } 597 593 598 for(i = 0; i < pufilt->nprids; i++)594 for(i = 0; i < old_filter.nprids && filt->nprids < CS_MAXPROV; i++) 599 595 { 600 596 for(j = found = 0; (!found) && (j < filt->nprids); j++) 601 if( pufilt->prids[i] == filt->prids[j]) { found = 1; }597 if(old_filter.prids[i] == filt->prids[j]) { found = 1; } 602 598 if(!found) 603 { filt->prids[filt->nprids++] = pufilt->prids[i]; }599 { filt->prids[filt->nprids++] = old_filter.prids[i]; } 604 600 } 605 601 } … … 668 664 { 669 665 int32_t add; 670 for(i = 0; i < psfilt->nprids ; i++)666 for(i = 0; i < psfilt->nprids && filt->nprids < CS_MAXPROV; i++) 671 667 { 672 668 // use server PROVID(s) (and only those which are in user's groups) … … 708 704 if(!ucaid || ucaid == filt->caid) 709 705 { 710 for(i = 0; i < psfilt->nprids ; i++)706 for(i = 0; i < psfilt->nprids && filt->nprids < CS_MAXPROV; i++) 711 707 { 712 708 cs_log_dbg(D_CLIENT, "search server provid %d: %06X", i, psfilt->prids[i]); 713 709 if(cl->ftab.filts[j].nprids) 714 710 { 715 for(k = 0; k < cl->ftab.filts[j].nprids ; k++)711 for(k = 0; k < cl->ftab.filts[j].nprids && filt->nprids < CS_MAXPROV; k++) 716 712 if(cl->ftab.filts[j].prids[k] == psfilt->prids[i]) 717 713 { filt->prids[filt->nprids++] = cl->ftab.filts[j].prids[k]; } … … 904 900 FILTER usr_filter; 905 901 FILTER *pufilt = &usr_filter; 906 902 907 903 nc_des_login_key_get(deskey, passwdcrypt, strlen((char *)passwdcrypt), key); 908 904 memcpy(cl->ncd_skey, key, 16); … … 919 915 } 920 916 921 mk_user_ftab(&usr_filter); 922 ftab_clear(&cl->ftab); 923 ftab_add(&cl->ftab, &usr_filter); 924 pufilt = &cl->ftab.filts[0]; 917 mk_user_ftab(&usr_filter); 925 918 926 919 // set userfilter for au enabled clients 927 920 if(aureader) 928 mk_user_au_ftab(aureader, pufilt);929 930 if(cfg.ncd_mgclient)931 921 { 932 ftab_clear(&cl->ftab); //We cannot filter all cards! 922 mk_user_au_ftab(aureader, &usr_filter); 923 } 924 925 ftab_clear(&cl->ftab); 926 927 if(!cfg.ncd_mgclient) 928 { 929 ftab_add(&cl->ftab, &usr_filter); 933 930 } 934 931
Note:
See TracChangeset
for help on using the changeset viewer.