diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2013-05-18 16:51:59 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2013-05-18 16:51:59 +0000 |
commit | bb90afc68247b6158abd62430ae7ad4102683c47 (patch) | |
tree | fe105f606e717536844948a80bfe4fb06c4cbcad /src/htsname.c | |
parent | fd153cb28d1634276fd9c0c94393cfca09278a6b (diff) |
Fixed "Bogus charset for requests when filenames have non-ascii characters (RFC 3986)" (http://code.google.com/p/httrack/issues/detail?id=12)
Diffstat (limited to 'src/htsname.c')
-rw-r--r-- | src/htsname.c | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/src/htsname.c b/src/htsname.c index 9f5d753..44fd6fd 100644 --- a/src/htsname.c +++ b/src/htsname.c @@ -112,27 +112,14 @@ static void cleanDoubleSlash(char *s) { } } -// legacy version, without page charset +// forme le nom du fichier à sauver (save) à partir de fil et adr +// système intelligent, qui renomme en cas de besoin (exemple: deux INDEX.HTML et index.html) int url_savename(char *adr_complete, char *fil_complete, char *save, char *former_adr, char *former_fil, char *referer_adr, char *referer_fil, httrackp * opt, lien_url ** liens, int lien_tot, struct_back * sback, cache_back * cache, hash_struct * hash, int ptr, int numero_passe, const lien_back * headers) { - return url_savename2(adr_complete, fil_complete, save, former_adr, former_fil, - referer_adr, referer_fil, opt, liens, lien_tot, sback, - cache, hash, ptr, numero_passe, headers, /* unknown */ - NULL); -} - -// forme le nom du fichier à sauver (save) à partir de fil et adr -// système intelligent, qui renomme en cas de besoin (exemple: deux INDEX.HTML et index.html) -int url_savename2(char *adr_complete, char *fil_complete, char *save, - char *former_adr, char *former_fil, char *referer_adr, - char *referer_fil, httrackp * opt, lien_url ** liens, - int lien_tot, struct_back * sback, cache_back * cache, - hash_struct * hash, int ptr, int numero_passe, - const lien_back * headers, const char *charset) { char catbuff[CATBUFF_SIZE]; const char *mime_type = (headers && !HTTP_IS_REDIRECT(headers->r. @@ -670,10 +657,10 @@ int url_savename2(char *adr_complete, char *fil_complete, char *save, strcpybuff(fil_complete, curr_fil); // copier adr, fil - return url_savename2(curr_adr, curr_fil, save, NULL, NULL, - referer_adr, referer_fil, opt, liens, - lien_tot, sback, cache, hash, ptr, - numero_passe, NULL, charset); + return url_savename(curr_adr, curr_fil, save, NULL, NULL, + referer_adr, referer_fil, opt, liens, + lien_tot, sback, cache, hash, ptr, + numero_passe, NULL); } // --- --- --- @@ -1374,18 +1361,18 @@ int url_savename2(char *adr_complete, char *fil_complete, char *save, /* ensure that there is no ../ (potential vulnerability) */ fil_simplifie(save); - /* convert name to UTF-8 ? */ - if (charset != NULL && charset[0] != '\0') { - char *const s = hts_convertStringToUTF8(save, (int) strlen(save), charset); - - if (s != NULL) { - hts_log_print(opt, LOG_DEBUG, - "engine: save-name: charset conversion from '%s' to '%s' using charset '%s'", - save, s, charset); - strcpybuff(save, s); - free(s); - } - } + /* convert name to UTF-8 ? Note: already done while parsing. */ + //if (charset != NULL && charset[0] != '\0') { + // char *const s = hts_convertStringToUTF8(save, (int) strlen(save), charset); + + // if (s != NULL) { + // hts_log_print(opt, LOG_DEBUG, + // "engine: save-name: charset conversion from '%s' to '%s' using charset '%s'", + // save, s, charset); + // strcpybuff(save, s); + // free(s); + // } + //} /* callback */ RUN_CALLBACK5(opt, savename, adr_complete, fil_complete, referer_adr, |