bindtextdomain("bacula", LOCALEDIR);
textdomain("bacula");
init_stack_dump();
+ lmgr_init_thread();
working_directory = "/tmp";
my_name_is(argc, argv, "bextract");
wbuf = rec->data;
wsize = rec->data_len;
}
- compress_len = compress_buf_size;
- if ((stat=uncompress((Bytef *)compress_buf, &compress_len,
- (const Bytef *)wbuf, (uLong)wsize) != Z_OK)) {
+
+ while ((stat=uncompress((Byte *)compress_buf, &compress_len,
+ (const Byte *)wbuf, (uLong)wsize)) == Z_BUF_ERROR)
+ {
+ /* The buffer size is too small, try with a bigger one */
+ compress_len = compress_len + (compress_len >> 1);
+ compress_buf = check_pool_memory_size(compress_buf,
+ compress_len);
+ }
+ if (stat != Z_OK) {
Emsg1(M_ERROR, 0, _("Uncompression error. ERR=%d\n"), stat);
extract = false;
return true;