From 9ba68b0a394528133ff3d5b90a1b5ebacadf6165 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Mon, 8 May 2006 19:10:04 +0000 Subject: [PATCH] Use alloca() instead of malloc()/free() for tempbuf --- src/encode/base64.c | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/src/encode/base64.c b/src/encode/base64.c index c185f79c42..a99bc0e306 100644 --- a/src/encode/base64.c +++ b/src/encode/base64.c @@ -110,7 +110,7 @@ int b64_encode(char *target, size_t tlen, const char *source, size_t slen) { slen=strlen(source); inp=source; if(source==target) { - tmpbuf=(char *)malloc(tlen); + tmpbuf=(char *)alloca(tlen); if(tmpbuf==NULL) return(-1); outp=tmpbuf; @@ -124,43 +124,29 @@ int b64_encode(char *target, size_t tlen, const char *source, size_t slen) { enc=*(inp++); buf=(enc & 0x03)<<4; enc=(enc&0xFC)>>2; - if(add_char(outp++, enc, done, outend)) { - if(target==source) - free(tmpbuf); + if(add_char(outp++, enc, done, outend)) return(-1); - } enc=buf|((*inp & 0xF0) >> 4); - if(add_char(outp++, enc, done, outend)) { - if(target==source) - free(tmpbuf); + if(add_char(outp++, enc, done, outend)) return(-1); - } if(inp==inend) done=1; buf=(*(inp++)<<2)&0x3C; enc=buf|((*inp & 0xC0)>>6); - if(add_char(outp++, enc, done, outend)) { - if(target==source) - free(tmpbuf); + if(add_char(outp++, enc, done, outend)) return(-1); - } if(inp==inend) done=1; enc=((int)*(inp++))&0x3F; - if(add_char(outp++, enc, done, outend)) { - if(target==source) - free(tmpbuf); + if(add_char(outp++, enc, done, outend)) return(-1); - } if(inp==inend) done=1; } if(outp<outend) *outp=0; - if(target==source) { + if(target==source) memcpy(target,tmpbuf,tlen); - free(tmpbuf); - } return(outp-target); } -- GitLab