summaryrefslogtreecommitdiff
path: root/scheduler/type.c
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2015-03-30 19:07:17 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2015-03-30 19:07:17 +0000
commitcbf9404a5a1bc5b6fa78e4e4d7f8edf5259c9f64 (patch)
tree8729c47cb0e9836e59a392759159eaf5ef63c900 /scheduler/type.c
parent50752acba9df1a5f5ee750c4ea8cd1fd7ee664c2 (diff)
downloadcups-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.c39
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));
}
/*