Skip to content

Commit 6440292

Browse files
syphyrjackcurr
authored andcommitted
[ie/youtube] Fix PO token sanitization for Python>=3.14.4 (yt-dlp#16453)
Ref: python/cpython#145264 Authored by: syphyr
1 parent e26ada2 commit 6440292

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

‎yt_dlp/extractor/youtube/pot/_director.py‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import datetime as dt
77
import hashlib
88
import json
9+
import re
910
import traceback
1011
import typing
1112
import urllib.parse
@@ -433,9 +434,13 @@ def provider_display_name(provider):
433434
def clean_pot(po_token: str):
434435
# Clean and validate the PO Token. This will strip invalid characters off
435436
# (e.g. additional url params the user may accidentally include)
437+
mobj = re.match(r'([^?&#]+)', urllib.parse.unquote(po_token))
438+
if not mobj:
439+
raise ValueError('Invalid PO Token')
440+
436441
try:
437442
return base64.urlsafe_b64encode(
438-
base64.urlsafe_b64decode(urllib.parse.unquote(po_token))).decode()
443+
base64.urlsafe_b64decode(mobj.group(1))).decode()
439444
except (binascii.Error, ValueError):
440445
raise ValueError('Invalid PO Token')
441446

0 commit comments

Comments
 (0)