mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
url: don't use bad offset in tld_check_name to show error
libidn's tld_check_lz returns an error offset of the first character that it failed to process, however that offset is not a byte offset and may not even be in the locale encoding therefore we can't use it to show the user the character that failed to process. Bug: https://github.com/curl/curl/issues/731 Reported-by: Karlson2k
This commit is contained in:
parent
4adee1947c
commit
3d144ab99b
@ -3728,17 +3728,16 @@ static bool tld_check_name(struct SessionHandle *data,
|
||||
if(rc != IDNA_SUCCESS)
|
||||
return FALSE;
|
||||
|
||||
/* Warning: err_pos receives "the decoded character offset rather than the
|
||||
byte position in the string." And as of libidn 1.32 that character offset
|
||||
is for UTF-8, even if the passed in string is another locale. */
|
||||
rc = tld_check_lz(uc_name, &err_pos, NULL);
|
||||
#ifndef CURL_DISABLE_VERBOSE_STRINGS
|
||||
#ifdef HAVE_TLD_STRERROR
|
||||
if(rc != TLD_SUCCESS)
|
||||
tld_errmsg = tld_strerror((Tld_rc)rc);
|
||||
#endif
|
||||
if(rc == TLD_INVALID)
|
||||
infof(data, "WARNING: %s; pos %u = `%c'/0x%02X\n",
|
||||
tld_errmsg, err_pos, uc_name[err_pos],
|
||||
uc_name[err_pos] & 255);
|
||||
else if(rc != TLD_SUCCESS)
|
||||
if(rc != TLD_SUCCESS)
|
||||
infof(data, "WARNING: TLD check for %s failed; %s\n",
|
||||
uc_name, tld_errmsg);
|
||||
#endif /* CURL_DISABLE_VERBOSE_STRINGS */
|
||||
|
Loading…
Reference in New Issue
Block a user