From 7e8a55c9228d6db2e7859ac0fad4cefc7b152779 Mon Sep 17 00:00:00 2001 From: Tai Chi Minh Ralph Eastwood Date: Tue, 10 Feb 2015 19:36:34 +0000 Subject: [PATCH 2/3] uudecode: fix flushing in corner case --- uudecode.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/uudecode.c b/uudecode.c index f3bbfd0..947a846 100644 --- a/uudecode.c +++ b/uudecode.c @@ -173,16 +173,16 @@ uudecodeb64(FILE *fp, FILE *outfp) if (++t < 4) continue; else - return; + goto flush; } else if (b == 1) { eprintf("unexpected \"=\" appeared."); } else if (b == 2) { *po++ = b24[0]; - fwrite(out, 1, (po - out), outfp); + goto flush; } else if (b == 3) { *po++ = b24[0]; *po++ = b24[1]; - fwrite(out, 1, (po - out), outfp); + goto flush; } } if ((e = b64dt[(int)*pb]) == -1) { @@ -205,9 +205,11 @@ uudecodeb64(FILE *fp, FILE *outfp) b = 0; } } - fwrite(out, 1, (po - out), outfp); + goto flush; } eprintf("invalid uudecode footer \"====\" not found\n"); +flush: + fwrite(out, 1, (po - out), outfp); } static void -- 2.3.0