BMPString and UniversalString fuzz testing
diff --git a/skeletons/UniversalString.c b/skeletons/UniversalString.c
index 8d99cad..67fb6a1 100644
--- a/skeletons/UniversalString.c
+++ b/skeletons/UniversalString.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2003, 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
* Redistribution and modifications are permitted subject to BSD license.
*/
#include <asn_internal.h>
@@ -236,3 +236,36 @@
return 0;
}
+/*
+ * Biased function for randomizing UCS-4 sequences.
+ */
+static size_t
+UniversalString__random_char(uint8_t *b) {
+ uint32_t code;
+
+ switch(asn_random_between(0, 4)) {
+ case 0:
+ code = 0;
+ break;
+ case 1:
+ code = 1;
+ break;
+ case 2:
+ code = 0xd7ff; /* End of pre-surrogate block */
+ break;
+ case 3:
+ code = 0xe000; /* Beginning of post-surrogate block */
+ break;
+ case 4:
+ code = 0x10ffff;
+ break;
+ }
+
+ b[0] = code >> 24;
+ b[1] = code >> 16;
+ b[2] = code >> 8;
+ b[3] = code;
+
+ return 4;
+}
+