diff options
author | Griffin Smith <grfn@gws.fyi> | 2022-05-28T18·17-0400 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2022-05-28T18·30+0000 |
commit | 1fbed8e3178c2c2bc2f093374e0035a1fe567377 (patch) | |
tree | 72212b2e5ba42339d1ad8e1b77856d6d5d642e7e /web/panettone/src/util.lisp | |
parent | b39ca017c0453c7420da64d062a2aa00e27d1fd3 (diff) |
fix(web/panettone): Don't add extra padding when already padded r/4182
Because of math being upsetting, we were adding 4 padding characters to an already-properly-padded base64 string, which broke tazjin. This also breaks this function out into panettone.util, and adds a test for it. Change-Id: I7bc8a440ad9d0917272dd9f2e341081ea14693da Reviewed-on: https://cl.tvl.fyi/c/depot/+/5782 Autosubmit: grfn <grfn@gws.fyi> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
Diffstat (limited to 'web/panettone/src/util.lisp')
-rw-r--r-- | web/panettone/src/util.lisp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/web/panettone/src/util.lisp b/web/panettone/src/util.lisp index 9fd9ceaa79a4..2abedf7b8fbb 100644 --- a/web/panettone/src/util.lisp +++ b/web/panettone/src/util.lisp @@ -5,3 +5,11 @@ (when-let ((str (uiop:getenvp var))) (try-parse-integer str)) default)) + +(defun add-missing-base64-padding (s) + "Add any missing padding characters to the (un-padded) base64 string `S', such +that it can be successfully decoded by the `BASE64' package" + ;; I apologize + (let* ((needed-padding (mod (length s) 4)) + (pad-chars (if (zerop needed-padding) 0 (- 4 needed-padding)))) + (format nil "~A~v@{~A~:*~}" s pad-chars "="))) |