[mew-int 01308] mew-3.2 breaks on illegal multipart messages!

clemens fischer ino-qc at example.com
Fri Mar 7 00:03:27 JST 2003


i just got spam, propably created by a very dumb tool.  i cannot make
the message visible, because mew breaks into the debugger.  here's
the trace:

Debugger entered--Lisp error: (error "")
  signal(error (""))
  error("")
  mew-decode-error("No last boundary for Multipart/Mixed")
  (catch (quote multipart) (while (re-search-forward bregex nil t) (setq break ...) (if break nil ...) (save-excursion ... ... ... ...) (setq start ...) (when break ...)) (when (= count 0) (save-restriction ... ... ...)) (mew-decode-error (format "No last boundary for %s" ct)))
  (let* ((case-fold-search nil) (ctl ...) (ct ...) (boundary ...) (count 0) (parts []) part pref lastpref prefpart atpref lastatpref bregex start break) (unless boundary (mew-decode-error "No boundary parameter for multipart")) (mew-syntax-set-key syntax (quote multi)) (setq bregex (mew-decode-multipart-boundary-regex boundary)) (unless (and ... ...) (mew-decode-error ...)) (forward-line) (setq start (point)) (catch (quote multipart) (while ... ... ... ... ... ...) (when ... ...) (mew-decode-error ...)))
  mew-decode-multipart([multi 1443 nil nil ("multipart/mixed" ("boundary" "----=_NextPart_000_00A4_31D77A2E.C6686C33")) nil nil nil nil] 1 nil)
  (setq syntax (mew-decode-multipart syntax cnt nil))
  (cond ((string= mew-ct-mld ct) (setq syntax ...)) ((string= mew-ct-mls ct) (setq syntax ...)) ((string= mew-ct-mle ct) (if mew-inherit-prefetching ... ...)) (t (setq syntax ...)))
  (if multi-err (mew-syntax-set-ct syntax mew-type-apo) (cond (... ...) (... ...) (... ...) (t ...)))
  (cond ((not ...) (mew-syntax-set-ct syntax mew-type-apo) (if ... ...)) ((mew-ct-messagep ct) (if ... ... ...)) ((mew-ct-multipartp ct) (if ... ... ... ...) (if multi-err ... ...)) ((string-match mew-ct-sme ct) (setq syntax ...)) ((string= mew-ct-trh ct) (save-restriction ... ...)) (t (if ... ...) (if textp ... ...)))
  (let* ((case-fold-search t) (begin ...) (syntax ...) (ctl ...) (ct ...) (textp ...) (cte ...) (multi-err t) (encap nil) type) (cond (... ... ...) (... ...) (... ... ...) (... ...) (... ...) (t ... ...)) (setq type (mew-syntax-get-value ... ...)) (unless (mew-syntax-get-end syntax) (mew-syntax-set-end syntax ...)) (when (and ... ...) (mew-highlight-body-region ... ...)) (if encap (let ... ... ... ...) syntax))
  mew-decode-singlepart(1 nil message)
  (setq part (mew-decode-singlepart cnt nil (quote message)))
  (save-restriction (narrow-to-region (point) (point-max)) (setq part (mew-decode-singlepart cnt nil ...)) (mew-syntax-set-key syntax (quote message)) (mew-syntax-set-end syntax (1- ...)) (or (mew-syntax-get-cd syntax) (mew-syntax-set-cd syntax subj)) (mew-syntax-cat syntax part))
  (cond (mimep (save-restriction ... ... ... ... ... ...)) (t (if ... ... ...) (if ... ...) (mew-syntax-set-key syntax ...) (mew-syntax-set-end syntax ...) (or ... ...) (mew-highlight-body-region ... ...) (mew-decode-syntax-rfc822 syntax)))
  (let* ((msf ...) (mimep ...) (subj ...) (mew-inherit-decode-signer ...) part) (cond (mimep ...) (t ... ... ... ... ... ... ...)))
  (cond ((and ... ...) (if ... ... ...) (mew-syntax-set-key syntax ...) (mew-syntax-set-end syntax ...) (mew-decode-syntax-rfc822 syntax)) (t (let* ... ...)))
  mew-decode-message([message 1 nil nil ("Message/Rfc822") nil nil nil nil] 0)
  (setq mew-decode-syntax (mew-decode-message (mew-decode-syntax-rfc822-head) 0))
  (let ((debug-on-error t)) (setq mew-decode-syntax (mew-decode-message ... 0)))
  (if (mew-debug (quote decode)) (let (...) (setq mew-decode-syntax ...)) (condition-case nil (setq mew-decode-syntax ...) (error ... ... ...)))
  mew-decode()
  byte-code("ƒ ÉÄ Âˆ*‚ Ä ï¿½Â‡" [unlimit mew-header-max-depth mew-header-max-length nil mew-decode] 2)
  byte-code("ƒ qˆ	ƒ Æ Â„ 	ƒ% Ç Âƒ% È‚% É\f\"È\n„. ÊËÌ\"ˆq�È̉~� � ˆ,ÏÐя�\f@A%�Ìȉ$� � !�Ö׏�\f!� ‡" [cache unlimit decode fld msg zmacs-regions mew-xinfo-get-not-decrypted mew-xinfo-get-decode-err t mew-cache-add throw return nil erase-buffer buffer-disable-undo errmsg (byte-code "	\nÆÇ	\"È
!„ ÉÊË	\"\"‚i Ì
!ÍUƒ/ ÉÎË	\"\"‚i È
!Â…i ÏÂÐ!Â…= \fÆ�Ò
ÆÂÍ$ˆ-ÏÂÐ!ƒa )Ó
!Ì
!B-Ƈ" [fld msg mew-cs-text-for-read size rcs file nil mew-expand-folder file-readable-p error "%s does not exist" mew-concat-folder mew-file-get-size 0 "The size of %s is 0" boundp buffer-file-coding-system t insert-file-contents mew-file-get-time old-cs mew-cs-dummy jka-compr-inhibit auto-image-file-mode format-alist coding-system-for-write coding-system-for-read tim-siz] 5) ((error ...)) mew-cinfo-set mew-dinfo-set mew-decode-syntax-clear mew-xinfo-set-text-body (byte-code "ƒ ÉÄ Âˆ*‚ Ä ï¿½Â‡" [unlimit mew-header-max-depth mew-header-max-length nil mew-decode] 2) ((quit ...)) mew-ainfo-set-icon mew-decode-syntax-set after-change-functions inhibit-read-only buffer-read-only tim-siz mew-decode-broken mew-use-alternative mew-use-text-body] 6)
  mew-cache-message("+inbox" "35" nil)
  mew-summary-cache-message("+inbox" "35" #<buffer +inbox>)
  mew-summary-display(nil)
  call-interactively(mew-summary-display)
  mew-summary-scroll-up()
  call-interactively(mew-summary-scroll-up)

i did not see the error message about the missing last boundary.
this traceback was possible because i "M-x load-library RET
/emacs/site-lisp/mew/mew-decode.el RET" gave more text instead of the
byte code.  i have mew-decode-broken set to true.  emacs runs on an
i386 freebsd-4.5.2 here.

could you please look into this?  is this the right list to send bug
reports to?

thanks,

  clemens


More information about the Mew-int mailing list