Index: uspace/lib/c/generic/ubsan.c
===================================================================
--- uspace/lib/c/generic/ubsan.c	(revision a18da67d2132c8f0833e771b48e54a17a25a9c89)
+++ uspace/lib/c/generic/ubsan.c	(revision a4cf3126a037f037c410df0a162e56534e940f0f)
@@ -35,4 +35,11 @@
 };
 
+struct type_mismatch_data_v1 {
+	struct source_location loc;
+	struct type_descriptor *type;
+	unsigned char log_alignment;
+	unsigned char type_check_kind;
+};
+
 struct overflow_data {
 	struct source_location loc;
@@ -73,4 +80,8 @@
 	struct source_location loc;
 	struct source_location attr_loc;
+};
+
+struct pointer_overflow_data {
+	struct source_location loc;
 };
 
@@ -81,4 +92,5 @@
  */
 void __ubsan_handle_type_mismatch(struct type_mismatch_data *data, unsigned long ptr);
+void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data_v1 *data, unsigned long ptr);
 void __ubsan_handle_add_overflow(struct overflow_data *data, unsigned long lhs, unsigned long rhs);
 void __ubsan_handle_sub_overflow(struct overflow_data *data, unsigned long lhs, unsigned long rhs);
@@ -99,4 +111,6 @@
 void __ubsan_handle_nonnull_return(struct nonnull_return_data *data);
 void __ubsan_handle_builtin_unreachable(struct unreachable_data *data);
+void __ubsan_handle_pointer_overflow(struct pointer_overflow_data *data,
+    unsigned long base, unsigned long result);
 
 static void print_loc(const char *func, struct source_location *loc)
@@ -121,4 +135,13 @@
 }
 
+void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data_v1 *data,
+    unsigned long ptr)
+{
+	print_loc(__func__, &data->loc);
+	PRINTF("Type: %s, alignment: %hhu, type_check_kind: %hhu\n",
+	    data->type->type_name, data->log_alignment, data->type_check_kind);
+	ubsan_panic();
+}
+
 void __ubsan_handle_add_overflow(struct overflow_data *data,
     unsigned long lhs,
@@ -228,2 +251,9 @@
 	ubsan_panic();
 }
+
+void __ubsan_handle_pointer_overflow(struct pointer_overflow_data *data,
+    unsigned long base, unsigned long result)
+{
+	print_loc(__func__, &data->loc);
+	ubsan_panic();
+}
Index: uspace/lib/crypto/crypto.c
===================================================================
--- uspace/lib/crypto/crypto.c	(revision a18da67d2132c8f0833e771b48e54a17a25a9c89)
+++ uspace/lib/crypto/crypto.c	(revision a4cf3126a037f037c410df0a162e56534e940f0f)
@@ -32,8 +32,10 @@
  */
 
+#include <assert.h>
 #include <str.h>
 #include <macros.h>
 #include <errno.h>
 #include <byteorder.h>
+#include <limits.h>
 #include "crypto.h"
 
@@ -197,4 +199,6 @@
     hash_func_t hash_sel)
 {
+	assert(input_size < SSIZE_MAX);
+
 	if (!input)
 		return EINVAL;
