summaryrefslogtreecommitdiff
path: root/source4/ntvfs
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-10-11 03:27:16 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:59:46 -0500
commitaf3866903e009271533f91470fe7d8819516b09e (patch)
tree982c5ac4cef5fc9e110d1d6c6358e09e98806823 /source4/ntvfs
parent4aebdb779a406bba6aa8d5665c608083e19fcf52 (diff)
downloadsamba-af3866903e009271533f91470fe7d8819516b09e.tar.gz
samba-af3866903e009271533f91470fe7d8819516b09e.tar.bz2
samba-af3866903e009271533f91470fe7d8819516b09e.zip
r2904: - fixed the old style SMBsearch to return the pvfs shortname, not a truncated long name.
- short name can be up to 12 bytes, not 11 (This used to be commit 657103ec6264bf4c2986fedd3fc6577746395d49)
Diffstat (limited to 'source4/ntvfs')
-rw-r--r--source4/ntvfs/posix/pvfs_search.c7
-rw-r--r--source4/ntvfs/posix/pvfs_shortname.c2
2 files changed, 6 insertions, 3 deletions
diff --git a/source4/ntvfs/posix/pvfs_search.c b/source4/ntvfs/posix/pvfs_search.c
index 211cb68b86..07f2a0f127 100644
--- a/source4/ntvfs/posix/pvfs_search.c
+++ b/source4/ntvfs/posix/pvfs_search.c
@@ -36,6 +36,7 @@ static NTSTATUS fill_search_info(struct pvfs_state *pvfs,
{
struct pvfs_filename *name;
NTSTATUS status;
+ const char *shortname;
status = pvfs_resolve_partial(pvfs, file, unix_path, fname, &name);
if (!NT_STATUS_IS_OK(status)) {
@@ -50,13 +51,15 @@ static NTSTATUS fill_search_info(struct pvfs_state *pvfs,
case RAW_SEARCH_SEARCH:
case RAW_SEARCH_FFIRST:
case RAW_SEARCH_FUNIQUE:
+ shortname = pvfs_short_name(pvfs, name, name);
file->search.attrib = name->dos.attrib;
file->search.write_time = nt_time_to_unix(name->dos.write_time);
file->search.size = name->st.st_size;
- file->search.name = fname;
+ file->search.name = shortname;
file->search.id.reserved = 8;
memset(file->search.id.name, ' ', sizeof(file->search.id.name));
- memcpy(file->search.id.name, fname, MIN(strlen(fname)+1, sizeof(file->search.id.name)));
+ memcpy(file->search.id.name, shortname,
+ MIN(strlen(shortname)+1, sizeof(file->search.id.name)));
file->search.id.handle = search->handle;
file->search.id.server_cookie = dir_index+1;
file->search.id.client_cookie = 0;
diff --git a/source4/ntvfs/posix/pvfs_shortname.c b/source4/ntvfs/posix/pvfs_shortname.c
index ae911ad885..81cf42e71f 100644
--- a/source4/ntvfs/posix/pvfs_shortname.c
+++ b/source4/ntvfs/posix/pvfs_shortname.c
@@ -63,7 +63,7 @@ char *pvfs_short_name_component(struct pvfs_state *pvfs, const char *name)
char c1, c2;
const char *ext;
- if (strlen(name) < 12) {
+ if (strlen(name) <= 12) {
return talloc_strdup(pvfs, name);
}