Module Name: src Committed By: christos Date: Sat Nov 24 21:40:02 UTC 2012
Modified Files: src/usr.bin/mail: mime_codecs.c Log Message: PR/47237: Steffen Nurpmeso: Detect more than 2 pad characters and mark as bad. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/usr.bin/mail/mime_codecs.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/mail/mime_codecs.c diff -u src/usr.bin/mail/mime_codecs.c:1.9 src/usr.bin/mail/mime_codecs.c:1.10 --- src/usr.bin/mail/mime_codecs.c:1.9 Fri Apr 10 09:08:25 2009 +++ src/usr.bin/mail/mime_codecs.c Sat Nov 24 16:40:02 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: mime_codecs.c,v 1.9 2009/04/10 13:08:25 christos Exp $ */ +/* $NetBSD: mime_codecs.c,v 1.10 2012/11/24 21:40:02 christos Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. @@ -52,7 +52,7 @@ #include <sys/cdefs.h> #ifndef __lint__ -__RCSID("$NetBSD: mime_codecs.c,v 1.9 2009/04/10 13:08:25 christos Exp $"); +__RCSID("$NetBSD: mime_codecs.c,v 1.10 2012/11/24 21:40:02 christos Exp $"); #endif /* not __lint__ */ #include <assert.h> @@ -237,6 +237,10 @@ mime_b64tobin(char *bin, const char *b64 unsigned c = uchar64(q[2]); unsigned d = uchar64(q[3]); + if (a == BAD || a == EQU || b == BAD || b == EQU || + c == BAD || d == BAD) + return -1; + *p++ = ((a << 2) | ((b & 0x30) >> 4)); if (c == EQU) { /* got '=' */ if (d != EQU) @@ -248,9 +252,6 @@ mime_b64tobin(char *bin, const char *b64 break; } *p++ = (((c & 0x03) << 6) | d); - - if (a == BAD || b == BAD || c == BAD || d == BAD) - return -1; } #undef uchar64