composer: seed the random number generator

I thought rand in Go is auto-seeded but I was wrong, see [1].
This commit adds seed initialization.

[1]: https://golang.org/pkg/math/rand/#Seed

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
This commit is contained in:
Ondřej Budai 2020-12-15 17:00:00 +01:00 committed by Ondřej Budai
parent 973639d372
commit 1dd4eb7e38
3 changed files with 27 additions and 6 deletions

View file

@ -3,9 +3,11 @@
package cloudapi
import (
"crypto/rand"
"encoding/json"
"fmt"
"math/rand"
"math"
"math/big"
"net/http"
"github.com/go-chi/chi"
@ -83,7 +85,11 @@ func (server *Server) Compose(w http.ResponseWriter, r *http.Request) {
var targets []*target.Target
// use the same seed for all images so we get the same IDs
manifestSeed := rand.Int63()
bigSeed, err := rand.Int(rand.Reader, big.NewInt(math.MaxInt64))
if err != nil {
panic("cannot generate a manifest seed: " + err.Error())
}
manifestSeed := bigSeed.Int64()
for i, ir := range request.ImageRequests {
arch, err := distribution.GetArch(ir.Architecture)