#include <stddef.h>
#include <stdlib.h>
+#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
# define SWAP(n) (n)
#endif
-#define BLOCKSIZE 4096
+#define BLOCKSIZE 32768
#if BLOCKSIZE % 64 != 0
# error "invalid BLOCKSIZE"
#endif
md4_stream (FILE * stream, void *resblock)
{
struct md4_ctx ctx;
- char buffer[BLOCKSIZE + 72];
size_t sum;
+ char *buffer = malloc (BLOCKSIZE + 72);
+ if (!buffer)
+ return 1;
+
/* Initialize the computation context. */
md4_init_ctx (&ctx);
exit the loop after a partial read due to e.g., EAGAIN
or EWOULDBLOCK. */
if (ferror (stream))
- return 1;
+ {
+ free (buffer);
+ return 1;
+ }
goto process_partial_block;
}
/* Construct result in desired memory. */
md4_finish_ctx (&ctx, resblock);
+ free (buffer);
return 0;
}