diff options
author | Jeremy Allison <jra@samba.org> | 2003-08-27 18:17:33 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-08-27 18:17:33 +0000 |
commit | fda254169778cc3fa9c226473b5a1f95c17c99a7 (patch) | |
tree | 8e1f3e062a608160abc68d0e6243a21064b929e4 /source | |
parent | be534c8adf6c3cb8921ce49dbb79991c632d501e (diff) | |
download | samba-fda254169778cc3fa9c226473b5a1f95c17c99a7.tar.gz samba-fda254169778cc3fa9c226473b5a1f95c17c99a7.tar.xz samba-fda254169778cc3fa9c226473b5a1f95c17c99a7.zip |
Remove completely unneeded malloc/free out of this codepath.
Jeremy.
Diffstat (limited to 'source')
-rw-r--r-- | source/smbd/mangle_hash2.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/source/smbd/mangle_hash2.c b/source/smbd/mangle_hash2.c index cdce28e1bd8..27d044f56df 100644 --- a/source/smbd/mangle_hash2.c +++ b/source/smbd/mangle_hash2.c @@ -201,22 +201,24 @@ static const char *cache_lookup(u32 hash) In this algorithm, mangled names use only pure ascii characters (no multi-byte) so we can avoid doing a UCS2 conversion */ -static BOOL is_mangled_component(const char *name) +static BOOL is_mangled_component(const char *name, size_t len) { - unsigned int len, i; + unsigned int i; M_DEBUG(10,("is_mangled_component %s ?\n", name)); /* check the length */ - len = strlen(name); - if (len > 12 || len < 8) return False; + if (len > 12 || len < 8) + return False; /* the best distinguishing characteristic is the ~ */ - if (name[6] != '~') return False; + if (name[6] != '~') + return False; /* check extension */ if (len > 8) { - if (name[8] != '.') return False; + if (name[8] != '.') + return False; for (i=9; name[i]; i++) { if (! FLAG_CHECK(name[i], FLAG_ASCII)) { return False; @@ -241,7 +243,7 @@ static BOOL is_mangled_component(const char *name) } } - M_DEBUG(10,("is_mangled %s -> yes\n", name)); + M_DEBUG(10,("is_mangled_component %s (len %u) -> yes\n", name, (unsigned int)len)); return True; } @@ -267,16 +269,13 @@ static BOOL is_mangled(const char *name) M_DEBUG(10,("is_mangled %s ?\n", name)); for (s=name; (p=strchr(s, '/')); s=p+1) { - char *component = strndup(s, PTR_DIFF(p, s)); - if (is_mangled_component(component)) { - free(component); + if (is_mangled_component(s, PTR_DIFF(p, s))) { return True; } - free(component); } /* and the last part ... */ - return is_mangled_component(s); + return is_mangled_component(s,strlen(s)); } |