summaryrefslogtreecommitdiff
path: root/Gemfile
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-08-04 01:58:33 -0700
committerJason Zaugg <jzaugg@gmail.com>2016-08-08 13:42:36 +1000
commit498a2ce7397b909c0bebf36affeb1ee5a1c03d6a (patch)
treeabcfcf39af3231ade6402d30acca548704711311 /Gemfile
parent2b172be8c83c3146d3fd5ab01546c171ab18fa46 (diff)
downloadscala-498a2ce7397b909c0bebf36affeb1ee5a1c03d6a.tar.gz
scala-498a2ce7397b909c0bebf36affeb1ee5a1c03d6a.tar.bz2
scala-498a2ce7397b909c0bebf36affeb1ee5a1c03d6a.zip
SD-193 Lock down lambda deserialization
The old design allowed a forged `SerializedLambda` to be deserialized into a lambda that could call any private method in the host class. This commit passes through the list of all lambda impl methods to the bootstrap method and verifies that you are deserializing one of these. The new test case shows that a forged lambda can no longer call the private method, and that the new encoding is okay with a large number of lambdas in a file. We already have method handle constants in the constant pool to support the invokedynamic through LambdaMetafactory, so the only additional cost will be referring to these in the boostrap args for `LambdaDeserialize`, 2 bytes per lambda. I checked this with an example: https://gist.github.com/retronym/e343d211f7536d06f1fef4b499a0a177 Fixes SD-193
Diffstat (limited to 'Gemfile')
0 files changed, 0 insertions, 0 deletions