diff options
-rw-r--r-- | source3/smbd/conn.c | 10 | ||||
-rw-r--r-- | source3/smbd/service.c | 9 |
2 files changed, 8 insertions, 11 deletions
diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c index 28e1850b45..bc5a03b4eb 100644 --- a/source3/smbd/conn.c +++ b/source3/smbd/conn.c @@ -62,7 +62,9 @@ connection_struct *conn_new(struct smbd_server_connection *sconn) connection_struct *conn; if (!(conn=talloc_zero(NULL, connection_struct)) || - !(conn->params = talloc(conn, struct share_params))) { + !(conn->params = talloc(conn, struct share_params)) || + !(conn->connectpath = talloc_strdup(conn, "")) || + !(conn->origpath = talloc_strdup(conn, ""))) { DEBUG(0,("TALLOC_ZERO() failed!\n")); TALLOC_FREE(conn); return NULL; @@ -70,9 +72,6 @@ connection_struct *conn_new(struct smbd_server_connection *sconn) conn->sconn = sconn; conn->force_group_gid = (gid_t)-1; - string_set(&conn->connectpath,""); - string_set(&conn->origpath,""); - DLIST_ADD(sconn->connections, conn); sconn->num_connections++; @@ -171,9 +170,6 @@ static void conn_free_internal(connection_struct *conn) free_namearray(conn->veto_oplock_list); free_namearray(conn->aio_write_behind_list); - string_free(&conn->connectpath); - string_free(&conn->origpath); - ZERO_STRUCTP(conn); talloc_destroy(conn); } diff --git a/source3/smbd/service.c b/source3/smbd/service.c index a1d009cb44..4fc1aa3e2d 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -61,7 +61,7 @@ bool set_conn_connectpath(connection_struct *conn, const char *connectpath) } /* Allocate for strlen + '\0' + possible leading '/' */ - destname = (char *)SMB_MALLOC(strlen(connectpath) + 2); + destname = (char *)talloc_size(conn, strlen(connectpath) + 2); if (!destname) { return false; } @@ -162,8 +162,8 @@ bool set_conn_connectpath(connection_struct *conn, const char *connectpath) DEBUG(10,("set_conn_connectpath: service %s, connectpath = %s\n", lp_servicename(talloc_tos(), SNUM(conn)), destname )); - string_set(&conn->connectpath, destname); - SAFE_FREE(destname); + talloc_free(conn->connectpath); + conn->connectpath = destname; return true; } @@ -867,7 +867,8 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn, } conn->base_share_dev = smb_fname_cpath->st.st_ex_dev; - string_set(&conn->origpath,conn->connectpath); + talloc_free(conn->origpath); + conn->origpath = talloc_strdup(conn, conn->connectpath); /* Figure out the characteristics of the underlying filesystem. This * assumes that all the filesystem mounted withing a share path have |