summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/proto.h5
-rw-r--r--source3/lib/util.c34
-rw-r--r--source3/rpc_server/srvsvc/srv_srvsvc_nt.c34
3 files changed, 35 insertions, 38 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 5ff1c056ce..aee1da9768 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -736,6 +736,7 @@ bool tevent_req_poll_ntstatus(struct tevent_req *req,
NTSTATUS *status);
bool any_nt_status_not_ok(NTSTATUS err1, NTSTATUS err2, NTSTATUS *result);
int timeval_to_msec(struct timeval t);
+char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname);
/* The following definitions come from lib/util_cmdline.c */
@@ -2667,10 +2668,6 @@ void do_drv_upgrade_printer(struct messaging_context *msg,
DATA_BLOB *data);
void update_monitored_printq_cache(struct messaging_context *msg_ctx);
-/* The following definitions come from rpc_server/srv_srvsvc_nt.c */
-
-char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname);
-
/* The following definitions come from rpc_server/srv_svcctl_nt.c */
bool init_service_op_table( void );
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 8805197f2d..718500a684 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -2652,3 +2652,37 @@ int timeval_to_msec(struct timeval t)
{
return t.tv_sec * 1000 + (t.tv_usec+999) / 1000;
}
+
+/*******************************************************************
+ Check a given DOS pathname is valid for a share.
+********************************************************************/
+
+char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname)
+{
+ char *ptr = NULL;
+
+ if (!dos_pathname) {
+ return NULL;
+ }
+
+ ptr = talloc_strdup(ctx, dos_pathname);
+ if (!ptr) {
+ return NULL;
+ }
+ /* Convert any '\' paths to '/' */
+ unix_format(ptr);
+ ptr = unix_clean_name(ctx, ptr);
+ if (!ptr) {
+ return NULL;
+ }
+
+ /* NT is braindead - it wants a C: prefix to a pathname ! So strip it. */
+ if (strlen(ptr) > 2 && ptr[1] == ':' && ptr[0] != '/')
+ ptr += 2;
+
+ /* Only absolute paths allowed. */
+ if (*ptr != '/')
+ return NULL;
+
+ return ptr;
+}
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
index e51fee89c6..36f4c18226 100644
--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
@@ -1513,40 +1513,6 @@ WERROR _srvsvc_NetShareGetInfo(struct pipes_struct *p,
}
/*******************************************************************
- Check a given DOS pathname is valid for a share.
-********************************************************************/
-
-char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname)
-{
- char *ptr = NULL;
-
- if (!dos_pathname) {
- return NULL;
- }
-
- ptr = talloc_strdup(ctx, dos_pathname);
- if (!ptr) {
- return NULL;
- }
- /* Convert any '\' paths to '/' */
- unix_format(ptr);
- ptr = unix_clean_name(ctx, ptr);
- if (!ptr) {
- return NULL;
- }
-
- /* NT is braindead - it wants a C: prefix to a pathname ! So strip it. */
- if (strlen(ptr) > 2 && ptr[1] == ':' && ptr[0] != '/')
- ptr += 2;
-
- /* Only absolute paths allowed. */
- if (*ptr != '/')
- return NULL;
-
- return ptr;
-}
-
-/*******************************************************************
_srvsvc_NetShareSetInfo. Modify share details.
********************************************************************/