diff --git a/test/app/digest.result b/test/app/digest.result index bf1815136753a8a603ed1c47c6a1afc3b33f3636..d41efde3fa99c05d10aee70f70b92fd1fb4b7c45 100644 --- a/test/app/digest.result +++ b/test/app/digest.result @@ -5,6 +5,9 @@ test_run:cmd("push filter ".."'\\.lua.*:[0-9]+: ' to '.lua:<line>\"]: '") --- - true ... +fiber = require('fiber') +--- +... digest = require('digest') --- ... @@ -576,3 +579,60 @@ test_run:cmd("clear filter") --- - true ... +-- gh-3396: fiber-safe pbkdf2 +res = {} +--- +... +sentry = fiber.channel() +--- +... +_ = test_run:cmd("setopt delimiter ';'") +--- +... +function test_pbkdf2() + local digest = require('digest') + for i = 1, 10 do + table.insert(res, digest.pbkdf2('', 'salt', 100, 32):hex()) + end + sentry:put(fiber.id()) +end; +--- +... +_ = test_run:cmd("setopt delimiter ''"); +--- +... +_ = fiber.create(test_pbkdf2) +--- +... +_ = fiber.create(test_pbkdf2) +--- +... +_ = sentry:get() +--- +... +_ = sentry:get() +--- +... +res +--- +- - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 +... diff --git a/test/app/digest.test.lua b/test/app/digest.test.lua index 3134efc92caa0a546a28f7d47869a263e86883a5..7ecda91bcbf95beac5a78681abec8a53819c04ff 100644 --- a/test/app/digest.test.lua +++ b/test/app/digest.test.lua @@ -1,6 +1,7 @@ test_run = require('test_run').new() test_run:cmd("push filter ".."'\\.lua.*:[0-9]+: ' to '.lua:<line>\"]: '") +fiber = require('fiber') digest = require('digest') type(digest) @@ -184,3 +185,21 @@ s err:match("number") digest = nil test_run:cmd("clear filter") + +-- gh-3396: fiber-safe pbkdf2 +res = {} +sentry = fiber.channel() +_ = test_run:cmd("setopt delimiter ';'") +function test_pbkdf2() + local digest = require('digest') + for i = 1, 10 do + table.insert(res, digest.pbkdf2('', 'salt', 100, 32):hex()) + end + sentry:put(fiber.id()) +end; +_ = test_run:cmd("setopt delimiter ''"); +_ = fiber.create(test_pbkdf2) +_ = fiber.create(test_pbkdf2) +_ = sentry:get() +_ = sentry:get() +res