~squid/squid/3.2

« back to all changes in this revision

Viewing changes to src/errorpage.h

  • Committer: Amos Jeffries
  • Date: 2013-03-08 02:06:11 UTC
  • Revision ID: squid3@treenet.co.nz-20130308020611-e57qtsxe9yt93x23
Regression fix: Accept-Language header parse

When handling error page negotiation the header parse to detect language
code can enter into an infinite loop. Recover the 3.1 series behaviour
and fix an additional pre-existing off-by-1 error.

The errors were introduced in trunk rev.11496 in 3.2.0.9.

Show diffs side-by-side

added added

removed removed

Lines of Context:
307
307
/**
308
308
 * Parses the Accept-Language header value and return one language item on
309
309
 * each call.
 
310
 * Will ignore any whitespace, q-values, and detectably invalid language
 
311
 * codes in the header.
 
312
 *
310
313
 * \param hdr is the Accept-Language header value
311
 
 * \param lang a buffer given by the user to store parsed language
 
314
 * \param lang a buffer to store parsed language code in
312
315
 * \param langlen the length of the lang buffer
313
 
 * \param pos it is used to store the state of parsing. Must be "0" on first call
314
 
 * \return true on success, false otherwise
 
316
 * \param pos is used to store the offset state of parsing. Must be "0" on first call.
 
317
 *            Will be altered to point at the start of next field-value.
 
318
 * \return true if something looking like a language token has been placed in lang, false otherwise
315
319
 */
316
320
bool strHdrAcptLangGetItem(const String &hdr, char *lang, int langLen, size_t &pos);
 
321
 
317
322
#endif /* SQUID_ERRORPAGE_H */