diff options
Diffstat (limited to 'src/check.c')
-rw-r--r-- | src/check.c | 38 |
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; } |