[Fix] Minor decode bug in base64

This commit is contained in:
Allanis 2013-05-23 21:26:05 +01:00
parent 18519e5641
commit a064eec5eb
2 changed files with 5 additions and 3 deletions

View File

@ -207,10 +207,12 @@ char* base64_decode(size_t* len, char* src, size_t sz) {
r = malloc(c * sizeof(char)); r = malloc(c * sizeof(char));
// Create a clean version of the text. // Create a clean version of the text.
pad = 0;
dat = malloc(sz * sizeof(char)); dat = malloc(sz * sizeof(char));
j = 0; j = 0;
pad = 0;
for(i = 0; i < sz; i++) { for(i = 0; i < sz; i++) {
if(src[i] == '=')
pad++;
if(dec_valid(src[i])) if(dec_valid(src[i]))
dat[j++] = src[i]; dat[j++] = src[i];
} }

View File

@ -450,7 +450,7 @@ static int mission_writeLua(lua_State* L, const void* p, size_t sz, void* ud) {
buf = (MBuf*)ud; buf = (MBuf*)ud;
i = buf->ndata * buf->len + sz - buf->mdata*buf->len; i = buf->ndata * buf->len + sz - buf->mdata*buf->len;
if(i = 0) { if(i > 0) {
// Need more memory. // Need more memory.
buf->mdata += (i / (buf->len*buf->alloc) + 1) * buf->len * buf->alloc; buf->mdata += (i / (buf->len*buf->alloc) + 1) * buf->len * buf->alloc;
buf->data = realloc(buf->data, buf->mdata*buf->len); buf->data = realloc(buf->data, buf->mdata*buf->len);
@ -489,7 +489,7 @@ int missions_save(xmlTextWriterPtr writer) {
xmlw_startElem(writer, "lua"); xmlw_startElem(writer, "lua");
buf = mbuf_create(1, 128); buf = mbuf_create(1, 128);
lua_pushvalue(player_missions[i].L, LUA_GLOBALSINDEX); lua_pushvalue(player_missions[i].L, LUA_GLOBALSINDEX);
//pluto_persist(player_missions[i].L, mission_writeLua, buf); pluto_persist(player_missions[i].L, mission_writeLua, buf);
data = base64_encode(&sz, buf->data, buf->ndata); data = base64_encode(&sz, buf->data, buf->ndata);
mbuf_free(buf); mbuf_free(buf);
xmlw_raw(writer, data, sz); xmlw_raw(writer, data, sz);