vlc | branch: master | Thomas Guillem <[email protected]> | Mon Jan 11 18:12:13 2016 +0100| [b1152f5c7c51318333e2b718d2f26b061fcf3258] | committer: Thomas Guillem
keystore: store/find a decoded path > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b1152f5c7c51318333e2b718d2f26b061fcf3258 --- src/misc/keystore.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/misc/keystore.c b/src/misc/keystore.c index 8e0b765..934b55a 100644 --- a/src/misc/keystore.c +++ b/src/misc/keystore.c @@ -131,6 +131,9 @@ find_closest_path(vlc_keystore_entry *p_entries, unsigned i_count, { vlc_keystore_entry *p_match_entry = NULL; size_t i_last_pathlen = 0; + char *psz_decoded_path = vlc_uri_decode_duplicate(psz_path); + if (psz_decoded_path == NULL) + return NULL; /* Try to find the entry that has the closest path to psz_url */ for (unsigned int i = 0; i < i_count; ++i) @@ -139,13 +142,14 @@ find_closest_path(vlc_keystore_entry *p_entries, unsigned i_count, const char *psz_entry_path = p_entry->ppsz_values[KEY_PATH]; size_t i_entry_pathlen = strlen(psz_entry_path); - if (strncasecmp(psz_path, psz_entry_path, i_entry_pathlen) == 0 + if (strncasecmp(psz_decoded_path, psz_entry_path, i_entry_pathlen) == 0 && i_entry_pathlen > i_last_pathlen) { i_last_pathlen = i_entry_pathlen; p_match_entry = p_entry; } } + free(psz_decoded_path); return p_match_entry; } @@ -430,7 +434,8 @@ vlc_credential_store(vlc_credential *p_credential) const vlc_url_t *p_url = p_credential->p_url; char *psz_path = NULL; - if (protocol_store_path(p_url) && (psz_path = strdup(p_url->psz_path))) + if (protocol_store_path(p_url) + && (psz_path = vlc_uri_decode_duplicate(p_url->psz_path)) != NULL) { char *p_slash; if (protocol_is_smb(p_url)) @@ -473,7 +478,10 @@ vlc_credential_store(vlc_credential *p_credential) if (asprintf(&psz_label, "LibVLC password for %s://%s%s", p_url->psz_protocol, p_url->psz_host, psz_path ? psz_path : "") == -1) + { + free(psz_path); return false; + } bool b_ret = vlc_keystore_store(p_credential->p_keystore, ppsz_values, (const uint8_t *)p_credential->psz_password, _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
