summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);
}