summaryrefslogtreecommitdiffstats
path: root/fs/ubifs/key.h
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2016-10-06 22:04:58 +0200
committerRichard Weinberger <richard@nod.at>2016-12-12 23:07:38 +0100
commitb9bc8c7bdbbcba1a0d0b86d55f4730a060d4315a (patch)
treec90b4739f9ad87d93dc6e601cf0fa2d112f7b5d6 /fs/ubifs/key.h
parentubifs: Relax checks in ubifs_validate_entry() (diff)
downloadlinux-b9bc8c7bdbbcba1a0d0b86d55f4730a060d4315a.tar.xz
linux-b9bc8c7bdbbcba1a0d0b86d55f4730a060d4315a.zip
ubifs: Make r5 hash binary string aware
As of now all filenames known by UBIFS are strings with a NUL terminator. With encrypted filenames a filename can be any binary string and the r5 function cannot search for the NUL terminator. UBIFS always knows how long a filename is, therefore we can change the hash function to iterate over the filename length to work correctly with binary strings. Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'fs/ubifs/key.h')
-rw-r--r--fs/ubifs/key.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ubifs/key.h b/fs/ubifs/key.h
index c0a95e393347..ca4371fdfa7d 100644
--- a/fs/ubifs/key.h
+++ b/fs/ubifs/key.h
@@ -69,7 +69,7 @@ static inline uint32_t key_r5_hash(const char *s, int len)
uint32_t a = 0;
const signed char *str = (const signed char *)s;
- while (*str) {
+ while (len--) {
a += *str << 4;
a += *str >> 4;
a *= 11;