break;
}
- } while(++ptr != end);
+ } while(++ptr < end);
state->buffer[state->offset++] = 0;
int rv = -1;
if (state->flags & PHP_HTTP_URL_PARSE_MBUTF8) {
- rv = idna_to_ascii_8z(state->url.host, &idn, IDNA_ALLOW_UNASSIGNED|IDNA_USE_STD3_ASCII_RULES);
+ rv = idna_to_ascii_8z(state->url.host, &idn, IDNA_ALLOW_UNASSIGNED);
}
# if PHP_HTTP_HAVE_WCHAR
else if (state->flags & PHP_HTTP_URL_PARSE_MBLOC) {
- rv = idna_to_ascii_lz(state->url.host, &idn, IDNA_ALLOW_UNASSIGNED|IDNA_USE_STD3_ASCII_RULES);
+ rv = idna_to_ascii_lz(state->url.host, &idn, IDNA_ALLOW_UNASSIGNED);
}
# endif
if (rv != IDNA_SUCCESS) {
#endif
#if HAVE_UIDNA_IDNTOASCII
-# if PHP_HTTP_HAVE_LIBICU
-# include <unicode/uidna.h>
-# else
+# if !PHP_HTTP_HAVE_LIBICU
typedef uint16_t UChar;
typedef enum { U_ZERO_ERROR = 0 } UErrorCode;
int32_t uidna_IDNToASCII(const UChar *src, int32_t srcLength, UChar *dest, int32_t destCapacity, int32_t options, void *parseError, UErrorCode *status);
goto error;
}
-# if __GNUC__
+# if __GNUC__ >= 5
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# endif
ahost_len = uidna_IDNToASCII(uhost_str, uhost_len, ahost_str, 256, 3, NULL, &rc);
-# if __GNUC__
+# if __GNUC__ >= 5
# pragma GCC diagnostic pop
# endif
}
#endif
-#if HAVE_UIDNA_IDNTOASCII
-# if PHP_HTTP_HAVE_LIBICU
-# include <unicode/uidna.h>
-# endif
+#if PHP_HTTP_HAVE_LIBICU && HAVE_UIDNA_NAMETOASCII_UTF8
static ZEND_RESULT_CODE parse_uidn_2008(struct parse_state *state)
{
char *host_ptr, *error = NULL, ebuf[64] = {0};
UErrorCode rc = U_ZERO_ERROR;
UIDNAInfo info = UIDNA_INFO_INITIALIZER;
- UIDNA *uidna = uidna_openUTS46(UIDNA_ALLOW_UNASSIGNED|UIDNA_USE_STD3_RULES, &rc);
+ UIDNA *uidna = uidna_openUTS46(UIDNA_ALLOW_UNASSIGNED, &rc);
if (!uidna || U_FAILURE(rc)) {
return FAILURE;
static ZEND_RESULT_CODE parse_idna(struct parse_state *state, size_t len)
{
#if PHP_HTTP_HAVE_IDNA2008
- if ((state->flags & PHP_HTTP_URL_PARSE_TOIDN_2008)
+ if ((state->flags & PHP_HTTP_URL_PARSE_TOIDN_2008) == PHP_HTTP_URL_PARSE_TOIDN_2008
# if PHP_HTTP_HAVE_IDNA2003
- || !(state->flags & PHP_HTTP_URL_PARSE_TOIDN_2003)
+ || (state->flags & PHP_HTTP_URL_PARSE_TOIDN_2003) != PHP_HTTP_URL_PARSE_TOIDN_2003
# endif
) {
-#if HAVE_UIDNA_NAMETOASCII_UTF8
+#if PHP_HTTP_HAVE_LIBICU && HAVE_UIDNA_NAMETOASCII_UTF8
return parse_uidn_2008(state);
#elif PHP_HTTP_HAVE_LIBIDN2
return parse_gidn_2008(state, len);
#endif
#if PHP_HTTP_HAVE_IDNA2003
- if ((state->flags & PHP_HTTP_URL_PARSE_TOIDN_2003)
+ if ((state->flags & PHP_HTTP_URL_PARSE_TOIDN_2003) == PHP_HTTP_URL_PARSE_TOIDN_2003
# if PHP_HTTP_HAVE_IDNA2008
- || !(state->flags & PHP_HTTP_URL_PARSE_TOIDN_2008)
+ || (state->flags & PHP_HTTP_URL_PARSE_TOIDN_2008) != PHP_HTTP_URL_PARSE_TOIDN_2008
#endif
) {
#if HAVE_UIDNA_IDNTOASCII
return parse_widn_2003(state);
#endif
-#if HAVE_UIDNA_NAMETOASCII_UTF8
+#if PHP_HTTP_HAVE_LIBICU && HAVE_UIDNA_NAMETOASCII_UTF8
return parse_uidn_2008(state);
#elif PHP_HTTP_HAVE_LIBIDN2
return parse_gidn_2008(state, len);
label = ptr;
ptr += mb - 1;
}
- } while (++ptr != end);
+ } while (++ptr < end);
if (!state->url.host) {
len = state->offset - len;
}
state->ptr += mb - 1;
}
- } while (++state->ptr != state->end);
+ } while (++state->ptr < state->end);
softfail:
state->offset = 0;