Ignore:
Timestamp:
Jul 2, 2013, 7:27:06 PM (12 years ago)
Author:
Herwig Bauernfeind
Message:

Samba Server 3.5: Update branch to 3.5.20

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.5.x/source3/rpc_server/srv_srvsvc_nt.c

    r454 r773  
    14191419        DEBUG(5,("_srvsvc_NetShareGetInfo: %d\n", __LINE__));
    14201420
    1421         fstrcpy(share_name, r->in.share_name);
    1422 
    1423         snum = find_service(share_name);
     1421        if (!r->in.share_name) {
     1422                return WERR_INVALID_NAME;
     1423        }
     1424
     1425        snum = find_service(r->in.share_name, share_name);
    14241426        if (snum < 0) {
    14251427                return WERR_INVALID_NAME;
     
    15351537{
    15361538        char *command = NULL;
    1537         char *share_name = NULL;
     1539        fstring share_name;
    15381540        char *comment = NULL;
    15391541        const char *pathname = NULL;
     
    15511553        DEBUG(5,("_srvsvc_NetShareSetInfo: %d\n", __LINE__));
    15521554
    1553         share_name = talloc_strdup(p->mem_ctx, r->in.share_name);
    1554         if (!share_name) {
    1555                 return WERR_NOMEM;
     1555        if (!r->in.share_name) {
     1556                return WERR_INVALID_NAME;
    15561557        }
    15571558
     
    15601561        }
    15611562
    1562         if ( strequal(share_name,"IPC$")
    1563                 || ( lp_enable_asu_support() && strequal(share_name,"ADMIN$") )
    1564                 || strequal(share_name,"global") )
     1563        if ( strequal(r->in.share_name,"IPC$")
     1564                || ( lp_enable_asu_support() && strequal(r->in.share_name,"ADMIN$") )
     1565                || strequal(r->in.share_name,"global") )
    15651566        {
    15661567                DEBUG(5,("_srvsvc_NetShareSetInfo: share %s cannot be "
    15671568                        "modified by a remote user.\n",
    1568                         share_name ));
     1569                        r->in.share_name ));
    15691570                return WERR_ACCESS_DENIED;
    15701571        }
    15711572
    1572         snum = find_service(share_name);
     1573        snum = find_service(r->in.share_name, share_name);
    15731574
    15741575        /* Does this share exist ? */
     
    17651766{
    17661767        char *command = NULL;
    1767         char *share_name = NULL;
     1768        char *share_name_in = NULL;
     1769        fstring share_name;
    17681770        char *comment = NULL;
    17691771        char *pathname = NULL;
     
    18021804                return WERR_ACCESS_DENIED;
    18031805        case 2:
    1804                 share_name = talloc_strdup(ctx, r->in.info->info2->name);
     1806                share_name_in = talloc_strdup(ctx, r->in.info->info2->name);
    18051807                comment = talloc_strdup(ctx, r->in.info->info2->comment);
    18061808                pathname = talloc_strdup(ctx, r->in.info->info2->path);
     
    18131815                return WERR_ACCESS_DENIED;
    18141816        case 502:
    1815                 share_name = talloc_strdup(ctx, r->in.info->info502->name);
     1817                share_name_in = talloc_strdup(ctx, r->in.info->info502->name);
    18161818                comment = talloc_strdup(ctx, r->in.info->info502->comment);
    18171819                pathname = talloc_strdup(ctx, r->in.info->info502->path);
     
    18411843        /* check for invalid share names */
    18421844
    1843         if (!share_name || !validate_net_name(share_name,
     1845        if (!share_name_in || !validate_net_name(share_name_in,
    18441846                                INVALID_SHARENAME_CHARS,
    1845                                 strlen(share_name))) {
     1847                                strlen(share_name_in))) {
    18461848                DEBUG(5,("_srvsvc_NetShareAdd: Bad sharename \"%s\"\n",
    1847                                         share_name ? share_name : ""));
     1849                                        share_name_in ? share_name_in : ""));
    18481850                return WERR_INVALID_NAME;
    18491851        }
    18501852
    1851         if (strequal(share_name,"IPC$") || strequal(share_name,"global")
     1853        if (strequal(share_name_in,"IPC$") || strequal(share_name_in,"global")
    18521854                        || (lp_enable_asu_support() &&
    1853                                         strequal(share_name,"ADMIN$"))) {
     1855                                        strequal(share_name_in,"ADMIN$"))) {
    18541856                return WERR_ACCESS_DENIED;
    18551857        }
    18561858
    1857         snum = find_service(share_name);
     1859        snum = find_service(share_name_in, share_name);
    18581860
    18591861        /* Share already exists. */
     
    18731875
    18741876        /* Ensure share name, pathname and comment don't contain '"' characters. */
    1875         string_replace(share_name, '"', ' ');
     1877        string_replace(share_name_in, '"', ' ');
    18761878        string_replace(path, '"', ' ');
    18771879        if (comment) {
     
    18831885                        lp_add_share_cmd(),
    18841886                        get_dyn_CONFIGFILE(),
    1885                         share_name,
     1887                        share_name_in,
    18861888                        path,
    18871889                        comment ? comment : "",
     
    19201922
    19211923        if (psd) {
     1924                /* Note we use share_name here, not share_name_in as
     1925                   we need a canonicalized name for setting security. */
    19221926                if (!set_share_security(share_name, psd)) {
    19231927                        DEBUG(0,("_srvsvc_NetShareAdd: Failed to add security info to share %s.\n",
     
    19471951{
    19481952        char *command = NULL;
    1949         char *share_name = NULL;
     1953        fstring share_name;
    19501954        int ret;
    19511955        int snum;
     
    19571961        DEBUG(5,("_srvsvc_NetShareDel: %d\n", __LINE__));
    19581962
    1959         share_name = talloc_strdup(p->mem_ctx, r->in.share_name);
    1960         if (!share_name) {
     1963        if (!r->in.share_name) {
    19611964                return WERR_NET_NAME_NOT_FOUND;
    19621965        }
    1963         if ( strequal(share_name,"IPC$")
    1964                 || ( lp_enable_asu_support() && strequal(share_name,"ADMIN$") )
    1965                 || strequal(share_name,"global") )
     1966        if ( strequal(r->in.share_name,"IPC$")
     1967                || ( lp_enable_asu_support() && strequal(r->in.share_name,"ADMIN$") )
     1968                || strequal(r->in.share_name,"global") )
    19661969        {
    19671970                return WERR_ACCESS_DENIED;
    19681971        }
    19691972
    1970         if (!(params = get_share_params(p->mem_ctx, share_name))) {
     1973        if (!(params = get_share_params(p->mem_ctx, r->in.share_name))) {
    19711974                return WERR_NO_SUCH_SHARE;
    19721975        }
    19731976
    1974         snum = find_service(share_name);
     1977        snum = find_service(r->in.share_name, share_name);
    19751978
    19761979        /* No change to printer shares. */
     
    21152118        ZERO_STRUCT(st);
    21162119
    2117         fstrcpy(servicename, r->in.share);
    2118 
    2119         snum = find_service(servicename);
     2120        if (!r->in.share) {
     2121                return WERR_INVALID_NAME;
     2122        }
     2123
     2124        snum = find_service(r->in.share, servicename);
    21202125        if (snum == -1) {
    21212126                DEBUG(10, ("Could not find service %s\n", servicename));
     
    22452250        ZERO_STRUCT(st);
    22462251
    2247         fstrcpy(servicename, r->in.share);
    2248 
    2249         snum = find_service(servicename);
     2252        if (!r->in.share) {
     2253                return WERR_INVALID_NAME;
     2254        }
     2255
     2256        snum = find_service(r->in.share, servicename);
    22502257        if (snum == -1) {
    22512258                DEBUG(10, ("Could not find service %s\n", servicename));
Note: See TracChangeset for help on using the changeset viewer.