fork download
  1. (defparameter *my-readtable* (copy-readtable))
  2.  
  3. (defun my-sharp-dot-reader (stream &rest _)
  4. (declare (ignore _))
  5. (let ((expr (read stream)))
  6. (list 'quote expr)))
  7.  
  8. (let ((*readtable* *my-readtable*))
  9. (set-dispatch-macro-character #\# #\. #'my-sharp-dot-reader))
  10.  
  11. (defun safe-read ()
  12. (let ((*readtable* *my-readtable*))
  13. (read)))
  14.  
  15. (setf b (safe-read))
  16. (princ b))
Runtime error #stdin #stdout 0.03s 10792KB
stdin
#.(progn (format t "Oh, exploitable!~%") '(+ 2 2))
stdout
'(PROGN (FORMAT T Oh, exploitable!~%) '(+ 2 2))