chiark / gitweb /
New encrypting tunnel seems to work !
[userv-utils.git] / ipif / mech-pkcs5.c
index 85b586379e70e5f21c63ded960d19f312a4b8a3b..df4d91843b38e18cf57b7d4e5f91ab6022ea71fb 100644 (file)
@@ -21,7 +21,7 @@ static unsigned long setup(struct mechdata **md_r) {
 
   blocksize= getarg_ulong();
   md->mask= blocksize - 1;
-  arg_assert(!md->mask & blocksize);
+  arg_assert(!(md->mask & blocksize));
   arg_assert(blocksize <= 255);
 
   *md_r= md;
@@ -58,11 +58,11 @@ static const char *mdec_pkcs5(struct mechdata *md, struct buffer *buf) {
   unsigned padlen;
   int i;
 
-  BUF_UNPREPEND(padp,buf,1);
+  BUF_UNAPPEND(padp,buf,1);
   padlen= *padp;
-  if (!padlen || (padlen & ~md->mask)) return "invalid length";
+  if (!padlen || (padlen > md->mask+1)) return "invalid length";
 
-  BUF_UNPREPEND(padp,buf,padlen-1);
+  BUF_UNAPPEND(padp,buf,padlen-1);
   for (i=0; i<padlen-1; i++)
     if (*++padp != padlen) return "corrupted padding";