mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
14d0375301
This updates samba to the most recent minor version. This patch is based on a patch by Anton van Bohemen <avbohemen@ziggo.nl> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 40618
144 lines
3.5 KiB
Diff
144 lines
3.5 KiB
Diff
--- a/source3/smbd/lanman.c
|
|
+++ b/source3/smbd/lanman.c
|
|
@@ -2197,6 +2197,10 @@ static bool api_RNetShareAdd(struct smbd
|
|
struct srvsvc_NetShareInfo2 info2;
|
|
struct dcerpc_binding_handle *b;
|
|
|
|
+#ifndef SRVSVC_SUPPORT
|
|
+ return False;
|
|
+#endif
|
|
+
|
|
if (!str1 || !str2 || !p) {
|
|
return False;
|
|
}
|
|
@@ -3589,10 +3593,7 @@ static bool api_RNetServerGetInfo(struct
|
|
NTSTATUS status;
|
|
WERROR werr;
|
|
TALLOC_CTX *mem_ctx = talloc_tos();
|
|
- struct rpc_pipe_client *cli = NULL;
|
|
- union srvsvc_NetSrvInfo info;
|
|
int errcode;
|
|
- struct dcerpc_binding_handle *b;
|
|
|
|
if (!str1 || !str2 || !p) {
|
|
return False;
|
|
@@ -3655,66 +3656,16 @@ static bool api_RNetServerGetInfo(struct
|
|
p = *rdata;
|
|
p2 = p + struct_len;
|
|
|
|
- status = rpc_pipe_open_interface(mem_ctx, &ndr_table_srvsvc.syntax_id,
|
|
- conn->session_info,
|
|
- &conn->sconn->client_id,
|
|
- conn->sconn->msg_ctx,
|
|
- &cli);
|
|
- if (!NT_STATUS_IS_OK(status)) {
|
|
- DEBUG(0,("api_RNetServerGetInfo: could not connect to srvsvc: %s\n",
|
|
- nt_errstr(status)));
|
|
- errcode = W_ERROR_V(ntstatus_to_werror(status));
|
|
- goto out;
|
|
- }
|
|
-
|
|
- b = cli->binding_handle;
|
|
-
|
|
- status = dcerpc_srvsvc_NetSrvGetInfo(b, mem_ctx,
|
|
- NULL,
|
|
- 101,
|
|
- &info,
|
|
- &werr);
|
|
- if (!NT_STATUS_IS_OK(status)) {
|
|
- errcode = W_ERROR_V(ntstatus_to_werror(status));
|
|
- goto out;
|
|
- }
|
|
- if (!W_ERROR_IS_OK(werr)) {
|
|
- errcode = W_ERROR_V(werr);
|
|
- goto out;
|
|
- }
|
|
-
|
|
- if (info.info101 == NULL) {
|
|
- errcode = W_ERROR_V(WERR_INVALID_PARAM);
|
|
- goto out;
|
|
- }
|
|
-
|
|
if (uLevel != 20) {
|
|
- srvstr_push(NULL, 0, p, info.info101->server_name, 16,
|
|
+ srvstr_push(NULL, 0, p, global_myname(), 16,
|
|
STR_ASCII|STR_UPPER|STR_TERMINATE);
|
|
- }
|
|
+ }
|
|
p += 16;
|
|
if (uLevel > 0) {
|
|
- SCVAL(p,0,info.info101->version_major);
|
|
- SCVAL(p,1,info.info101->version_minor);
|
|
- SIVAL(p,2,info.info101->server_type);
|
|
-
|
|
- if (mdrcnt == struct_len) {
|
|
- SIVAL(p,6,0);
|
|
- } else {
|
|
- SIVAL(p,6,PTR_DIFF(p2,*rdata));
|
|
- if (mdrcnt - struct_len <= 0) {
|
|
- return false;
|
|
- }
|
|
- push_ascii(p2,
|
|
- info.info101->comment,
|
|
- MIN(mdrcnt - struct_len,
|
|
- MAX_SERVER_STRING_LENGTH),
|
|
- STR_TERMINATE);
|
|
- p2 = skip_string(*rdata,*rdata_len,p2);
|
|
- if (!p2) {
|
|
- return False;
|
|
- }
|
|
- }
|
|
+ SCVAL(p,0,lp_major_announce_version());
|
|
+ SCVAL(p,1,lp_minor_announce_version());
|
|
+ SIVAL(p,2,lp_default_server_announce());
|
|
+ SIVAL(p,6,0);
|
|
}
|
|
|
|
if (uLevel > 1) {
|
|
@@ -5405,6 +5356,10 @@ static bool api_RNetSessionEnum(struct s
|
|
uint32_t totalentries, resume_handle = 0;
|
|
uint32_t count = 0;
|
|
|
|
+#ifndef SRVSVC_SUPPORT
|
|
+ return False;
|
|
+#endif
|
|
+
|
|
if (!str1 || !str2 || !p) {
|
|
return False;
|
|
}
|
|
--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
|
|
+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
|
|
@@ -1533,6 +1533,10 @@ WERROR _srvsvc_NetShareSetInfo(struct pi
|
|
TALLOC_CTX *ctx = p->mem_ctx;
|
|
union srvsvc_NetShareInfo *info = r->in.info;
|
|
|
|
+#ifndef FULL_SRVSVC
|
|
+ return WERR_ACCESS_DENIED;
|
|
+#endif
|
|
+
|
|
DEBUG(5,("_srvsvc_NetShareSetInfo: %d\n", __LINE__));
|
|
|
|
if (!r->in.share_name) {
|
|
@@ -1763,6 +1767,10 @@ WERROR _srvsvc_NetShareAdd(struct pipes_
|
|
int max_connections = 0;
|
|
TALLOC_CTX *ctx = p->mem_ctx;
|
|
|
|
+#ifndef FULL_SRVSVC
|
|
+ return WERR_ACCESS_DENIED;
|
|
+#endif
|
|
+
|
|
DEBUG(5,("_srvsvc_NetShareAdd: %d\n", __LINE__));
|
|
|
|
if (r->out.parm_error) {
|
|
@@ -1945,6 +1953,10 @@ WERROR _srvsvc_NetShareDel(struct pipes_
|
|
struct share_params *params;
|
|
TALLOC_CTX *ctx = p->mem_ctx;
|
|
|
|
+#ifndef FULL_SRVSVC
|
|
+ return WERR_ACCESS_DENIED;
|
|
+#endif
|
|
+
|
|
DEBUG(5,("_srvsvc_NetShareDel: %d\n", __LINE__));
|
|
|
|
if (!r->in.share_name) {
|