ubifs: BUG: Blocks commpressed with zlib

Blocks compressed with zlib dont have the full gzip header.

Without this patch, block compressed with zlib cannot be readed!

Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@uam.es>
This commit is contained in:
Ricardo Ribalda Delgado 2009-04-27 18:33:33 +02:00 committed by Wolfgang Denk
parent 35f6a943f7
commit c1a0fd5f28
2 changed files with 5 additions and 3 deletions

View File

@ -24,6 +24,7 @@
*/ */
#include "ubifs.h" #include "ubifs.h"
#include <u-boot/zlib.h>
#if !defined(CONFIG_SYS_64BIT_VSPRINTF) #if !defined(CONFIG_SYS_64BIT_VSPRINTF)
#warning Please define CONFIG_SYS_64BIT_VSPRINTF for correct output! #warning Please define CONFIG_SYS_64BIT_VSPRINTF for correct output!
@ -34,14 +35,14 @@ DECLARE_GLOBAL_DATA_PTR;
/* compress.c */ /* compress.c */
/* /*
* We need a wrapper for gunzip() because the parameters are * We need a wrapper for zunzip() because the parameters are
* incompatible with the lzo decompressor. * incompatible with the lzo decompressor.
*/ */
static int gzip_decompress(const unsigned char *in, size_t in_len, static int gzip_decompress(const unsigned char *in, size_t in_len,
unsigned char *out, size_t *out_len) unsigned char *out, size_t *out_len)
{ {
unsigned long len = in_len; unsigned long len = in_len;
return gunzip(out, *out_len, (unsigned char *)in, &len); return zunzip(out, *out_len, (unsigned char *)in, &len, 0, 0);
} }
/* Fake description object for the "none" compressor */ /* Fake description object for the "none" compressor */

View File

@ -2172,6 +2172,7 @@ int ubifs_decompress(const void *buf, int len, void *out, int *out_len,
/* todo: Move these to a common U-Boot header */ /* todo: Move these to a common U-Boot header */
int lzo1x_decompress_safe(const unsigned char *in, size_t in_len, int lzo1x_decompress_safe(const unsigned char *in, size_t in_len,
unsigned char *out, size_t *out_len); unsigned char *out, size_t *out_len);
int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp);
int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,
int stoponerr, int offset);
#endif /* !__UBIFS_H__ */ #endif /* !__UBIFS_H__ */