*/
#include "includes.h"
+#include "smbd/smbd.h"
+#include "system/filesys.h"
+#include "../librpc/gen_ndr/ndr_netlogon.h"
+#include "auth.h"
#define ALLOC_CHECK(ptr, label) do { if ((ptr) == NULL) { DEBUG(0, ("recycle.bin: out of memory!\n")); errno = ENOMEM; goto label; } } while(0)
#undef DBGC_CLASS
#define DBGC_CLASS vfs_recycle_debug_level
-static int recycle_connect(vfs_handle_struct *handle, const char *service, const char *user);
-static void recycle_disconnect(vfs_handle_struct *handle);
static int recycle_unlink(vfs_handle_struct *handle,
const struct smb_filename *smb_fname);
-static int recycle_connect(vfs_handle_struct *handle, const char *service, const char *user)
-{
- int ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
-
- if (ret < 0) {
- return ret;
- }
-
- DEBUG(10,("recycle_connect() connect to service[%s] as user[%s].\n",
- service,user));
-
- return 0;
-}
-
-static void recycle_disconnect(vfs_handle_struct *handle)
-{
- DEBUG(10,("recycle_disconnect() connect to service[%s].\n",
- lp_servicename(SNUM(handle->conn))));
-
- SMB_VFS_NEXT_DISCONNECT(handle);
-}
-
static const char *recycle_repository(vfs_handle_struct *handle)
{
const char *tmp_str = NULL;
*new_dir = '\0';
if (dname[0] == '/') {
/* Absolute path. */
- safe_strcat(new_dir,"/",len);
+ strlcat(new_dir,"/",len+1);
}
/* Create directory tree if neccessary */
for(token = strtok_r(tok_str, "/", &saveptr); token;
token = strtok_r(NULL, "/", &saveptr)) {
- safe_strcat(new_dir, token, len);
+ strlcat(new_dir, token, len+1);
if (recycle_directory_exist(handle, new_dir))
DEBUG(10, ("recycle: dir %s already exists\n", new_dir));
else {
goto done;
}
}
- safe_strcat(new_dir, "/", len);
+ strlcat(new_dir, "/", len+1);
mode = recycle_subdir_mode(handle);
}
int rc = -1;
repository = talloc_sub_advanced(NULL, lp_servicename(SNUM(conn)),
- conn->server_info->unix_name,
+ conn->session_info->unix_info->unix_name,
conn->connectpath,
- conn->server_info->utok.gid,
- conn->server_info->sanitized_username,
- conn->server_info->info3->base.domain.string,
+ conn->session_info->unix_token->gid,
+ conn->session_info->unix_info->sanitized_username,
+ conn->session_info->info->domain_name,
recycle_repository(handle));
ALLOC_CHECK(repository, done);
/* shouldn't we allow absolute path names here? --metze */
}
static struct vfs_fn_pointers vfs_recycle_fns = {
- .connect_fn = recycle_connect,
- .disconnect = recycle_disconnect,
.unlink = recycle_unlink
};