You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2016/01/30 18:11:30 UTC

svn commit: r1727733 - /subversion/trunk/subversion/libsvn_client/resolved.c

Author: stsp
Date: Sat Jan 30 17:11:30 2016
New Revision: 1727733

URL: http://svn.apache.org/viewvc?rev=1727733&view=rev
Log:
* subversion/libsvn_client/resolved.c
  (svn_client_conflict_prop_get_resolution_options): Ensure that options
   returned from here live in writable memory so that option->type_data 
   can be written to. Should fix access violation on Windows.

Found by: svn-windows-local buildbot

Modified:
    subversion/trunk/subversion/libsvn_client/resolved.c

Modified: subversion/trunk/subversion/libsvn_client/resolved.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/resolved.c?rev=1727733&r1=1727732&r2=1727733&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/resolved.c (original)
+++ subversion/trunk/subversion/libsvn_client/resolved.c Sat Jan 30 17:11:30 2016
@@ -1038,8 +1038,13 @@ svn_client_conflict_prop_get_resolution_
                             sizeof(svn_client_conflict_option_t *));
   for (i = 0; i < ARRAY_LEN(prop_conflict_options); i++)
     {
-      APR_ARRAY_PUSH((*options), const svn_client_conflict_option_t *) =
-        &prop_conflict_options[i];
+      svn_client_conflict_option_t *option;
+
+      /* Property conflicts make use of type-specific data. We must make a
+       * mutable copy to make the memory for option->type_data writable. */
+      option = apr_pcalloc(result_pool, sizeof(*option));
+      *option = prop_conflict_options[i];
+      APR_ARRAY_PUSH((*options), const svn_client_conflict_option_t *) = option;
     }
 
   return SVN_NO_ERROR;



RE: svn commit: r1727733 -/subversion/trunk/subversion/libsvn_client/resolved.c

Posted by Bert Huijben <be...@qqmail.nl>.
pmemdup() might be a bit easier here.

But if there are localizable items in this struct we should also apply the localization here.

Bert

Sent from Mail for Windows 10

From: stsp@apache.org
Sent: zaterdag 30 januari 2016 18:11
To: commits@subversion.apache.org
Subject: svn commit: r1727733 -/subversion/trunk/subversion/libsvn_client/resolved.c

Author: stsp
Date: Sat Jan 30 17:11:30 2016
New Revision: 1727733

URL: http://svn.apache.org/viewvc?rev=1727733&view=rev
Log:
* subversion/libsvn_client/resolved.c
  (svn_client_conflict_prop_get_resolution_options): Ensure that options
   returned from here live in writable memory so that option->type_data 
   can be written to. Should fix access violation on Windows.

Found by: svn-windows-local buildbot

Modified:
    subversion/trunk/subversion/libsvn_client/resolved.c

Modified: subversion/trunk/subversion/libsvn_client/resolved.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/resolved.c?rev=1727733&r1=1727732&r2=1727733&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/resolved.c (original)
+++ subversion/trunk/subversion/libsvn_client/resolved.c Sat Jan 30 17:11:30 2016
@@ -1038,8 +1038,13 @@ svn_client_conflict_prop_get_resolution_
                             sizeof(svn_client_conflict_option_t *));
   for (i = 0; i < ARRAY_LEN(prop_conflict_options); i++)
     {
-      APR_ARRAY_PUSH((*options), const svn_client_conflict_option_t *) =
-        &prop_conflict_options[i];
+      svn_client_conflict_option_t *option;
+
+      /* Property conflicts make use of type-specific data. We must make a
+       * mutable copy to make the memory for option->type_data writable. */
+      option = apr_pcalloc(result_pool, sizeof(*option));
+      *option = prop_conflict_options[i];
+      APR_ARRAY_PUSH((*options), const svn_client_conflict_option_t *) = option;
     }
 
   return SVN_NO_ERROR;