From 043ee56b98741b28bd7e1a61e2c49a4854f22f53 Mon Sep 17 00:00:00 2001 From: Thomas Calvet Date: Wed, 23 Jun 2021 17:37:19 +0200 Subject: [PATCH] [Uid] Prevent double validation in Uuid::fromString() with base32 values --- src/Symfony/Component/Uid/Ulid.php | 2 +- src/Symfony/Component/Uid/Uuid.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Uid/Ulid.php b/src/Symfony/Component/Uid/Ulid.php index d74ff6fb2aa6f..eba9f4172ded4 100644 --- a/src/Symfony/Component/Uid/Ulid.php +++ b/src/Symfony/Component/Uid/Ulid.php @@ -43,7 +43,7 @@ public function __construct(string $ulid = null) throw new \InvalidArgumentException(sprintf('Invalid ULID: "%s".', $ulid)); } - $this->uid = strtr($ulid, 'abcdefghjkmnpqrstvwxyz', 'ABCDEFGHJKMNPQRSTVWXYZ'); + $this->uid = strtoupper($ulid); } public static function isValid(string $ulid): bool diff --git a/src/Symfony/Component/Uid/Uuid.php b/src/Symfony/Component/Uid/Uuid.php index dc666d28e31ab..a6cb942e8c62f 100644 --- a/src/Symfony/Component/Uid/Uuid.php +++ b/src/Symfony/Component/Uid/Uuid.php @@ -54,7 +54,9 @@ public static function fromString(string $uuid): parent $uuid = substr_replace($uuid, '-', 18, 0); $uuid = substr_replace($uuid, '-', 23, 0); } elseif (26 === \strlen($uuid) && Ulid::isValid($uuid)) { - $uuid = (new Ulid($uuid))->toRfc4122(); + $ulid = new Ulid('00000000000000000000000000'); + $ulid->uid = strtoupper($uuid); + $uuid = $ulid->toRfc4122(); } if (__CLASS__ !== static::class || 36 !== \strlen($uuid)) {