Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MurmurHash3_x64_128 reads past end of key buffer #21

Open
GoogleCodeExporter opened this issue Apr 3, 2015 · 1 comment
Open

MurmurHash3_x64_128 reads past end of key buffer #21

GoogleCodeExporter opened this issue Apr 3, 2015 · 1 comment

Comments

@GoogleCodeExporter
Copy link

o it calculates the buffer size in quadwords, rounded down
  nblocks = len/16;  

o then the body loop iterates i up to nblocks-1:
  for(int i = 0; i < nblocks; i++)

o Inside the loop, these accesses happen:
  uint64_t k1 = getblock(blocks,i*2+0);
  uint64_t k2 = getblock(blocks,i*2+1);

o "blocks" is a qword pointer and the getblock calls are equivalent to
  blocks[i*2]  and   blocks[i*2+1]

o So these qword accesses will occur up to qword offset:
  (nblocks-1)*2+1
  ...almost twice the caller's buffer size.





Original issue reported on code.google.com by christop...@gmail.com on 2 Apr 2013 at 6:02

@GoogleCodeExporter
Copy link
Author

This is not a bug in the current version of the source (r152).

The fourth point here, '"blocks" is a qword pointer' is not the true. The 
pointer is a uint64_t (i.e. double word).
The factor of two you mentioned is in the 16 of the nblocks = len/16.

Original comment by dersai...@gmail.com on 29 May 2014 at 9:08

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant