diff --git a/asdf.asd b/asdf.asd
index 01bd5927ed42573256c09b3a2ecdcf0955bf2997..0b5253611d5286f59afef880473a9ffbc8b4fb9e 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -74,7 +74,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.31.3" ;; to be automatically updated by make bump-version
+  :version "2.31.4" ;; to be automatically updated by make bump-version
   :depends-on ()
   #+asdf3 :encoding #+asdf3 :utf-8
   ;; For most purposes, asdf itself specially counts as a builtin system.
diff --git a/defsystem.lisp b/defsystem.lisp
index 6e7d0a8d673cc6635fa9a99fb9da76e0f1df154d..1bbdfb39af51eb4e7da8da33ba1ae32bb18ad3d8 100644
--- a/defsystem.lisp
+++ b/defsystem.lisp
@@ -48,8 +48,9 @@
     (or (loop :for symbol :in (list
                                type
                                (find-symbol* type *package* nil)
-                               (find-symbol* type :asdf/interface nil))
-              :for class = (and symbol (find-class* symbol nil))
+                               (find-symbol* type :asdf/interface nil)
+                               (and (stringp type) (safe-read-from-string type :package :asdf/interface)))
+              :for class = (and symbol (symbolp symbol) (find-class* symbol nil))
               :when (and class
                          (#-cormanlisp subtypep #+cormanlisp cl::subclassp
                           class (find-class* 'component)))
diff --git a/header.lisp b/header.lisp
index 6d48577743c9669000b43e5929e6bf078d431fa1..1023ac804127f52d8ed9574d587cea8a15e71f79 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 2.31.3: Another System Definition Facility.
+;;; This is ASDF 2.31.4: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/stream.lisp b/stream.lisp
index f230172224164ef4f7ef715385de1352dcfb7388..5382ff344ee1dc2d0086c0547c8aaa2d97840746 100644
--- a/stream.lisp
+++ b/stream.lisp
@@ -9,7 +9,7 @@
    #:detect-encoding #:*encoding-detection-hook* #:always-default-encoding
    #:encoding-external-format #:*encoding-external-format-hook* #:default-encoding-external-format
    #:*default-encoding* #:*utf-8-external-format*
-   #:with-safe-io-syntax #:call-with-safe-io-syntax
+   #:with-safe-io-syntax #:call-with-safe-io-syntax #:safe-read-from-string
    #:with-output #:output-string #:with-input
    #:with-input-file #:call-with-input-file
    #:finish-outputs #:format! #:safe-format!
@@ -110,7 +110,11 @@ and implementation-defined external-format's")
             (*read-default-float-format* 'double-float)
             (*print-readably* nil)
             (*read-eval* nil))
-        (funcall thunk)))))
+        (funcall thunk))))
+
+  (defun safe-read-from-string (string &key (package :cl) (eof-error-p t) eof-value (start 0) end preserve-whitespace)
+    (with-safe-io-syntax (:package package)
+      (read-from-string string eof-error-p eof-value :start start :end end :preserve-whitespace preserve-whitespace))))
 
 
 ;;; Output to a stream or string, FORMAT-style
diff --git a/upgrade.lisp b/upgrade.lisp
index 966921a50e1410e81fe359ddc47769c3272e5623..ea68f95b8a2ecca71e9e67b9fd81c3af55224a78 100644
--- a/upgrade.lisp
+++ b/upgrade.lisp
@@ -52,7 +52,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
          ;; "3.4.5.67" would be a development version in the official upstream of 3.4.5.
          ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
          ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
-         (asdf-version "2.31.3")
+         (asdf-version "2.31.4")
          (existing-version (asdf-version)))
     (setf *asdf-version* asdf-version)
     (when (and existing-version (not (equal asdf-version existing-version)))
diff --git a/version.lisp-expr b/version.lisp-expr
index 6f5340c779d54cfc589b9ee4c767d03a9a65e1f3..3d058e2edb99e9329ae915711a03b0e6a43469f4 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1 +1 @@
-"2.31.3"
+"2.31.4"