summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/service.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index dc471ab87e..f67361e66a 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -326,14 +326,17 @@ static void set_admin_user(connection_struct *conn, gid_t *groups, size_t n_grou
static connection_struct *make_connection_snum(int snum, user_struct *vuser,
DATA_BLOB password,
- fstring dev, NTSTATUS *status)
+ const char *pdev, NTSTATUS *status)
{
struct passwd *pass = NULL;
BOOL guest = False;
connection_struct *conn;
struct stat st;
fstring user;
+ fstring dev;
+
*user = 0;
+ fstrcpy(dev, pdev);
if (NT_STATUS_IS_ERR(*status = share_sanity_checks(snum, dev))) {
return NULL;
@@ -717,7 +720,7 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
**************************************************************************************/
connection_struct *make_connection_with_chdir(const char *service_in, DATA_BLOB password,
- char *dev, uint16 vuid, NTSTATUS *status)
+ const char *dev, uint16 vuid, NTSTATUS *status)
{
connection_struct *conn = NULL;
@@ -747,13 +750,16 @@ connection_struct *make_connection_with_chdir(const char *service_in, DATA_BLOB
****************************************************************************/
connection_struct *make_connection(const char *service_in, DATA_BLOB password,
- fstring dev, uint16 vuid, NTSTATUS *status)
+ const char *pdev, uint16 vuid, NTSTATUS *status)
{
uid_t euid;
user_struct *vuser = NULL;
fstring service;
+ fstring dev;
int snum = -1;
+ fstrcpy(dev, pdev);
+
/* This must ONLY BE CALLED AS ROOT. As it exits this function as root. */
if (!non_root_mode() && (euid = geteuid()) != 0) {
DEBUG(0,("make_connection: PANIC ERROR. Called as nonroot (%u)\n", (unsigned int)euid ));