From e4f25ae5bdfb82899eca1a772951b39bc748f966 Mon Sep 17 00:00:00 2001 From: mike Date: Sun, 16 Sep 2012 23:16:32 +0000 Subject: [PATCH] One more fix for STR #4072 - wasn't skipping extra data bytes. git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10609 7a7537e8-13f0-0310-91df-b6672ffda945 --- scheduler/ipp.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/scheduler/ipp.c b/scheduler/ipp.c index 82a1e139fc..a9e76fd376 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -11039,18 +11039,30 @@ validate_job(cupsd_client_t *con, /* I - Client connection */ break; else if (*nameptr == 0x7f) break; - else if ((*nameptr & 0xe0) == 0xc0 && - (nameptr[1] & 0xc0) != 0x80) - break; - else if ((*nameptr & 0xf0) == 0xe0 && - ((nameptr[1] & 0xc0) != 0x80 || - (nameptr[2] & 0xc0) != 0x80)) - break; - else if ((*nameptr & 0xf8) == 0xf0 && - ((nameptr[1] & 0xc0) != 0x80 || - (nameptr[2] & 0xc0) != 0x80 || - (nameptr[3] & 0xc0) != 0x80)) - break; + else if ((*nameptr & 0xe0) == 0xc0) + { + if ((nameptr[1] & 0xc0) != 0x80) + break; + + nameptr ++; + } + else if ((*nameptr & 0xf0) == 0xe0) + { + if ((nameptr[1] & 0xc0) != 0x80 || + (nameptr[2] & 0xc0) != 0x80) + break; + + nameptr += 2; + } + else if ((*nameptr & 0xf8) == 0xf0) + { + if ((nameptr[1] & 0xc0) != 0x80 || + (nameptr[2] & 0xc0) != 0x80 || + (nameptr[3] & 0xc0) != 0x80) + break; + + nameptr += 3; + } else if (*nameptr & 0x80) break; } -- 2.47.3