Ignore:
Timestamp:
Nov 27, 2012, 4:56:06 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated vendor to 3.6.9

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source3/smbd/dir.c

    r740 r746  
    261261        }
    262262
     263        if (sconn->using_smb2) {
     264                goto done;
     265        }
     266
    263267        DLIST_REMOVE(sconn->searches.dirptrs, dptr);
    264268
     
    280284        /* Lanman 2 specific code */
    281285        SAFE_FREE(dptr->wcard);
    282         string_set(&dptr->path,"");
     286        SAFE_FREE(dptr->path);
    283287        SAFE_FREE(dptr);
    284288}
     
    471475        ZERO_STRUCTP(dptr);
    472476
     477        dptr->path = SMB_STRDUP(path);
     478        if (!dptr->path) {
     479                SAFE_FREE(dptr);
     480                TALLOC_FREE(dir_hnd);
     481                return NT_STATUS_NO_MEMORY;
     482        }
     483        dptr->conn = conn;
     484        dptr->dir_hnd = dir_hnd;
     485        dptr->spid = spid;
     486        dptr->expect_close = expect_close;
     487        dptr->wcard = SMB_STRDUP(wcard);
     488        if (!dptr->wcard) {
     489                SAFE_FREE(dptr->path);
     490                SAFE_FREE(dptr);
     491                TALLOC_FREE(dir_hnd);
     492                return NT_STATUS_NO_MEMORY;
     493        }
     494        if (lp_posix_pathnames() || (wcard[0] == '.' && wcard[1] == 0)) {
     495                dptr->has_wild = True;
     496        } else {
     497                dptr->has_wild = wcard_has_wild;
     498        }
     499
     500        dptr->attr = attr;
     501
     502        if (sconn->using_smb2) {
     503                goto done;
     504        }
     505
    473506        if(old_handle) {
    474507
     
    494527                        if(dptr->dnum == -1 || dptr->dnum > 254) {
    495528                                DEBUG(0,("dptr_create: returned %d: Error - all old dirptrs in use ?\n", dptr->dnum));
     529                                SAFE_FREE(dptr->path);
     530                                SAFE_FREE(dptr->wcard);
    496531                                SAFE_FREE(dptr);
    497532                                TALLOC_FREE(dir_hnd);
     
    524559                        if(dptr->dnum == -1 || dptr->dnum < 255) {
    525560                                DEBUG(0,("dptr_create: returned %d: Error - all new dirptrs in use ?\n", dptr->dnum));
     561                                SAFE_FREE(dptr->path);
     562                                SAFE_FREE(dptr->wcard);
    526563                                SAFE_FREE(dptr);
    527564                                TALLOC_FREE(dir_hnd);
     
    535572        dptr->dnum += 1; /* Always bias the dnum by one - no zero dnums allowed. */
    536573
    537         string_set(&dptr->path,path);
    538         dptr->conn = conn;
    539         dptr->dir_hnd = dir_hnd;
    540         dptr->spid = spid;
    541         dptr->expect_close = expect_close;
    542         dptr->wcard = SMB_STRDUP(wcard);
    543         if (!dptr->wcard) {
    544                 bitmap_clear(sconn->searches.dptr_bmap, dptr->dnum - 1);
    545                 SAFE_FREE(dptr);
    546                 TALLOC_FREE(dir_hnd);
    547                 return NT_STATUS_NO_MEMORY;
    548         }
    549         if (lp_posix_pathnames() || (wcard[0] == '.' && wcard[1] == 0)) {
    550                 dptr->has_wild = True;
    551         } else {
    552                 dptr->has_wild = wcard_has_wild;
    553         }
    554 
    555         dptr->attr = attr;
    556 
    557574        DLIST_ADD(sconn->searches.dirptrs, dptr);
    558575
     576done:
    559577        DEBUG(3,("creating new dirptr %d for path %s, expect_close = %d\n",
    560578                dptr->dnum,path,expect_close)); 
     
    13281346                SMB_VFS_CLOSEDIR(dirp->conn,dirp->dir);
    13291347        }
    1330         if (dirp->conn->sconn) {
     1348        if (dirp->conn->sconn && !dirp->conn->sconn->using_smb2) {
    13311349                dirp->conn->sconn->searches.dirhandles_open--;
    13321350        }
     
    13591377        }
    13601378
    1361         if (sconn) {
     1379        if (sconn && !sconn->using_smb2) {
    13621380                sconn->searches.dirhandles_open++;
    13631381        }
     
    14031421        }
    14041422
    1405         if (sconn) {
     1423        if (sconn && !sconn->using_smb2) {
    14061424                sconn->searches.dirhandles_open++;
    14071425        }
Note: See TracChangeset for help on using the changeset viewer.