diff options
author | Gerald Carter <jerry@samba.org> | 2005-08-12 16:29:00 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2005-08-12 16:29:00 +0000 |
commit | 1aa282b7ae37643da90f835e17f9409afc05f61b (patch) | |
tree | 041038a0b3783a26b5c6cb4675a7ba50ac2d7a4f | |
parent | e1ce7b6887a99d7119cbea5a39aded1c0bb84915 (diff) | |
download | samba-1aa282b7ae37643da90f835e17f9409afc05f61b.tar.gz |
r9268: bumping version to 3.0.20rc3
cherry picking fixes for 3.0.20
svn merge -r9200:9201 $SVNURL/branches/SAMBA_3_0
svn merge -r9201:9203 $SVNURL/branches/SAMBA_3_0
svn merge -r9203:9225 $SVNURL/branches/SAMBA_3_0
svn merge -r9225:9229 $SVNURL/branches/SAMBA_3_0
svn merge -r9229:9242 $SVNURL/branches/SAMBA_3_0
svn merge -r9242:9244 $SVNURL/branches/SAMBA_3_0
svn merge -r9244:9246 $SVNURL/branches/SAMBA_3_0
svn merge -r9246:9232 $SVNURL/branches/SAMBA_3_0
svn merge -r9246:9252 $SVNURL/branches/SAMBA_3_0
svn merge -r9252:9253 $SVNURL/branches/SAMBA_3_0
svn merge -r9253:9266 $SVNURL/branches/SAMBA_3_0
-rw-r--r-- | source/VERSION | 2 | ||||
-rw-r--r-- | source/auth/auth_sam.c | 4 | ||||
-rwxr-xr-x | source/client/mount.cifs.c | 24 | ||||
-rw-r--r-- | source/include/doserr.h | 1 | ||||
-rw-r--r-- | source/lib/sysquotas_4A.c | 28 | ||||
-rw-r--r-- | source/nsswitch/winbindd_ads.c | 3 | ||||
-rw-r--r-- | source/printing/printing.c | 24 | ||||
-rw-r--r-- | source/rpc_server/srv_netlog_nt.c | 15 | ||||
-rw-r--r-- | source/rpc_server/srv_samr_util.c | 39 | ||||
-rw-r--r-- | source/rpc_server/srv_spoolss_nt.c | 5 | ||||
-rw-r--r-- | source/smbd/trans2.c | 5 | ||||
-rw-r--r-- | source/web/swat.c | 4 | ||||
-rw-r--r-- | swat/help/welcome.html | 6 |
13 files changed, 120 insertions, 40 deletions
diff --git a/source/VERSION b/source/VERSION index 560e6a294e9..306b21567ca 100644 --- a/source/VERSION +++ b/source/VERSION @@ -51,7 +51,7 @@ SAMBA_VERSION_PRE_RELEASE= # e.g. SAMBA_VERSION_RC_RELEASE=1 # # -> "3.0.0rc1" # ######################################################## -SAMBA_VERSION_RC_RELEASE=2 +SAMBA_VERSION_RC_RELEASE=3 ######################################################## # To mark SVN snapshots this should be set to 'yes' # diff --git a/source/auth/auth_sam.c b/source/auth/auth_sam.c index 023e441e241..bb4df707ef7 100644 --- a/source/auth/auth_sam.c +++ b/source/auth/auth_sam.c @@ -78,6 +78,7 @@ static BOOL logon_hours_ok(SAM_ACCOUNT *sampass) /* In logon hours first bit is Sunday from 12AM to 1AM */ const uint8 *hours; struct tm *utctime; + time_t lasttime; uint8 bitmask, bitpos; hours = pdb_get_hours(sampass); @@ -86,7 +87,8 @@ static BOOL logon_hours_ok(SAM_ACCOUNT *sampass) return True; } - utctime = localtime(&smb_last_time.tv_sec); + lasttime = (time_t)smb_last_time.tv_sec; + utctime = localtime(&lasttime); /* find the corresponding byte and bit */ bitpos = (utctime->tm_wday * 24 + utctime->tm_hour) % 168; diff --git a/source/client/mount.cifs.c b/source/client/mount.cifs.c index 9c0f582d85f..0c3b0b321e8 100755 --- a/source/client/mount.cifs.c +++ b/source/client/mount.cifs.c @@ -39,7 +39,7 @@ #include <fcntl.h> #define MOUNT_CIFS_VERSION_MAJOR "1" -#define MOUNT_CIFS_VERSION_MINOR "8" +#define MOUNT_CIFS_VERSION_MINOR "9" #ifndef MOUNT_CIFS_VENDOR_SUFFIX #define MOUNT_CIFS_VENDOR_SUFFIX "" @@ -127,8 +127,10 @@ static int open_cred_file(char * file_name) if(fs == NULL) return errno; line_buf = malloc(4096); - if(line_buf == NULL) + if(line_buf == NULL) { + fclose(fs); return -ENOMEM; + } while(fgets(line_buf,4096,fs)) { /* parse line from credential file */ @@ -570,13 +572,15 @@ static void check_for_comma(char ** ppasswrd) char *pass; int i,j; int number_of_commas = 0; - int len = strlen(*ppasswrd); + int len; if(ppasswrd == NULL) return; else (pass = *ppasswrd); + len = strlen(pass); + for(i=0;i<len;i++) { if(pass[i] == ',') number_of_commas++; @@ -692,7 +696,6 @@ static char * parse_server(char ** punc_name) char * ipaddress_string = NULL; struct hostent * host_entry; struct in_addr server_ipaddr; - int rc; if(length > 1023) { printf("mount error: UNC name too long"); @@ -715,6 +718,13 @@ static char * parse_server(char ** punc_name) if(share) { free_share_name = 1; *punc_name = malloc(length+3); + if(*punc_name == NULL) { + /* put the original string back if + no memory left */ + *punc_name = unc_name; + return NULL; + } + *share = '/'; strncpy((*punc_name)+2,unc_name,length); unc_name = *punc_name; @@ -744,8 +754,7 @@ continue_unc_parsing: return NULL; } if(host_entry == NULL) { - printf("mount error: could not find target server. TCP name %s not found ", unc_name); - printf(" rc = %d\n",rc); + printf("mount error: could not find target server. TCP name %s not found\n", unc_name); return NULL; } else { /* BB should we pass an alternate version of the share name as Unicode */ @@ -1018,6 +1027,9 @@ mount_retry: optlen = 0; if(share_name) optlen += strlen(share_name) + 4; + else { + printf("No server share name specified\n"); + } if(user_name) optlen += strlen(user_name) + 6; if(ipaddr) diff --git a/source/include/doserr.h b/source/include/doserr.h index 647f11527b7..7c98171250c 100644 --- a/source/include/doserr.h +++ b/source/include/doserr.h @@ -72,6 +72,7 @@ #define ERRpipeclosing 232 /* named pipe close in progress */ #define ERRnotconnected 233 /* No process on other end of named pipe */ #define ERRmoredata 234 /* More data to be returned */ +#define ERReainconsistent 255 /* from EMC */ #define ERRnomoreitems 259 #define ERRbaddirectory 267 /* Invalid directory name in a path. */ #define ERReasnotsupported 282 /* Extended attributes */ diff --git a/source/lib/sysquotas_4A.c b/source/lib/sysquotas_4A.c index 5a7d84fca91..5596481bd29 100644 --- a/source/lib/sysquotas_4A.c +++ b/source/lib/sysquotas_4A.c @@ -95,7 +95,7 @@ int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt DEBUG(10,("sys_get_vfs_quota: path[%s] bdev[%s] SMB_USER_QUOTA_TYPE uid[%u]\n", path, bdev, (unsigned)id.uid)); - if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), bdev, id.uid, (void *)&D))&&errno != EDQUOT) { + if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), (caddr_t)bdev, id.uid, (void *)&D))&&errno != EDQUOT) { return ret; } @@ -112,7 +112,7 @@ int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt DEBUG(10,("sys_get_vfs_quota: path[%s] bdev[%s] SMB_GROUP_QUOTA_TYPE gid[%u]\n", path, bdev, (unsigned)id.gid)); - if ((ret = quotactl(QCMD(Q_GETQUOTA,GRPQUOTA), bdev, id.gid, (void *)&D))&&errno != EDQUOT) { + if ((ret = quotactl(QCMD(Q_GETQUOTA,GRPQUOTA), (caddr_t)bdev, id.gid, (void *)&D))&&errno != EDQUOT) { return ret; } @@ -129,9 +129,9 @@ int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt id.uid = getuid(); DEBUG(10,("sys_get_vfs_quota: path[%s] bdev[%s] SMB_USER_FS_QUOTA_TYPE (uid[%u])\n", - path, bdev, (unsigned)id.uid)); + path, (caddr_t)bdev, (unsigned)id.uid)); - if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), bdev, id.uid, (void *)&D))==0) { + if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), (caddr_t)bdev, id.uid, (void *)&D))==0) { qflags |= QUOTAS_DENY_DISK; } @@ -144,7 +144,7 @@ int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt DEBUG(10,("sys_get_vfs_quota: path[%s] bdev[%s] SMB_GROUP_FS_QUOTA_TYPE (gid[%u])\n", path, bdev, (unsigned)id.gid)); - if ((ret = quotactl(QCMD(Q_GETQUOTA,GRPQUOTA), bdev, id.gid, (void *)&D))==0) { + if ((ret = quotactl(QCMD(Q_GETQUOTA,GRPQUOTA), (caddr_t)bdev, id.gid, (void *)&D))==0) { qflags |= QUOTAS_DENY_DISK; } @@ -202,14 +202,14 @@ int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt DEBUG(10,("sys_set_vfs_quota: path[%s] bdev[%s] SMB_USER_QUOTA_TYPE uid[%u]\n", path, bdev, (unsigned)id.uid)); - ret = quotactl(QCMD(Q_SETQLIM,USRQUOTA), bdev, id.uid, (void *)&D); + ret = quotactl(QCMD(Q_SETQLIM,USRQUOTA), (caddr_t)bdev, id.uid, (void *)&D); break; #ifdef HAVE_GROUP_QUOTA case SMB_GROUP_QUOTA_TYPE: DEBUG(10,("sys_set_vfs_quota: path[%s] bdev[%s] SMB_GROUP_QUOTA_TYPE gid[%u]\n", path, bdev, (unsigned)id.gid)); - ret = quotactl(QCMD(Q_SETQLIM,GRPQUOTA), bdev, id.gid, (void *)&D); + ret = quotactl(QCMD(Q_SETQLIM,GRPQUOTA), (caddr_t)bdev, id.gid, (void *)&D); break; #endif /* HAVE_GROUP_QUOTA */ case SMB_USER_FS_QUOTA_TYPE: @@ -228,7 +228,7 @@ int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt path, bdev, (unsigned)id.uid)); #if 0 - ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), bdev, id.uid, (void *)&D); + ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), (caddr_t)bdev, id.uid, (void *)&D); if ((qflags"AS_DENY_DISK)||(qflags"AS_ENABLED)) { if (ret == 0) { @@ -241,14 +241,14 @@ int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt return -1; } - ret = quotactl(QCMD(Q_QUOTAON,USRQUOTA), bdev, -1,(void *)quota_file); + ret = quotactl(QCMD(Q_QUOTAON,USRQUOTA), (caddr_t)bdev, -1,(void *)quota_file); } else { ret = 0; } } else { if (ret != 0) { /* turn off */ - ret = quotactl(QCMD(Q_QUOTAOFF,USRQUOTA), bdev, -1, (void *)0); + ret = quotactl(QCMD(Q_QUOTAOFF,USRQUOTA), (caddr_t)bdev, -1, (void *)0); } else { ret = 0; } @@ -257,7 +257,7 @@ int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt DEBUG(0,("sys_set_vfs_quota: ret(%d) errno(%d)[%s] uid(%d) bdev[%s]\n", ret,errno,strerror(errno),id.uid,bdev)); #else - if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), bdev, id.uid, (void *)&D))==0) { + if ((ret = quotactl(QCMD(Q_GETQUOTA,USRQUOTA), (caddr_t)bdev, id.uid, (void *)&D))==0) { oldqflags |= QUOTAS_DENY_DISK; } @@ -298,14 +298,14 @@ int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt return -1; } - ret = quotactl(QCMD(Q_QUOTAON,GRPQUOTA), bdev, -1,(void *)quota_file); + ret = quotactl(QCMD(Q_QUOTAON,GRPQUOTA), (caddr_t)bdev, -1,(void *)quota_file); } else { ret = 0; } } else { if (ret != 0) { /* turn off */ - ret = quotactl(QCMD(Q_QUOTAOFF,GRPQUOTA), bdev, -1, (void *)0); + ret = quotactl(QCMD(Q_QUOTAOFF,GRPQUOTA), (caddr_t)bdev, -1, (void *)0); } else { ret = 0; } @@ -314,7 +314,7 @@ int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qt DEBUG(0,("sys_set_vfs_quota: ret(%d) errno(%d)[%s] uid(%d) bdev[%s]\n", ret,errno,strerror(errno),id.gid,bdev)); #else - if ((ret = quotactl(QCMD(Q_GETQUOTA,GRPQUOTA), bdev, id.gid, (void *)&D))==0) { + if ((ret = quotactl(QCMD(Q_GETQUOTA,GRPQUOTA), (caddr_t)bdev, id.gid, (void *)&D))==0) { oldqflags |= QUOTAS_DENY_DISK; } diff --git a/source/nsswitch/winbindd_ads.c b/source/nsswitch/winbindd_ads.c index 3041b736f71..50899714475 100644 --- a/source/nsswitch/winbindd_ads.c +++ b/source/nsswitch/winbindd_ads.c @@ -640,7 +640,8 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain, NTSTATUS status = NT_STATUS_UNSUCCESSFUL; char *sidstr; char **members; - int i, num_members; + int i; + size_t num_members; fstring sid_string; BOOL more_values; const char **attrs; diff --git a/source/printing/printing.c b/source/printing/printing.c index 2a7cd5d3a74..52a30704667 100644 --- a/source/printing/printing.c +++ b/source/printing/printing.c @@ -399,8 +399,10 @@ uint32 sysjob_to_jobid(int unix_jobid) if (!lp_print_ok(snum)) continue; pdb = get_print_db_byname(lp_const_servicename(snum)); - if (pdb) - tdb_traverse(pdb->tdb, unixjob_traverse_fn, &unix_jobid); + if (!pdb) { + continue; + } + tdb_traverse(pdb->tdb, unixjob_traverse_fn, &unix_jobid); release_print_db(pdb); if (sysjob_to_jobid_value != (uint32)-1) return sysjob_to_jobid_value; @@ -1067,6 +1069,10 @@ static void print_queue_update_internal( const char *sharename, TDB_DATA jcdata; fstring keystr, cachestr; struct tdb_print_db *pdb = get_print_db_byname(sharename); + + if (!pdb) { + return; + } DEBUG(5,("print_queue_update_internal: printer = %s, type = %d, lpq command = [%s]\n", sharename, current_printif->type, lpq_command)); @@ -1426,6 +1432,11 @@ static void print_queue_update(int snum, BOOL force) sent. */ pdb = get_print_db_byname(sharename); + if (!pdb) { + SAFE_FREE(buffer); + return; + } + snprintf(key, sizeof(key), "MSG_PENDING/%s", sharename); if ( !tdb_store_uint32( pdb->tdb, key, time(NULL) ) ) { @@ -1731,6 +1742,10 @@ static BOOL remove_from_jobs_changed(const char* sharename, uint32 jobid) BOOL ret = False; BOOL gotlock = False; + if (!pdb) { + return False; + } + ZERO_STRUCT(data); key = string_tdb_data("INFO/jobs_changed"); @@ -2057,11 +2072,14 @@ static int get_queue_status(const char* sharename, print_status_struct *status) struct tdb_print_db *pdb = get_print_db_byname(sharename); int len; + if (status) { + ZERO_STRUCTP(status); + } + if (!pdb) return 0; if (status) { - ZERO_STRUCTP(status); fstr_sprintf(keystr, "STATUS/%s", sharename); data = tdb_fetch(pdb->tdb, string_tdb_data(keystr)); if (data.dptr) { diff --git a/source/rpc_server/srv_netlog_nt.c b/source/rpc_server/srv_netlog_nt.c index 0af8b14fe21..78ff669d075 100644 --- a/source/rpc_server/srv_netlog_nt.c +++ b/source/rpc_server/srv_netlog_nt.c @@ -606,6 +606,9 @@ NTSTATUS _net_sam_logon(pipes_struct *p, NET_Q_SAM_LOGON *q_u, NET_R_SAM_LOGON * if (!(p->dc.authenticated && deal_with_creds(p->dc.sess_key, &p->dc.clnt_cred, &q_u->sam_id.client.cred, &srv_cred))) return NT_STATUS_INVALID_HANDLE; + r_u->buffer_creds = 1; /* yes, we have valid server credentials */ + memcpy(&r_u->srv_creds, &srv_cred, sizeof(r_u->srv_creds)); + /* find the username */ switch (q_u->sam_id.logon_level) { @@ -713,6 +716,15 @@ NTSTATUS _net_sam_logon(pipes_struct *p, NET_Q_SAM_LOGON *q_u, NET_R_SAM_LOGON * /* Check account and password */ if (!NT_STATUS_IS_OK(status)) { + /* If we don't know what this domain is, we need to + indicate that we are not authoritative. This + allows the client to decide if it needs to try + a local user. Fix by jpjanosi@us.ibm.com, #2976 */ + if ( NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_USER) + && !strequal(nt_domain, get_global_sam_name()) + && !is_trusted_domain(nt_domain) ) + r_u->auth_resp = 0; /* We are not authoritative */ + free_server_info(&server_info); return status; } @@ -723,9 +735,6 @@ NTSTATUS _net_sam_logon(pipes_struct *p, NET_Q_SAM_LOGON *q_u, NET_R_SAM_LOGON * reseed_client_creds(&p->dc.clnt_cred, &q_u->sam_id.client.cred); memcpy(&p->dc.srv_cred, &p->dc.clnt_cred, sizeof(p->dc.clnt_cred)); - r_u->buffer_creds = 1; /* yes, we have valid server credentials */ - memcpy(&r_u->srv_creds, &srv_cred, sizeof(r_u->srv_creds)); - if (server_info->guest) { /* We don't like guest domain logons... */ DEBUG(5,("_net_sam_logon: Attempted domain logon as GUEST denied.\n")); diff --git a/source/rpc_server/srv_samr_util.c b/source/rpc_server/srv_samr_util.c index 66cf1cc46dc..24869d5d2bd 100644 --- a/source/rpc_server/srv_samr_util.c +++ b/source/rpc_server/srv_samr_util.c @@ -286,7 +286,25 @@ void copy_id21_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_21 *from) DEBUG(10,("INFO_21 PASS_MUST_CHANGE_AT_NEXT_LOGON: %02X\n",from->passmustchange)); if (from->passmustchange==PASS_MUST_CHANGE_AT_NEXT_LOGON) { - pdb_set_pass_must_change_time(to,0, PDB_CHANGED); + pdb_set_pass_must_change_time(to,0, PDB_CHANGED); + } else { + uint32 expire; + time_t new_time; + if (pdb_get_pass_must_change_time(to) == 0) { + if (!account_policy_get(AP_MAX_PASSWORD_AGE, &expire) + || expire == (uint32)-1) { + new_time = get_time_t_max(); + } else { + time_t old_time = pdb_get_pass_last_set_time(to); + new_time = old_time + expire; + if ((new_time) < time(0)) { + new_time = time(0) + expire; + } + } + if (!pdb_set_pass_must_change_time (to, new_time, PDB_CHANGED)) { + DEBUG (0, ("pdb_set_pass_must_change_time failed!\n")); + } + } } DEBUG(10,("INFO_21 PADDING_2: %02X\n",from->padding2)); @@ -490,7 +508,6 @@ void copy_id23_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_23 *from) DEBUG(15,("INFO_23 LOGON_HRS.HOURS: %s -> %s\n",pdb_get_hours(to),from->logon_hrs.hours)); /* Fix me: only update if it changes --metze */ pdb_set_hours(to, from->logon_hrs.hours, PDB_CHANGED); - } if (from->fields_present & ACCT_BAD_PWD_COUNT) { @@ -510,6 +527,24 @@ void copy_id23_to_sam_passwd(SAM_ACCOUNT *to, SAM_USER_INFO_23 *from) DEBUG(10,("INFO_23 PASS_MUST_CHANGE_AT_NEXT_LOGON: %02X\n",from->passmustchange)); if (from->passmustchange==PASS_MUST_CHANGE_AT_NEXT_LOGON) { pdb_set_pass_must_change_time(to,0, PDB_CHANGED); + } else { + uint32 expire; + time_t new_time; + if (pdb_get_pass_must_change_time(to) == 0) { + if (!account_policy_get(AP_MAX_PASSWORD_AGE, &expire) + || expire == (uint32)-1) { + new_time = get_time_t_max(); + } else { + time_t old_time = pdb_get_pass_last_set_time(to); + new_time = old_time + expire; + if ((new_time) < time(0)) { + new_time = time(0) + expire; + } + } + if (!pdb_set_pass_must_change_time (to, new_time, PDB_CHANGED)) { + DEBUG (0, ("pdb_set_pass_must_change_time failed!\n")); + } + } } DEBUG(10,("INFO_23 PADDING_2: %02X\n",from->padding2)); diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index 692dacf1599..5391ac5f41a 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -8040,13 +8040,14 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S /* data - counted in bytes */ *out_max_data_len = in_data_len; - if ( (*data_out = (uint8 *)TALLOC_ZERO(p->mem_ctx, in_data_len*sizeof(uint8))) == NULL) + if ( in_data_len && (*data_out = (uint8 *)TALLOC_ZERO(p->mem_ctx, in_data_len*sizeof(uint8))) == NULL) { result = WERR_NOMEM; goto done; } data_len = regval_size(val); - memcpy( *data_out, regval_data_p(val), data_len ); + if ( *data_out ) + memcpy( *data_out, regval_data_p(val), data_len ); *out_data_len = data_len; } diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c index e1462c01036..6cebff61ed4 100644 --- a/source/smbd/trans2.c +++ b/source/smbd/trans2.c @@ -878,8 +878,9 @@ static int call_trans2open(connection_struct *conn, char *inbuf, char *outbuf, i SSVAL(params,2,open_attr); put_dos_date2(params,4, mtime); SIVAL(params,8, (uint32)size); - SSVAL(params,12,open_ofun); - SSVAL(params,16,0); /* Padding. */ + SSVAL(params,12,deny_mode); + SSVAL(params,14,0); /* open_type - file or directory. */ + SSVAL(params,16,0); /* open_state - only valid for IPC device. */ if (oplock_request && lp_fake_oplocks(SNUM(conn))) { smb_action |= EXTENDED_OPLOCK_GRANTED; diff --git a/source/web/swat.c b/source/web/swat.c index 14889e35aab..43dacb2945e 100644 --- a/source/web/swat.c +++ b/source/web/swat.c @@ -188,12 +188,12 @@ static const char* get_parm_translated( if(strcmp(pLabel, pTranslated) != 0) { pstr_sprintf(output, - "<A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\"> %s</A> %s <br><span class=\"i18n_translated_parm\">%s</span>", + "<A HREF=\"/swat/help/manpages/smb.conf.5.html#%s\" target=\"docs\"> %s</A> %s <br><span class=\"i18n_translated_parm\">%s</span>", pAnchor, pHelp, pLabel, pTranslated); return output; } pstr_sprintf(output, - "<A HREF=\"/swat/help/smb.conf.5.html#%s\" target=\"docs\"> %s</A> %s", + "<A HREF=\"/swat/help/manpages/smb.conf.5.html#%s\" target=\"docs\"> %s</A> %s", pAnchor, pHelp, pLabel); return output; } diff --git a/swat/help/welcome.html b/swat/help/welcome.html index 3a6677cb5f9..bf045806fe3 100644 --- a/swat/help/welcome.html +++ b/swat/help/welcome.html @@ -54,9 +54,9 @@ Please choose a configuration action using one of the above buttons <li><b>Books</b> <ul> <li><a href="/swat/help/using_samba/toc.html" target="docs">Using Samba, 2ed.</a> - by Jay Ts, Robert Eckstein, and David Collier-Brown - <li><a href="/swat/help/Samba3-HOWTO/">The Official Samba HOWTO and Reference Guide</a> - <li><a href="/swat/help/Samba3-ByExample/">Samba 3 by Example</a> - <li><a href="/swat/help/Samba3-Developers-Guide/">The Samba Developer Guide</a> + <li><a href="/swat/help/Samba3-HOWTO/" target="docs">The Official Samba HOWTO and Reference Guide</a> + <li><a href="/swat/help/Samba3-ByExample/" target="docs">Samba 3 by Example</a> + <li><a href="/swat/help/Samba3-Developers-Guide/" target="docs">The Samba Developer Guide</a> </ul> </ul> |