diff options
Diffstat (limited to 'meta/recipes-devtools/subversion/subversion/subversion-CVE-2014-3528.patch')
| -rw-r--r-- | meta/recipes-devtools/subversion/subversion/subversion-CVE-2014-3528.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/meta/recipes-devtools/subversion/subversion/subversion-CVE-2014-3528.patch b/meta/recipes-devtools/subversion/subversion/subversion-CVE-2014-3528.patch new file mode 100644 index 0000000000..23e738e985 --- /dev/null +++ b/meta/recipes-devtools/subversion/subversion/subversion-CVE-2014-3528.patch | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | Upstream-Status: Backport | ||
| 2 | |||
| 3 | Signed-off-by: Yue Tao <yue.tao@windriver.com> | ||
| 4 | |||
| 5 | diff --git a/subversion/libsvn_subr/config_auth.c.old b/subversion/libsvn_subr/config_auth.c | ||
| 6 | index ff50270..c511d04 100644 | ||
| 7 | --- a/subversion/libsvn_subr/config_auth.c.old | ||
| 8 | +++ b/subversion/libsvn_subr/config_auth.c | ||
| 9 | @@ -85,6 +85,7 @@ svn_config_read_auth_data(apr_hash_t **hash, | ||
| 10 | if (kind == svn_node_file) | ||
| 11 | { | ||
| 12 | svn_stream_t *stream; | ||
| 13 | + svn_string_t *stored_realm; | ||
| 14 | |||
| 15 | SVN_ERR_W(svn_stream_open_readonly(&stream, auth_path, pool, pool), | ||
| 16 | _("Unable to open auth file for reading")); | ||
| 17 | @@ -95,6 +96,12 @@ svn_config_read_auth_data(apr_hash_t **hash, | ||
| 18 | apr_psprintf(pool, _("Error parsing '%s'"), | ||
| 19 | svn_path_local_style(auth_path, pool))); | ||
| 20 | |||
| 21 | + stored_realm = apr_hash_get(*hash, SVN_CONFIG_REALMSTRING_KEY, | ||
| 22 | + APR_HASH_KEY_STRING); | ||
| 23 | + | ||
| 24 | + if (!stored_realm || strcmp(stored_realm->data, realmstring) != 0) | ||
| 25 | + *hash = NULL; /* Hash collision, or somebody tampering with storage */ | ||
| 26 | + | ||
| 27 | SVN_ERR(svn_stream_close(stream)); | ||
| 28 | } | ||
| 29 | |||
