/*
- * PKCS#5 padding
+ * PKCS#5 padding mechanism for udp tunnel
*
* arguments: block size to pad to, must be power of 2
*
* encoding: append between 1 and n bytes, all of the same value being
* the number of bytes appended
*/
+/*
+ * Copyright (C) 2000 Ian Jackson
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with userv-utils; if not, write to the Free Software
+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
#include "forwarder.h"
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";