When trying to detect the content type of the
authorRainer Jung <rjung@apache.org>
Fri, 20 Mar 2009 17:42:26 +0000 (17:42 +0000)
committerRainer Jung <rjung@apache.org>
Fri, 20 Mar 2009 17:42:26 +0000 (17:42 +0000)
uncompressed content it is often not enough
to read the same number of bytes, we already
read compressed. Since uncompress() allocates a
new buffer, we can increase the number of bytes
to read to the same size, we use in the case,
where the content isn't compressed.

Furthermore zero-terminate the read data to keep
assumptions consistent with the uncompressed case.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@756683 13f79535-47bb-0310-9956-ffa450edef68

modules/metadata/mod_mime_magic.c

index cd7b491a6ffbff72e3455cc48d52119a618ad46f..b29d5febf980206c534efbf09cff4c0f393d9a5b 100644 (file)
@@ -2099,10 +2099,12 @@ static int zmagic(request_rec *r, unsigned char *buf, apr_size_t nbytes)
     if (i == ncompr)
         return 0;
 
-    if ((newsize = uncompress(r, i, &newbuf, nbytes)) > 0) {
+    if ((newsize = uncompress(r, i, &newbuf, HOWMANY)) > 0) {
         /* set encoding type in the request record */
         r->content_encoding = compr[i].encoding;
 
+        newbuf[newsize-1] = '\0';  /* null-terminate uncompressed data */
+        /* Try to detect the content type of the uncompressed data */
         if (tryit(r, newbuf, newsize, 0) != OK) {
             return 0;
         }