aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2022-02-16 22:27:46 +0100
committerMattias Andrée <maandree@kth.se>2022-02-16 22:27:46 +0100
commita3ef37d33cdf0ab5bf80b5c13f2c0f382761417e (patch)
tree33a2c41a9fe6d98ae9a982b8331b6a2c4b4ab9d0
parentm (diff)
downloadlibar2-a3ef37d33cdf0ab5bf80b5c13f2c0f382761417e.tar.gz
libar2-a3ef37d33cdf0ab5bf80b5c13f2c0f382761417e.tar.bz2
libar2-a3ef37d33cdf0ab5bf80b5c13f2c0f382761417e.tar.xz
Fix check for 0-prefixed integers parameter string
Signed-off-by: Mattias Andrée <maandree@kth.se>
-rw-r--r--libar2_decode_params.c2
-rw-r--r--test.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/libar2_decode_params.c b/libar2_decode_params.c
index 7707ce4..c42a937 100644
--- a/libar2_decode_params.c
+++ b/libar2_decode_params.c
@@ -8,7 +8,7 @@ decode_u32(const char *s, uint_least32_t *outp)
uint_least32_t digit;
size_t i;
- if ((s[0] == '0' && s[1] == '0') || !isdigit(s[0])) {
+ if ((s[0] == '0' && s[1] != '0') || !isdigit(s[0])) {
errno = EINVAL;
return 0;
}
diff --git a/test.c b/test.c
index 8ccb4e2..3a0ac41 100644
--- a/test.c
+++ b/test.c
@@ -1123,6 +1123,11 @@ check_failures(void)
CHECK("$argon2id$m=128,t=128,p=128$AAAABBBBCCCC");
CHECK("$argon2id$m=128,t=128,p=128$AAAAB-BBCCCC$");
CHECK("$argon2id$m=128,t=128,p=128$AAAABBBBC$");
+ CHECK("$argon2id$m=0128,t=128,p=128$AAAABBBBCCCC$");
+ CHECK("$argon2id$m=128,t=0128,p=128$AAAABBBBCCCC$");
+ CHECK("$argon2id$m=128,t=128,p=0128$AAAABBBBCCCC$");
+ CHECK("$argon2id$v=0$m=128,t=128,p=128$AAAABBBBCCCC$");
+ CHECK("$argon2id$v=016$m=128,t=128,p=128$AAAABBBBCCCC$");
errno = 0;
ctx_st.user_data = &user_data;
user_data.allocate_fail_in = 1;