Give nicer error message when URL data is corrupt
authorMagnus Hagander <magnus@hagander.net>
Wed, 7 Jun 2023 19:54:42 +0000 (21:54 +0200)
committerMagnus Hagander <magnus@hagander.net>
Wed, 7 Jun 2023 19:54:42 +0000 (21:54 +0200)
tools/communityauth/sample/django/auth.py

index edb87b1960e0d41a1b4a4e0e058f9cd7f835d80e..8a59595096d5f101d7d153b535b2da30620be3b7 100644 (file)
@@ -109,10 +109,15 @@ def auth_receive(request):
         return HttpResponse("Missing data in url!", status=400)
 
     # Set up an AES object and decrypt the data we received
-    decryptor = AES.new(base64.b64decode(settings.PGAUTH_KEY),
-                        AES.MODE_CBC,
-                        base64.b64decode(str(request.GET['i']), "-_"))
-    s = decryptor.decrypt(base64.b64decode(str(request.GET['d']), "-_")).rstrip(b' ').decode('utf8')
+    try:
+        decryptor = AES.new(base64.b64decode(settings.PGAUTH_KEY),
+                            AES.MODE_CBC,
+                            base64.b64decode(str(request.GET['i']), "-_"))
+        s = decryptor.decrypt(base64.b64decode(str(request.GET['d']), "-_")).rstrip(b' ').decode('utf8')
+    except UnicodeDecodeError:
+        return HttpResponse("Badly encoded data found", 400)
+    except Exception:
+        return HttpResponse("Could not decrypt data", status=400)
 
     # Now un-urlencode it
     try: