From 82641814b287ddf135db55ae237f73f4989390c5 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 19 Aug 2009 09:57:47 +0200 Subject: [PATCH] s3:smbd: add is_fake_file_path() that takes only the raw path as string metze --- source3/include/proto.h | 1 + source3/smbd/fake_file.c | 36 ++++++++++++++++++++++-------------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/source3/include/proto.h b/source3/include/proto.h index 963e6df0c80f..d022a9d13266 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6297,6 +6297,7 @@ void reply_openerror(struct smb_request *req, NTSTATUS status); /* The following definitions come from smbd/fake_file.c */ +enum FAKE_FILE_TYPE is_fake_file_path(const char *path); enum FAKE_FILE_TYPE is_fake_file(const struct smb_filename *smb_fname); NTSTATUS open_fake_file(struct smb_request *req, connection_struct *conn, uint16_t current_vuid, diff --git a/source3/smbd/fake_file.c b/source3/smbd/fake_file.c index 743d88f360c6..6898793d29ee 100644 --- a/source3/smbd/fake_file.c +++ b/source3/smbd/fake_file.c @@ -71,38 +71,46 @@ static struct fake_file_handle *init_fake_file_handle(enum FAKE_FILE_TYPE type) Does this name match a fake filename ? ****************************************************************************/ -enum FAKE_FILE_TYPE is_fake_file(const struct smb_filename *smb_fname) +enum FAKE_FILE_TYPE is_fake_file_path(const char *path) { -#ifdef HAVE_SYS_QUOTAS int i; + + if (!path) { + return FAKE_FILE_TYPE_NONE; + } + + for (i=0;fake_files[i].name!=NULL;i++) { + if (strncmp(path,fake_files[i].name,strlen(fake_files[i].name))==0) { + DEBUG(5,("is_fake_file: [%s] is a fake file\n",path)); + return fake_files[i].type; + } + } + + return FAKE_FILE_TYPE_NONE; +} + +enum FAKE_FILE_TYPE is_fake_file(const struct smb_filename *smb_fname) +{ char *fname = NULL; NTSTATUS status; -#endif + enum FAKE_FILE_TYPE ret; if (!smb_fname) { return FAKE_FILE_TYPE_NONE; } -#ifdef HAVE_SYS_QUOTAS status = get_full_smb_filename(talloc_tos(), smb_fname, &fname); if (!NT_STATUS_IS_OK(status)) { return FAKE_FILE_TYPE_NONE; } - for (i=0;fake_files[i].name!=NULL;i++) { - if (strncmp(fname,fake_files[i].name,strlen(fake_files[i].name))==0) { - DEBUG(5,("is_fake_file: [%s] is a fake file\n",fname)); - TALLOC_FREE(fname); - return fake_files[i].type; - } - } + ret = is_fake_file_path(fname); + TALLOC_FREE(fname); -#endif - return FAKE_FILE_TYPE_NONE; + return ret; } - /**************************************************************************** Open a fake quota file with a share mode. ****************************************************************************/ -- 2.34.1