[prev in list] [next in list] [prev in thread] [next in thread]
List: perl5-changes
Subject: [perl.git] branch yves/hv_h_split, created. v5.17.9-33-g157df28
From: "Yves Orton" <demerphq () gmail ! com>
Date: 2013-02-22 17:21:39
Message-ID: E1U8wJX-0008U4-AW () camel ! ams6 ! corp ! booking ! com
[Download RAW message or body]
In perl.git, the branch yves/hv_h_split has been created
<http://perl5.git.perl.org/perl.git/commitdiff/157df282bcc1926b9b40c77a97fff630df25f3b3?hp=0000000000000000000000000000000000000000>
at 157df282bcc1926b9b40c77a97fff630df25f3b3 (commit)
- Log -----------------------------------------------------------------
commit 157df282bcc1926b9b40c77a97fff630df25f3b3
Author: Yves Orton <demerphq@gmail.com>
Date: Tue Feb 19 13:25:53 2013 +0100
semi-Randomize hash insertion order
Use HvRAND(hv) as a set of flag bits. Each time we use a bit we
rotate the value of HvRAND(hv) so the next time we use a different
bit. This also means that inserting into a hash has a high chance
of changing the perceived iteration order of the hash.
M hv.c
commit 1be40762c9ae0544a75bad34b5b6a53402b092ec
Author: Yves Orton <demerphq@gmail.com>
Date: Mon Feb 18 10:18:48 2013 +0100
randomize bucket split insertion in hsplit()
We use the HvRAND data as a set of flags that we rotate
over as we move items into the high buckets. If the flag is
set we insert one after the top, if the flag is not set we
insert into the top like we used to. This means the order
will be perturbed somewhat.
M hv.c
commit 99c52cb53eab7b477951d2daa277e6ae87523d66
Author: Yves Orton <demerphq@gmail.com>
Date: Mon Feb 18 08:11:18 2013 +0100
Enable hash traversal order randomization
This patch causes Perl to use a random order per hash when traversing hashes
via keys(), values() and each().
The random order is determined by add a new property xhv_rand to struct
xpvhv. This property is calculated on per traverse of the hash by using a
pointer/integer hash function on the address of the bucket array, and then
XORing it with the bucket index counter during traverse. This causes each
hash to have a different order for traversing the buckets.
The purpose of this change is to make hash seed discovery attacks harder.
An attacker loses a lot of information when the keys are "randomized".
The ptr_hash() sub is borrowed, with changes, from autobox, which is released
under the same terms as Perl.
M embed.fnc
M embed.h
M hv.c
M hv.h
M proto.h
M t/op/smartkve.t
commit ef8c8ae0ebe01b0ee3ba2d309501e231398e2f08
Author: Yves Orton <demerphq@gmail.com>
Date: Tue Feb 12 05:06:48 2013 +0100
default to PERL_FUNC_ONE_AT_A_TIME_HARD for all builds
For testing, but maybe for ever
M hv_func.h
commit b45f8054cb190f10d269c0bd55e0c005fb24351b
Author: Yves Orton <demerphq@gmail.com>
Date: Tue Dec 11 08:50:58 2012 +0100
silence signed mistmatch in comparison warning in Murmurhash
as far as I can tell 'i' can only be positive here.
M hv_func.h
commit ea5e0dfbca9837b40563428d0c875cefa8f52220
Author: Yves Orton <demerphq@gmail.com>
Date: Mon Dec 10 08:36:43 2012 +0100
add a hardened one-at-a-time hash variant
Mix in additional randomness into the final value.
M hv_func.h
commit d7b66fa57b31fb0acdda3c13db19f0d9ddd654f0
Author: Yves Orton <demerphq@gmail.com>
Date: Sat Dec 8 16:24:06 2012 +0100
Split out hash functions into new file and turn into inline static functions
This includes various tweaks related to building SipHash and other
cleanup.
M Cross/Makefile-cross-SH
M MANIFEST
M Makefile.SH
M Makefile.micro
M NetWare/Makefile
M configpm
M hv.h
A hv_func.h
M win32/Makefile
M win32/Makefile.ce
commit 68c81eecd3ae3f869d54b3dbff48eb4a04ea2707
Author: Yves Orton <demerphq@gmail.com>
Date: Tue Dec 11 23:46:37 2012 +0100
add a "hash quality score" to Hash::Util::bucket_stats()
M ext/Hash-Util/lib/Hash/Util.pm
commit 5fecf19beca65e4f415d53de09028f9fcc07ffb1
Author: Yves Orton <demerphq@gmail.com>
Date: Mon Dec 10 09:43:59 2012 +0100
Various changes to cpan/ExtUtils-MakeMaker
Fix code which modifies a hash while each()ing over it
It has never been correct to modify a hash during traversal by each().
In older perls this was unlikely to break the tests. In newer perls
it is relatively likely, and in 5.18 it will be almost certain.
Do not hard code the list of perl header files - discover them from disk instead
Don't need completely different include file collector on VMS.
We just need to skipping putting a Unix delimiter between the
directory and the filename.
Includes a version bump to all the EU::MM files (to prevent any possible
$VERSION consistency checks from failing like they would on *nix)
This patch has been submitted to the EU::MM project in a modified form
and once merged there should replace these changes.
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
M cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm
M cpan/ExtUtils-MakeMaker/t/basic.t
commit 588b1b07752dfb491ce56f583c1789d2fab23f2d
Author: Yves Orton <demerphq@gmail.com>
Date: Mon Feb 18 07:56:25 2013 +0100
cpan/Pod-Simple: Fix test fails due to hash traversal randomization
One cannot assume two hashes with the same keys will have the
the same key order. And after hash traversal randomization one
can assume they WONT.
Waiting on upstream changes
M cpan/Pod-Simple/t/closeys.t
commit 74bf006bf19c86b6b5d340fa4388c6d5ab736202
Author: Yves Orton <demerphq@gmail.com>
Date: Mon Feb 18 06:37:29 2013 +0100
cpan/JSON-PP: Fix tests that fail due to hash traversal randomization
One cannot assume two hashes with the same keys will have the
the same key order. And after hash traversal randomization one
can assume they WONT.
Waiting on new release of upstream
M cpan/JSON-PP/t/019_incr.t
commit bb3aae0e984a4ceb5044d670127187528ea5fa29
Author: Yves Orton <demerphq@gmail.com>
Date: Tue Feb 19 12:14:44 2013 +0100
Ensure that Module::Pluggable returns plugins in a predictable order
As of 5.18 hash traversal order will vary per-hash, and indeed more
frequently. The likelihood this results in one of the tests in M::P
failing becomes very high.
In general the test expectations were fragile, but probably almost
never failed. With hash traversal randomization they will fail
regularly.
Note the use a temporary array in part of this patch is because
sort in scalar context is undefined.
M cpan/Module-Pluggable/lib/Module/Pluggable.pm
M cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm
M cpan/Module-Pluggable/t/19can_ok_clobber.t
commit 290867d394ba3e63994d0d2448838e42e68988b4
Author: Aaron Crane <arc@cpan.org>
Date: Tue Feb 19 14:17:59 2013 +0000
perlfunc: clarify that "do $file" isn't really like "eval `cat $file`"
Closes RT#116713.
M pod/perlfunc.pod
-----------------------------------------------------------------------
--
Perl5 Master Repository
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic