summaryrefslogtreecommitdiff
path: root/src/check.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/check.c')
-rw-r--r--src/check.c38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/check.c b/src/check.c
index 61cee45..a72cf87 100644
--- a/src/check.c
+++ b/src/check.c
@@ -3,6 +3,8 @@
#include "p11-tests.h"
+#include <ctype.h>
+
int
p11t_check_returns(const char *message, CK_RV have, CK_RV want)
{
@@ -24,6 +26,12 @@ p11t_check_padded_len(const char *message, const CK_UTF8CHAR_PTR padded,
for(i = 0; i < length; ++i)
{
+ if(!isprint(padded[i]))
+ {
+ p11t_msg_print("%s: non printable character: %d", message, padded[i]);
+ return 0;
+ }
+
if(!padded[i])
{
p11t_msg_print("%s: not blank padded", message);
@@ -52,8 +60,34 @@ p11t_check_mask(const char *message, CK_ULONG flags, CK_ULONG mask)
{
if((flags & ~mask) != 0)
{
- p11t_msg_print("%s: extra flags outside of mask: 0x08x",
- (flags & ~mask));
+ p11t_msg_print("%s: extra flags outside of mask: 0x%08x",
+ message, (flags & ~mask));
+ return 0;
+ }
+
+ return 1;
+}
+
+int
+p11t_check_flag(const char *message, CK_ULONG flags, CK_ULONG flag)
+{
+ if((flags & flag) == 0)
+ {
+ p11t_msg_print("%s: flag 0x%08x should be set in: 0x%08x",
+ message, flag, flags);
+ return 0;
+ }
+
+ return 1;
+}
+
+int
+p11t_check_nflag(const char *message, CK_ULONG flags, CK_ULONG nflag)
+{
+ if((flags & nflag) != 0)
+ {
+ p11t_msg_print("%s: flag 0x%08x should not be set in: 0x%08x",
+ message, nflag, flags);
return 0;
}