diff options
author | Andrew Tridgell <tridge@samba.org> | 2006-09-10 07:24:41 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:18:08 -0500 |
commit | 89efea81d9d67ebed159321e8ea496eee54c2deb (patch) | |
tree | 9ffc195a05eab698b1697015410f15546e48e266 /source4/torture | |
parent | c74d5b9204c004f30494645f04d34306667990c8 (diff) | |
download | samba-89efea81d9d67ebed159321e8ea496eee54c2deb.tar.gz samba-89efea81d9d67ebed159321e8ea496eee54c2deb.tar.bz2 samba-89efea81d9d67ebed159321e8ea496eee54c2deb.zip |
r18319: fixed the directory search resume code on IRIX
The problem was twofold:
1) irix returns 64 bit numbers in telldir(). The protocol uses a 32
bit resume key. We now cope with this properly using the code in
pvfs_list_seek_ofs().
2) irix returns 0xFFFFFFFF from telldir() for the last entry in the
directory. When added to DIR_OFFSET_BASE this became
DIR_OFFSET_DOTDOT which meant an infinite loop!
(This used to be commit 8cce9740ed0da9f08d6821beb4acaa9d28d149c2)
Diffstat (limited to 'source4/torture')
-rw-r--r-- | source4/torture/raw/search.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/source4/torture/raw/search.c b/source4/torture/raw/search.c index 6ee21d630a..d10bdf662b 100644 --- a/source4/torture/raw/search.c +++ b/source4/torture/raw/search.c @@ -203,17 +203,17 @@ static const char *extract_name(void *data, enum smb_search_level level, /* extract the name from a smb_data structure and level */ -static int extract_resume_key(void *data, enum smb_search_level level, - enum smb_search_data_level data_level) +static uint32_t extract_resume_key(void *data, enum smb_search_level level, + enum smb_search_data_level data_level) { int i; for (i=0;i<ARRAY_SIZE(levels);i++) { if (level == levels[i].level && data_level == levels[i].data_level) { - return (int)*(uint32_t *)(levels[i].resume_key_offset + (char *)data); + return *(uint32_t *)(levels[i].resume_key_offset + (char *)data); } } - return -1; + return 0; } /* find a level in the table by name */ @@ -604,7 +604,7 @@ static NTSTATUS multiple_search(struct smbcli_state *cli, case CONT_RESUME_KEY: io2.t2fnext.in.resume_key = extract_resume_key(&result->list[result->count-1], io2.t2fnext.level, io2.t2fnext.data_level); - if (io2.t2fnext.in.resume_key <= 0) { + if (io2.t2fnext.in.resume_key == 0) { printf("Server does not support resume by key for level %s\n", level_name(io2.t2fnext.level, io2.t2fnext.data_level)); return NT_STATUS_NOT_SUPPORTED; |