Ignore:
Timestamp:
Nov 24, 2016, 1:14:11 PM (9 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to version 4.4.3

File:
1 edited

Legend:

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

    r871 r988  
    8080
    8181static bool api_Unsupported(struct smbd_server_connection *sconn,
    82                             connection_struct *conn, uint16 vuid,
     82                            connection_struct *conn, uint64_t vuid,
    8383                                char *param, int tpscnt,
    8484                                char *data, int tdscnt,
     
    8888
    8989static bool api_TooSmall(struct smbd_server_connection *sconn,
    90                          connection_struct *conn, uint16 vuid, char *param, char *data,
     90                         connection_struct *conn, uint64_t vuid, char *param, char *data,
    9191                         int mdrcnt, int mprcnt,
    9292                         char **rdata, char **rparam,
     
    111111                return 0;
    112112        }
    113         buf = talloc_string_sub(ctx, buf,"%S",lp_servicename(snum));
     113        buf = talloc_string_sub(ctx, buf,"%S", lp_servicename(ctx, snum));
    114114        if (!buf) {
    115115                *p_space_remaining = 0;
     
    117117        }
    118118        buf = talloc_sub_advanced(ctx,
    119                                 lp_servicename(SNUM(conn)),
    120                                 conn->session_info->unix_name,
     119                                  lp_servicename(ctx, SNUM(conn)),
     120                                conn->session_info->unix_info->unix_name,
    121121                                conn->connectpath,
    122                                 conn->session_info->utok.gid,
    123                                 conn->session_info->sanitized_username,
    124                                 conn->session_info->info3->base.domain.string,
     122                                conn->session_info->unix_token->gid,
     123                                conn->session_info->unix_info->sanitized_username,
     124                                conn->session_info->info->domain_name,
    125125                                buf);
    126126        if (!buf) {
     
    163163                return 0;
    164164        }
    165         buf = talloc_string_sub(ctx,buf,"%S",lp_servicename(snum));
     165        buf = talloc_string_sub(ctx,buf,"%S",lp_servicename(ctx, snum));
    166166        if (!buf) {
    167167                return 0;
    168168        }
    169169        buf = talloc_sub_advanced(ctx,
    170                                 lp_servicename(SNUM(conn)),
    171                                 conn->session_info->unix_name,
     170                                  lp_servicename(ctx, SNUM(conn)),
     171                                conn->session_info->unix_info->unix_name,
    172172                                conn->connectpath,
    173                                 conn->session_info->utok.gid,
    174                                 conn->session_info->sanitized_username,
    175                                 conn->session_info->info3->base.domain.string,
     173                                conn->session_info->unix_token->gid,
     174                                conn->session_info->unix_info->sanitized_username,
     175                                conn->session_info->info->domain_name,
    176176                                buf);
    177177        if (!buf) {
     
    308308        const char *str=NULL;
    309309        int is_string=0, stringused;
    310         int32 temp;
     310        int32_t temp;
    311311
    312312        va_start(args,p);
     
    613613        int                             i;
    614614        fstring                         location;
    615         trim_string((char *)driver->driver_path, "\\print$\\WIN40\\0\\", 0);
    616         trim_string((char *)driver->data_file, "\\print$\\WIN40\\0\\", 0);
    617         trim_string((char *)driver->help_file, "\\print$\\WIN40\\0\\", 0);
     615        trim_string(discard_const_p(char, driver->driver_path), "\\print$\\WIN40\\0\\", 0);
     616        trim_string(discard_const_p(char, driver->data_file), "\\print$\\WIN40\\0\\", 0);
     617        trim_string(discard_const_p(char, driver->help_file), "\\print$\\WIN40\\0\\", 0);
    618618
    619619        PACKI(desc, "W", 0x0400);                     /* don't know */
     
    642642        for ( i=0; i<count && driver->dependent_files && *driver->dependent_files[i]; i++)
    643643        {
    644                 trim_string((char *)driver->dependent_files[i], "\\print$\\WIN40\\0\\", 0);
     644                trim_string(discard_const_p(char, driver->dependent_files[i]), "\\print$\\WIN40\\0\\", 0);
    645645                PACKS(desc,"z",driver->dependent_files[i]);         /* driver files to copy */
    646646                DEBUG(3,("Dependent File: %s:\n", driver->dependent_files[i]));
     
    757757
    758758static bool api_DosPrintQGetInfo(struct smbd_server_connection *sconn,
    759                                  connection_struct *conn, uint16 vuid,
     759                                 connection_struct *conn, uint64_t vuid,
    760760                                char *param, int tpscnt,
    761761                                char *data, int tdscnt,
     
    833833
    834834        status = rpc_pipe_open_interface(conn,
    835                                          &ndr_table_spoolss.syntax_id,
     835                                         &ndr_table_spoolss,
    836836                                         conn->session_info,
    837                                          &conn->sconn->client_id,
     837                                         conn->sconn->remote_address,
    838838                                         conn->sconn->msg_ctx,
    839839                                         &cli);
     
    972972
    973973static bool api_DosPrintQEnum(struct smbd_server_connection *sconn,
    974                               connection_struct *conn, uint16 vuid,
     974                              connection_struct *conn, uint64_t vuid,
    975975                                char *param, int tpscnt,
    976976                                char *data, int tdscnt,
     
    10301030
    10311031        status = rpc_pipe_open_interface(conn,
    1032                                          &ndr_table_spoolss.syntax_id,
     1032                                         &ndr_table_spoolss,
    10331033                                         conn->session_info,
    1034                                          &conn->sconn->client_id,
     1034                                         conn->sconn->remote_address,
    10351035                                         conn->sconn->msg_ctx,
    10361036                                         &cli);
     
    11601160        }
    11611161
     1162 out:
    11621163        SAFE_FREE(subcntarr);
    1163  out:
    11641164        *rdata_len = desc.usedlen;
    11651165        *rparam_len = 8;
     
    12071207struct srv_info_struct {
    12081208        fstring name;
    1209         uint32 type;
     1209        uint32_t type;
    12101210        fstring comment;
    12111211        fstring domain;
     
    12181218******************************************************************/
    12191219
    1220 static int get_session_info(uint32 servertype,
     1220static int get_session_info(uint32_t servertype,
    12211221                           struct srv_info_struct **servers,
    12221222                           const char *domain)
     
    12271227        bool local_list_only;
    12281228        int i;
    1229 
    1230         lines = file_lines_load(cache_path(SERVER_LIST), NULL, 0, NULL);
     1229        char *slist_cache_path = cache_path(SERVER_LIST);
     1230        if (slist_cache_path == NULL) {
     1231                return 0;
     1232        }
     1233
     1234        lines = file_lines_load(slist_cache_path, NULL, 0, NULL);
    12311235        if (!lines) {
    1232                 DEBUG(4,("Can't open %s - %s\n",cache_path(SERVER_LIST),strerror(errno)));
     1236                DEBUG(4, ("Can't open %s - %s\n",
     1237                          slist_cache_path, strerror(errno)));
     1238                TALLOC_FREE(slist_cache_path);
    12331239                return 0;
    12341240        }
     1241        TALLOC_FREE(slist_cache_path);
    12351242
    12361243        /* request for everything is code for request all servers */
     
    14281435static int srv_comp(struct srv_info_struct *s1,struct srv_info_struct *s2)
    14291436{
    1430         return StrCaseCmp(s1->name,s2->name);
     1437        return strcasecmp_m(s1->name,s2->name);
    14311438}
    14321439
     
    14371444
    14381445static bool api_RNetServerEnum2(struct smbd_server_connection *sconn,
    1439                                 connection_struct *conn, uint16 vuid,
     1446                                connection_struct *conn, uint64_t vuid,
    14401447                                char *param, int tpscnt,
    14411448                                char *data, int tdscnt,
     
    14481455        int uLevel = get_safe_SVAL(param, tpscnt, p, 0, -1);
    14491456        int buf_len = get_safe_SVAL(param,tpscnt, p, 2, 0);
    1450         uint32 servertype = get_safe_IVAL(param,tpscnt,p,4, 0);
     1457        uint32_t servertype = get_safe_IVAL(param,tpscnt,p,4, 0);
    14511458        char *p2;
    14521459        int data_len, fixed_len, string_len;
     
    15971604         *  the network greater than or equal to the FirstNameToReturn.
    15981605         */
    1599         int ret = StrCaseCmp(n1, n2);
     1606        int ret = strcasecmp_m(n1, n2);
    16001607
    16011608        if (ret <= 0) {
     
    16071614
    16081615static bool api_RNetServerEnum3(struct smbd_server_connection *sconn,
    1609                                 connection_struct *conn, uint16 vuid,
     1616                                connection_struct *conn, uint64_t vuid,
    16101617                                char *param, int tpscnt,
    16111618                                char *data, int tdscnt,
     
    16181625        int uLevel = get_safe_SVAL(param, tpscnt, p, 0, -1);
    16191626        int buf_len = get_safe_SVAL(param,tpscnt, p, 2, 0);
    1620         uint32 servertype = get_safe_IVAL(param,tpscnt,p,4, 0);
     1627        uint32_t servertype = get_safe_IVAL(param,tpscnt,p,4, 0);
    16211628        char *p2;
    16221629        int data_len, fixed_len, string_len;
     
    17091716                        for (;first > 0;) {
    17101717                                int ret;
    1711                                 ret = StrCaseCmp(first_name,
     1718                                ret = strcasecmp_m(first_name,
    17121719                                                 servers[first-1].name);
    17131720                                if (ret > 0) {
     
    18001807
    18011808static bool api_RNetGroupGetUsers(struct smbd_server_connection *sconn,
    1802                                   connection_struct *conn, uint16 vuid,
     1809                                  connection_struct *conn, uint64_t vuid,
    18031810                                char *param, int tpscnt,
    18041811                                char *data, int tdscnt,
     
    19071914
    19081915                if (uLevel > 0) {
    1909                         len += StrlenExpanded(conn,snum,lp_comment(snum));
     1916                        len += StrlenExpanded(conn,snum,lp_comment(talloc_tos(), snum));
    19101917                }
    19111918                if (uLevel > 1) {
    1912                         len += strlen(lp_pathname(snum)) + 1;
     1919                        len += strlen(lp_path(talloc_tos(), snum)) + 1;
    19131920                }
    19141921                if (buflen) {
     
    19391946        }
    19401947
    1941         push_ascii(p,lp_servicename(snum),13, STR_TERMINATE);
     1948        push_ascii(p,lp_servicename(talloc_tos(), snum),13, STR_TERMINATE);
    19421949
    19431950        if (uLevel > 0) {
     
    19461953                SCVAL(p,13,0);
    19471954                type = STYPE_DISKTREE;
    1948                 if (lp_print_ok(snum)) {
     1955                if (lp_printable(snum)) {
    19491956                        type = STYPE_PRINTQ;
    19501957                }
     
    19541961                SSVAL(p,14,type);               /* device type */
    19551962                SIVAL(p,16,PTR_DIFF(p2,baseaddr));
    1956                 len += CopyExpanded(conn,snum,&p2,lp_comment(snum),&l2);
     1963                len += CopyExpanded(conn,snum,&p2,lp_comment(talloc_tos(),snum),&l2);
    19571964        }
    19581965
     
    19621969                SSVAL(p,24,1); /* current uses */
    19631970                SIVAL(p,26,PTR_DIFF(p2,baseaddr)); /* local pathname */
    1964                 len += CopyAndAdvance(&p2,lp_pathname(snum),&l2);
     1971                len += CopyAndAdvance(&p2,lp_path(talloc_tos(),snum),&l2);
    19651972                memset(p+30,0,SHPWLEN+2); /* passwd (reserved), pad field */
    19661973        }
     
    19911998
    19921999static bool api_RNetShareGetInfo(struct smbd_server_connection *sconn,
    1993                                  connection_struct *conn,uint16 vuid,
     2000                                 connection_struct *conn,uint64_t vuid,
    19942001                                char *param, int tpscnt,
    19952002                                char *data, int tdscnt,
     
    20062013        int snum;
    20072014
    2008         if (!str1 || !str2 || !netname || !p) {
     2015        if (!str1 || !str2 || !netname_in || !p) {
    20092016                return False;
    20102017        }
     
    20562063
    20572064static bool api_RNetShareEnum(struct smbd_server_connection *sconn,
    2058                               connection_struct *conn, uint16 vuid,
     2065                              connection_struct *conn, uint64_t vuid,
    20592066                                char *param, int tpscnt,
    20602067                                char *data, int tdscnt,
     
    20922099        /* Ensure all the usershares are loaded. */
    20932100        become_root();
     2101        delete_and_reload_printers(sconn->ev_ctx, sconn->msg_ctx);
    20942102        load_registry_shares();
    2095         count = load_usershare_shares();
     2103        count = load_usershare_shares(NULL, connections_snum_used);
    20962104        unbecome_root();
    20972105
     
    21022110                        continue;
    21032111                }
    2104                 push_ascii_fstring(servicename_dos, lp_servicename(i));
     2112                push_ascii_fstring(servicename_dos, lp_servicename(talloc_tos(), i));
    21052113                /* Maximum name length = 13. */
    21062114                if( lp_browseable( i ) && lp_snum_ok( i ) && (strlen(servicename_dos) < 13)) {
     
    21342142                }
    21352143
    2136                 push_ascii_fstring(servicename_dos, lp_servicename(i));
     2144                push_ascii_fstring(servicename_dos,
     2145                                   lp_servicename(talloc_tos(), i));
    21372146                if (lp_browseable(i) && lp_snum_ok(i) && (strlen(servicename_dos) < 13)) {
    21382147                        if (fill_share_info( conn,i,uLevel,&p,&f_len,&p2,&s_len,*rdata ) < 0) {
     
    21642173
    21652174static bool api_RNetShareAdd(struct smbd_server_connection *sconn,
    2166                              connection_struct *conn,uint16 vuid,
     2175                             connection_struct *conn,uint64_t vuid,
    21672176                                char *param, int tpscnt,
    21682177                                char *data, int tdscnt,
     
    22552264        }
    22562265
    2257         status = rpc_pipe_open_interface(mem_ctx, &ndr_table_srvsvc.syntax_id,
     2266        status = rpc_pipe_open_interface(mem_ctx, &ndr_table_srvsvc,
    22582267                                        conn->session_info,
    2259                                         &conn->sconn->client_id,
     2268                                        conn->sconn->remote_address,
    22602269                                        conn->sconn->msg_ctx,
    22612270                                        &cli);
     
    23252334
    23262335static bool api_RNetGroupEnum(struct smbd_server_connection *sconn,
    2327                               connection_struct *conn,uint16 vuid,
     2336                              connection_struct *conn,uint64_t vuid,
    23282337                                char *param, int tpscnt,
    23292338                                char *data, int tdscnt,
     
    23412350        uint32_t num_groups;
    23422351        uint32_t resume_handle;
    2343         struct rpc_pipe_client *samr_pipe;
     2352        struct rpc_pipe_client *samr_pipe = NULL;
    23442353        struct policy_handle samr_handle, domain_handle;
    23452354        NTSTATUS status, result;
     
    23672376
    23682377        status = rpc_pipe_open_interface(
    2369                 talloc_tos(), &ndr_table_samr.syntax_id,
    2370                 conn->session_info, &conn->sconn->client_id,
     2378                talloc_tos(), &ndr_table_samr,
     2379                conn->session_info, conn->sconn->remote_address,
    23712380                conn->sconn->msg_ctx, &samr_pipe);
    23722381        if (!NT_STATUS_IS_OK(status)) {
     
    23782387        b = samr_pipe->binding_handle;
    23792388
    2380         status = dcerpc_samr_Connect2(b, talloc_tos(), global_myname(),
     2389        status = dcerpc_samr_Connect2(b, talloc_tos(), lp_netbios_name(),
    23812390                                      SAMR_ACCESS_LOOKUP_DOMAIN, &samr_handle,
    23822391                                      &result);
     
    25072516
    25082517static bool api_NetUserGetGroups(struct smbd_server_connection *sconn,
    2509                                  connection_struct *conn,uint16 vuid,
     2518                                 connection_struct *conn,uint64_t vuid,
    25102519                                char *param, int tpscnt,
    25112520                                char *data, int tdscnt,
     
    25252534        char *endp = NULL;
    25262535
    2527         struct rpc_pipe_client *samr_pipe;
     2536        struct rpc_pipe_client *samr_pipe = NULL;
    25282537        struct policy_handle samr_handle, domain_handle, user_handle;
    25292538        struct lsa_String name;
     
    25732582
    25742583        status = rpc_pipe_open_interface(
    2575                 talloc_tos(), &ndr_table_samr.syntax_id,
    2576                 conn->session_info, &conn->sconn->client_id,
     2584                talloc_tos(), &ndr_table_samr,
     2585                conn->session_info, conn->sconn->remote_address,
    25772586                conn->sconn->msg_ctx, &samr_pipe);
    25782587        if (!NT_STATUS_IS_OK(status)) {
     
    25842593        b = samr_pipe->binding_handle;
    25852594
    2586         status = dcerpc_samr_Connect2(b, talloc_tos(), global_myname(),
     2595        status = dcerpc_samr_Connect2(b, talloc_tos(), lp_netbios_name(),
    25872596                                      SAMR_ACCESS_LOOKUP_DOMAIN, &samr_handle,
    25882597                                      &result);
     
    27102719
    27112720static bool api_RNetUserEnum(struct smbd_server_connection *sconn,
    2712                              connection_struct *conn, uint16 vuid,
     2721                             connection_struct *conn, uint64_t vuid,
    27132722                                char *param, int tpscnt,
    27142723                                char *data, int tdscnt,
     
    27232732        uint32_t resume_handle;
    27242733
    2725         struct rpc_pipe_client *samr_pipe;
     2734        struct rpc_pipe_client *samr_pipe = NULL;
    27262735        struct policy_handle samr_handle, domain_handle;
    27272736        NTSTATUS status, result;
     
    27732782
    27742783        status = rpc_pipe_open_interface(
    2775                 talloc_tos(), &ndr_table_samr.syntax_id,
    2776                 conn->session_info, &conn->sconn->client_id,
     2784                talloc_tos(), &ndr_table_samr,
     2785                conn->session_info, conn->sconn->remote_address,
    27772786                conn->sconn->msg_ctx, &samr_pipe);
    27782787        if (!NT_STATUS_IS_OK(status)) {
     
    27842793        b = samr_pipe->binding_handle;
    27852794
    2786         status = dcerpc_samr_Connect2(b, talloc_tos(), global_myname(),
     2795        status = dcerpc_samr_Connect2(b, talloc_tos(), lp_netbios_name(),
    27872796                                      SAMR_ACCESS_LOOKUP_DOMAIN, &samr_handle,
    27882797                                      &result);
     
    28932902
    28942903static bool api_NetRemoteTOD(struct smbd_server_connection *sconn,
    2895                              connection_struct *conn,uint16 vuid,
     2904                             connection_struct *conn,uint64_t vuid,
    28962905                                char *param, int tpscnt,
    28972906                                char *data, int tdscnt,
     
    29522961
    29532962static bool api_SamOEMChangePassword(struct smbd_server_connection *sconn,
    2954                                      connection_struct *conn,uint16 vuid,
     2963                                     connection_struct *conn,uint64_t vuid,
    29552964                                char *param, int tpscnt,
    29562965                                char *data, int tdscnt,
     
    30363045        memcpy(hash.hash, data+516, 16);
    30373046
    3038         status = rpc_pipe_open_interface(mem_ctx, &ndr_table_samr.syntax_id,
     3047        status = rpc_pipe_open_interface(mem_ctx, &ndr_table_samr,
    30393048                                        conn->session_info,
    3040                                         &conn->sconn->client_id,
     3049                                        conn->sconn->remote_address,
    30413050                                        conn->sconn->msg_ctx,
    30423051                                        &cli);
     
    30503059        b = cli->binding_handle;
    30513060
    3052         init_lsa_AsciiString(&server, global_myname());
     3061        init_lsa_AsciiString(&server, lp_netbios_name());
    30533062        init_lsa_AsciiString(&account, user);
    30543063
     
    30823091
    30833092static bool api_RDosPrintJobDel(struct smbd_server_connection *sconn,
    3084                                 connection_struct *conn,uint16 vuid,
     3093                                connection_struct *conn,uint64_t vuid,
    30853094                                char *param, int tpscnt,
    30863095                                char *data, int tdscnt,
     
    30933102        char *str2 = skip_string(param,tpscnt,str1);
    30943103        char *p = skip_string(param,tpscnt,str2);
    3095         uint32 jobid;
     3104        uint32_t jobid;
    30963105        fstring sharename;
    30973106        int errcode;
     
    31333142
    31343143        status = rpc_pipe_open_interface(conn,
    3135                                          &ndr_table_spoolss.syntax_id,
     3144                                         &ndr_table_spoolss,
    31363145                                         conn->session_info,
    3137                                          &conn->sconn->client_id,
     3146                                         conn->sconn->remote_address,
    31383147                                         conn->sconn->msg_ctx,
    31393148                                         &cli);
     
    32153224
    32163225static bool api_WPrintQueueCtrl(struct smbd_server_connection *sconn,
    3217                                 connection_struct *conn,uint16 vuid,
     3226                                connection_struct *conn,uint64_t vuid,
    32183227                                char *param, int tpscnt,
    32193228                                char *data, int tdscnt,
     
    32613270
    32623271        status = rpc_pipe_open_interface(conn,
    3263                                          &ndr_table_spoolss.syntax_id,
     3272                                         &ndr_table_spoolss,
    32643273                                         conn->session_info,
    3265                                          &conn->sconn->client_id,
     3274                                         conn->sconn->remote_address,
    32663275                                         conn->sconn->msg_ctx,
    32673276                                         &cli);
     
    33773386
    33783387static bool api_PrintJobInfo(struct smbd_server_connection *sconn,
    3379                              connection_struct *conn, uint16 vuid,
     3388                             connection_struct *conn, uint64_t vuid,
    33803389                                char *param, int tpscnt,
    33813390                                char *data, int tdscnt,
     
    33883397        char *str2 = skip_string(param,tpscnt,str1);
    33893398        char *p = skip_string(param,tpscnt,str2);
    3390         uint32 jobid;
     3399        uint32_t jobid;
    33913400        fstring sharename;
    33923401        int uLevel = get_safe_SVAL(param,tpscnt,p,2,-1);
     
    34433452
    34443453        status = rpc_pipe_open_interface(conn,
    3445                                          &ndr_table_spoolss.syntax_id,
     3454                                         &ndr_table_spoolss,
    34463455                                         conn->session_info,
    3447                                          &conn->sconn->client_id,
     3456                                         conn->sconn->remote_address,
    34483457                                         conn->sconn->msg_ctx,
    34493458                                         &cli);
     
    35373546
    35383547static bool api_RNetServerGetInfo(struct smbd_server_connection *sconn,
    3539                                   connection_struct *conn,uint16 vuid,
     3548                                  connection_struct *conn,uint64_t vuid,
    35403549                                char *param, int tpscnt,
    35413550                                char *data, int tdscnt,
     
    36203629        p2 = p + struct_len;
    36213630
    3622         status = rpc_pipe_open_interface(mem_ctx, &ndr_table_srvsvc.syntax_id,
     3631        status = rpc_pipe_open_interface(mem_ctx, &ndr_table_srvsvc,
    36233632                                        conn->session_info,
    3624                                         &conn->sconn->client_id,
     3633                                        conn->sconn->remote_address,
    36253634                                        conn->sconn->msg_ctx,
    36263635                                        &cli);
     
    36543663
    36553664        if (uLevel != 20) {
    3656                 srvstr_push(NULL, 0, p, info.info101->server_name, 16,
    3657                         STR_ASCII|STR_UPPER|STR_TERMINATE);
     3665                size_t len = 0;
     3666                status = srvstr_push(NULL, 0, p, info.info101->server_name, 16,
     3667                        STR_ASCII|STR_UPPER|STR_TERMINATE, &len);
     3668                if (!NT_STATUS_IS_OK(status)) {
     3669                        errcode = W_ERROR_V(ntstatus_to_werror(status));
     3670                        goto out;
     3671                }
    36583672        }
    36593673        p += 16;
     
    37093723
    37103724static bool api_NetWkstaGetInfo(struct smbd_server_connection *sconn,
    3711                                 connection_struct *conn,uint16 vuid,
     3725                                connection_struct *conn,uint64_t vuid,
    37123726                                char *param, int tpscnt,
    37133727                                char *data, int tdscnt,
     
    37593773        SIVAL(p,0,PTR_DIFF(p2,*rdata)); /* host name */
    37603774        strlcpy(p2,get_local_machine_name(),PTR_DIFF(endp,p2));
    3761         strupper_m(p2);
     3775        if (!strupper_m(p2)) {
     3776                return false;
     3777        }
    37623778        p2 = skip_string(*rdata,*rdata_len,p2);
    37633779        if (!p2) {
     
    37673783
    37683784        SIVAL(p,0,PTR_DIFF(p2,*rdata));
    3769         strlcpy(p2,conn->session_info->sanitized_username,PTR_DIFF(endp,p2));
     3785        strlcpy(p2,conn->session_info->unix_info->sanitized_username,PTR_DIFF(endp,p2));
    37703786        p2 = skip_string(*rdata,*rdata_len,p2);
    37713787        if (!p2) {
     
    37763792        SIVAL(p,0,PTR_DIFF(p2,*rdata)); /* login domain */
    37773793        strlcpy(p2,lp_workgroup(),PTR_DIFF(endp,p2));
    3778         strupper_m(p2);
     3794        if (!strupper_m(p2)) {
     3795                return false;
     3796        }
    37793797        p2 = skip_string(*rdata,*rdata_len,p2);
    37803798        if (!p2) {
     
    37833801        p += 4;
    37843802
    3785         SCVAL(p,0,lp_major_announce_version()); /* system version - e.g 4 in 4.1 */
    3786         SCVAL(p,1,lp_minor_announce_version()); /* system version - e.g .1 in 4.1 */
     3803        SCVAL(p,0,SAMBA_MAJOR_NBT_ANNOUNCE_VERSION); /* system version - e.g 4 in 4.1 */
     3804        SCVAL(p,1,SAMBA_MINOR_NBT_ANNOUNCE_VERSION); /* system version - e.g .1 in 4.1 */
    37873805        p += 2;
    37883806
     
    39733991
    39743992static bool api_RNetUserGetInfo(struct smbd_server_connection *sconn,
    3975                                 connection_struct *conn, uint16 vuid,
     3993                                connection_struct *conn, uint64_t vuid,
    39763994                                char *param, int tpscnt,
    39773995                                char *data, int tdscnt,
     
    40494067        ZERO_STRUCT(user_handle);
    40504068
    4051         status = rpc_pipe_open_interface(mem_ctx, &ndr_table_samr.syntax_id,
     4069        status = rpc_pipe_open_interface(mem_ctx, &ndr_table_samr,
    40524070                                        conn->session_info,
    4053                                         &conn->sconn->client_id,
     4071                                        conn->sconn->remote_address,
    40544072                                        conn->sconn->msg_ctx,
    40554073                                        &cli);
     
    40644082
    40654083        status = dcerpc_samr_Connect2(b, mem_ctx,
    4066                                       global_myname(),
     4084                                      lp_netbios_name(),
    40674085                                      SAMR_ACCESS_CONNECT_TO_SERVER |
    40684086                                      SAMR_ACCESS_ENUM_DOMAINS |
     
    43704388
    43714389static bool api_WWkstaUserLogon(struct smbd_server_connection *sconn,
    4372                                 connection_struct *conn,uint16 vuid,
     4390                                connection_struct *conn,uint64_t vuid,
    43734391                                char *param, int tpscnt,
    43744392                                char *data, int tdscnt,
     
    43854403                /* With share level security vuid will always be zero.
    43864404                   Don't depend on vuser being non-null !!. JRA */
    4387         user_struct *vuser = get_valid_user_struct(sconn, vuid);
     4405        struct user_struct *vuser = get_valid_user_struct(sconn, vuid);
    43884406
    43894407        if (!str1 || !str2 || !p) {
     
    43934411        if(vuser != NULL) {
    43944412                DEBUG(3,("  Username of UID %d is %s\n",
    4395                          (int)vuser->session_info->utok.uid,
    4396                          vuser->session_info->unix_name));
     4413                         (int)vuser->session_info->unix_token->uid,
     4414                         vuser->session_info->unix_info->unix_name));
    43974415        }
    43984416
     
    44484466                        fstrcpy(mypath,"\\\\");
    44494467                        fstrcat(mypath,get_local_machine_name());
    4450                         strupper_m(mypath);
     4468                        if (!strupper_m(mypath)) {
     4469                                return false;
     4470                        }
    44514471                        PACKS(&desc,"z",mypath); /* computer */
    44524472                }
     
    44544474                PACKS(&desc,"z",lp_workgroup());/* domain */
    44554475                PACKS(&desc,"z", vuser ?
    4456                         vuser->session_info->info3->base.logon_script.string
     4476                      vuser->session_info->info->logon_script
    44574477                        : ""); /* script path */
    44584478                PACKI(&desc,"D",0x00000000);            /* reserved */
     
    44794499
    44804500static bool api_WAccessGetUserPerms(struct smbd_server_connection *sconn,
    4481                                     connection_struct *conn,uint16 vuid,
     4501                                    connection_struct *conn,uint64_t vuid,
    44824502                                char *param, int tpscnt,
    44834503                                char *data, int tdscnt,
     
    45254545
    45264546static bool api_WPrintJobGetInfo(struct smbd_server_connection *sconn,
    4527                                  connection_struct *conn, uint16 vuid,
     4547                                 connection_struct *conn, uint64_t vuid,
    45284548                                char *param, int tpscnt,
    45294549                                char *data, int tdscnt,
     
    45374557        int uLevel;
    45384558        fstring sharename;
    4539         uint32 jobid;
     4559        uint32_t jobid;
    45404560        struct pack_desc desc;
    45414561        char *tmpdata=NULL;
     
    45764596
    45774597        status = rpc_pipe_open_interface(conn,
    4578                                          &ndr_table_spoolss.syntax_id,
     4598                                         &ndr_table_spoolss,
    45794599                                         conn->session_info,
    4580                                          &conn->sconn->client_id,
     4600                                         conn->sconn->remote_address,
    45814601                                         conn->sconn->msg_ctx,
    45824602                                         &cli);
     
    46634683
    46644684static bool api_WPrintJobEnumerate(struct smbd_server_connection *sconn,
    4665                                    connection_struct *conn, uint16 vuid,
     4685                                   connection_struct *conn, uint64_t vuid,
    46664686                                char *param, int tpscnt,
    46674687                                char *data, int tdscnt,
     
    47184738
    47194739        status = rpc_pipe_open_interface(conn,
    4720                                          &ndr_table_spoolss.syntax_id,
     4740                                         &ndr_table_spoolss,
    47214741                                         conn->session_info,
    4722                                          &conn->sconn->client_id,
     4742                                         conn->sconn->remote_address,
    47234743                                         conn->sconn->msg_ctx,
    47244744                                         &cli);
     
    48394859        strncpy(buf, info2->printername, sizeof(buf)-1);
    48404860        buf[sizeof(buf)-1] = 0;
    4841         strupper_m(buf);
     4861        (void)strupper_m(buf);
    48424862
    48434863        if (uLevel <= 1) {
     
    48694889
    48704890static bool api_WPrintDestGetInfo(struct smbd_server_connection *sconn,
    4871                                   connection_struct *conn, uint16 vuid,
     4891                                  connection_struct *conn, uint64_t vuid,
    48724892                                char *param, int tpscnt,
    48734893                                char *data, int tdscnt,
     
    49184938
    49194939        status = rpc_pipe_open_interface(conn,
    4920                                          &ndr_table_spoolss.syntax_id,
     4940                                         &ndr_table_spoolss,
    49214941                                         conn->session_info,
    4922                                          &conn->sconn->client_id,
     4942                                         conn->sconn->remote_address,
    49234943                                         conn->sconn->msg_ctx,
    49244944                                         &cli);
     
    50075027
    50085028static bool api_WPrintDestEnum(struct smbd_server_connection *sconn,
    5009                                connection_struct *conn, uint16 vuid,
     5029                               connection_struct *conn, uint64_t vuid,
    50105030                                char *param, int tpscnt,
    50115031                                char *data, int tdscnt,
     
    50505070
    50515071        status = rpc_pipe_open_interface(conn,
    5052                                          &ndr_table_spoolss.syntax_id,
     5072                                         &ndr_table_spoolss,
    50535073                                         conn->session_info,
    5054                                          &conn->sconn->client_id,
     5074                                         conn->sconn->remote_address,
    50555075                                         conn->sconn->msg_ctx,
    50565076                                         &cli);
     
    51185138
    51195139static bool api_WPrintDriverEnum(struct smbd_server_connection *sconn,
    5120                                  connection_struct *conn, uint16 vuid,
     5140                                 connection_struct *conn, uint64_t vuid,
    51215141                                char *param, int tpscnt,
    51225142                                char *data, int tdscnt,
     
    51825202
    51835203static bool api_WPrintQProcEnum(struct smbd_server_connection *sconn,
    5184                                 connection_struct *conn, uint16 vuid,
     5204                                connection_struct *conn, uint64_t vuid,
    51855205                                char *param, int tpscnt,
    51865206                                char *data, int tdscnt,
     
    52465266
    52475267static bool api_WPrintPortEnum(struct smbd_server_connection *sconn,
    5248                                connection_struct *conn, uint16 vuid,
     5268                               connection_struct *conn, uint64_t vuid,
    52495269                                char *param, int tpscnt,
    52505270                                char *data, int tdscnt,
     
    53165336
    53175337static bool api_RNetSessionEnum(struct smbd_server_connection *sconn,
    5318                                 connection_struct *conn, uint16 vuid,
     5338                                connection_struct *conn, uint64_t vuid,
    53195339                                char *param, int tpscnt,
    53205340                                char *data, int tdscnt,
     
    53615381
    53625382        status = rpc_pipe_open_interface(conn,
    5363                                          &ndr_table_srvsvc.syntax_id,
     5383                                         &ndr_table_srvsvc,
    53645384                                         conn->session_info,
    5365                                          &conn->sconn->client_id,
     5385                                         conn->sconn->remote_address,
    53665386                                         conn->sconn->msg_ctx,
    53675387                                         &cli);
     
    54555475
    54565476static bool api_TooSmall(struct smbd_server_connection *sconn,
    5457                          connection_struct *conn,uint16 vuid, char *param, char *data,
     5477                         connection_struct *conn,uint64_t vuid, char *param, char *data,
    54585478                         int mdrcnt, int mprcnt,
    54595479                         char **rdata, char **rparam,
     
    54805500
    54815501static bool api_Unsupported(struct smbd_server_connection *sconn,
    5482                             connection_struct *conn, uint16 vuid,
     5502                            connection_struct *conn, uint64_t vuid,
    54835503                                char *param, int tpscnt,
    54845504                                char *data, int tdscnt,
     
    55075527        int id;
    55085528        bool (*fn)(struct smbd_server_connection *sconn,
    5509                    connection_struct *, uint16,
     5529                   connection_struct *, uint64_t,
    55105530                        char *, int,
    55115531                        char *, int,
     
    55585578****************************************************************************/
    55595579
    5560 void api_reply(connection_struct *conn, uint16 vuid,
     5580void api_reply(connection_struct *conn, uint64_t vuid,
    55615581               struct smb_request *req,
    55625582               char *data, char *params,
     
    56125632
    56135633        if (api_commands[i].auth_user && lp_restrict_anonymous()) {
    5614                 user_struct *user = get_valid_user_struct(req->sconn, vuid);
    5615 
    5616                 if (!user || user->session_info->guest) {
     5634                struct user_struct *user = get_valid_user_struct(req->sconn, vuid);
     5635
     5636                if (!user || security_session_user_level(user->session_info, NULL) < SECURITY_USER) {
    56175637                        reply_nterror(req, NT_STATUS_ACCESS_DENIED);
    56185638                        return;
Note: See TracChangeset for help on using the changeset viewer.