file_name_hash vs. smb_name_hash
Stefan (metze) Metzmacher
metze at samba.org
Wed Jan 26 02:07:21 MST 2011
Hi Jeremy,
> The branch, master has been updated
> via 3272e16 Missed one debug printf of name_hash. Ensure always use %x.
> via 4473273 Fix bug #7863 - Unlink may unlink wrong file when hardlinks are involved.
> via a65bce4 Add uint32_t name_hash argument (currently unused) to get_file_infos().
> via b97f1ce Add name_hash into the share mode entry struct (as yet only use for renames to identify a specific path).
> via 76418e2 Add name_hash to files_struct. Set within fsp_set_smb_fname().
> from 6e22637 s4-test/delete_object: Remove global ldb connections
>
> http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
> +static uint32_t smb_name_hash(const char *sharepath, const char *filename, int *err)
> +{
> + TDB_DATA key;
> + char *fullpath = NULL;
> + int ret;
> + uint32_t name_hash;
> +
> + *err = 0;
> + ret = asprintf(&fullpath, "%s/%s", sharepath, filename);
> + if (ret == -1 || fullpath == NULL) {
> + *err = 1;
> + return 0;
> + }
> + key.dptr = (uint8_t *)fullpath;
> + key.dsize = strlen(fullpath);
> + name_hash = tdb_jenkins_hash(&key);
> + free(fullpath);
> + return name_hash;
> +}
> +
> +NTSTATUS file_name_hash(connection_struct *conn,
> + const char *name, uint32_t *p_name_hash)
> +{
> + TDB_DATA key;
> + char *fullpath = NULL;
> +
> + /* Set the hash of the full pathname. */
> + fullpath = talloc_asprintf(talloc_tos(),
> + "%s/%s",
> + conn->connectpath,
> + name);
> + if (!fullpath) {
> + return NT_STATUS_NO_MEMORY;
> + }
> + key = string_term_tdb_data(fullpath);
> + *p_name_hash = tdb_jenkins_hash(&key);
> +
> + DEBUG(10,("file_name_hash: %s hash 0x%x\n",
> + fullpath,
> + (unsigned int)*p_name_hash ));
> +
> + TALLOC_FREE(fullpath);
> + return NT_STATUS_OK;
> +}
These function don't calculate the same hash!
string_term_tdb_data() uses strlen()+1.
metze
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20110126/f4f2b555/attachment.pgp>
More information about the samba-technical
mailing list