SB-ROTATE-BYTE:ROTATE-BYTE can cause macroexpansion at compile time that allows errors to escape in malformed code

Bug #1887164 reported by Paul F. Dietz
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
SBCL
Fix Released
Undecided
Unassigned

Bug Description

(compile nil '(lambda (x) (sb-rotate-byte:rotate-byte 0 (lambda) 0)))

==>

Error while parsing arguments to DEFMACRO LAMBDA:
  too few elements in
    ()
  to satisfy lambda list
    (SB-IMPL::ARGS &BODY SB-IMPL::BODY):
  at least 1 expected, but got 0
   [Condition of type SB-KERNEL::ARG-COUNT-ERROR]

Restarts:
 0: [RETRY] Retry SLIME REPL evaluation request.
 1: [*ABORT] Return to SLIME's top level.
 2: [ABORT] abort thread (#<THREAD "new-repl-thread" RUNNING {105625B2E3}>)

Backtrace:
  0: (SB-C::CHECK-DS-LIST/&REST #<unavailable argument> #<unavailable argument> #<unavailable argument> #<unavailable argument>)
  1: ((MACRO-FUNCTION LAMBDA) (LAMBDA) #<unused argument>)
  2: ((FLET SB-IMPL::PERFORM-EXPANSION :IN MACROEXPAND-1) #<FUNCTION (MACRO-FUNCTION LAMBDA) {529257CB}> NIL)
  3: (MACROEXPAND (LAMBDA) NIL)
  4: ((:SOURCE-TRANSFORM SB-ROTATE-BYTE:ROTATE-BYTE) (SB-ROTATE-BYTE:ROTATE-BYTE 0 (LAMBDA) 0) #<unused argument>)
  5: (SB-C::IR1-CONVERT-SRCTRAN #<SB-C::CTRAN 1 {10568E57A3}> #<SB-C::CTRAN 2 {10568E54F3}> #<SB-C::LVAR 3 {10568E5523}> #<SB-C::GLOBAL-VAR :%SOURCE-NAME SB-ROTATE-BYTE:ROTATE-BYTE :TYPE #1=#<SB-KERNEL:FUN..
  6: (SB-C::IR1-CONVERT #<SB-C::CTRAN 1 {10568E57A3}> #<SB-C::CTRAN 2 {10568E54F3}> #<SB-C::LVAR 3 {10568E5523}> (SB-ROTATE-BYTE:ROTATE-BYTE 0 (LAMBDA) 0))
  7: (SB-C::IR1-CONVERT-PROGN-BODY #<SB-C::CTRAN 1 {10568E57A3}> #<SB-C::CTRAN 2 {10568E54F3}> #<SB-C::LVAR 3 {10568E5523}> ((SB-ROTATE-BYTE:ROTATE-BYTE 0 (LAMBDA) 0)))

Stas Boukarev (stassats)
Changed in sbcl:
status: New → Fix Committed
Changed in sbcl:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.