diff options
author | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2015-03-30 19:07:17 +0000 |
---|---|---|
committer | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2015-03-30 19:07:17 +0000 |
commit | cbf9404a5a1bc5b6fa78e4e4d7f8edf5259c9f64 (patch) | |
tree | 8729c47cb0e9836e59a392759159eaf5ef63c900 /scheduler/type.c | |
parent | 50752acba9df1a5f5ee750c4ea8cd1fd7ee664c2 (diff) | |
download | cups-cbf9404a5a1bc5b6fa78e4e4d7f8edf5259c9f64.tar.gz |
Fix a gzip processing bug (STR #4602)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12577 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'scheduler/type.c')
-rw-r--r-- | scheduler/type.c | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/scheduler/type.c b/scheduler/type.c index 60bc0ca5d..5300d7e7d 100644 --- a/scheduler/type.c +++ b/scheduler/type.c @@ -3,7 +3,7 @@ * * MIME typing routines for CUPS. * - * Copyright 2007-2014 by Apple Inc. + * Copyright 2007-2015 by Apple Inc. * Copyright 1997-2006 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -613,8 +613,23 @@ mimeFileType(mime_t *mime, /* I - MIME database */ return (NULL); } - fb.offset = -1; - fb.length = 0; + /* + * Then preload the first MIME_MAX_BUFFER bytes of the file into the file + * buffer, returning an error if we can't read anything... + */ + + fb.offset = 0; + fb.length = (int)cupsFileRead(fb.fp, (char *)fb.buffer, MIME_MAX_BUFFER); + + if (fb.length <= 0) + { + DEBUG_printf(("1mimeFileType: Unable to read from \"%s\": %s", pathname, strerror(errno))); + DEBUG_puts("1mimeFileType: Returning NULL."); + + cupsFileClose(fb.fp); + + return (NULL); + } /* * Figure out the base filename (without directory portion)... @@ -780,6 +795,8 @@ mime_check_rules( fb->length = cupsFileRead(fb->fp, (char *)fb->buffer, sizeof(fb->buffer)); fb->offset = rules->offset; + + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_ASCII fb->length=%d", fb->length)); } /* @@ -822,6 +839,8 @@ mime_check_rules( fb->length = cupsFileRead(fb->fp, (char *)fb->buffer, sizeof(fb->buffer)); fb->offset = rules->offset; + + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_PRINTABLE fb->length=%d", fb->length)); } /* @@ -870,6 +889,8 @@ mime_check_rules( sizeof(fb->buffer)); fb->offset = rules->offset; + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_REGEX fb->length=%d", fb->length)); + DEBUG_printf(("5mime_check_rules: loaded %d byte fb->buffer at %d, starts " "with \"%c%c%c%c\".", fb->length, fb->offset, fb->buffer[0], fb->buffer[1], @@ -914,6 +935,8 @@ mime_check_rules( sizeof(fb->buffer)); fb->offset = rules->offset; + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_STRING fb->length=%d", fb->length)); + DEBUG_printf(("5mime_check_rules: loaded %d byte fb->buffer at %d, starts " "with \"%c%c%c%c\".", fb->length, fb->offset, fb->buffer[0], fb->buffer[1], @@ -948,6 +971,8 @@ mime_check_rules( fb->length = cupsFileRead(fb->fp, (char *)fb->buffer, sizeof(fb->buffer)); fb->offset = rules->offset; + + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_ISTRING fb->length=%d", fb->length)); } /* @@ -976,6 +1001,8 @@ mime_check_rules( fb->length = cupsFileRead(fb->fp, (char *)fb->buffer, sizeof(fb->buffer)); fb->offset = rules->offset; + + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_CHAR fb->length=%d", fb->length)); } /* @@ -1006,6 +1033,8 @@ mime_check_rules( fb->length = cupsFileRead(fb->fp, (char *)fb->buffer, sizeof(fb->buffer)); fb->offset = rules->offset; + + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_SHORT fb->length=%d", fb->length)); } /* @@ -1039,6 +1068,8 @@ mime_check_rules( fb->length = cupsFileRead(fb->fp, (char *)fb->buffer, sizeof(fb->buffer)); fb->offset = rules->offset; + + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_INT fb->length=%d", fb->length)); } /* @@ -1080,6 +1111,8 @@ mime_check_rules( fb->length = cupsFileRead(fb->fp, (char *)fb->buffer, sizeof(fb->buffer)); fb->offset = rules->offset; + + DEBUG_printf(("4mime_check_rules: MIME_MAGIC_CONTAINS fb->length=%d", fb->length)); } /* |