handle malloc failure
diff --git a/lib/picotls.c b/lib/picotls.c
index 764befa..f74fd28 100644
--- a/lib/picotls.c
+++ b/lib/picotls.c
@@ -2481,7 +2481,10 @@
         default:
             if (should_collect_unknown_extension(tls, properties, type)) {
                 if (unknown_extensions == &no_unknown_extensions) {
-                    unknown_extensions = malloc(sizeof(*unknown_extensions) * (MAX_UNKNOWN_EXTENSIONS + 1));
+                    if ((unknown_extensions = malloc(sizeof(*unknown_extensions) * (MAX_UNKNOWN_EXTENSIONS + 1))) == NULL) {
+                        ret = PTLS_ERROR_NO_MEMORY;
+                        goto Exit;
+                    }
                     unknown_extensions[0].type = UINT16_MAX;
                 }
                 if ((ret = collect_unknown_extension(tls, type, src, end, unknown_extensions)) != 0)