Author: brane
Date: Tue Dec 10 06:55:19 2013
New Revision: 1549770

URL: http://svn.apache.org/r1549770
Log:
Avoid initializing svn_fs_id_t parts with pointers to stack variables, which
will eventually become dangling.

* subversion/libsvn_fs_fs/id.c
  (svn_fs_fs__id_txn_create_root, svn_fs_fs__id_create_root,
   svn_fs_fs__id_txn_create, svn_fs_fs__id_rev_create, svn_fs_fs__id_parse):
   Fix the erroneous FSAP_DATA initialization with an address of a temporary.
* subversion/libsvn_fs_x/id.c
  (svn_fs_x__id_txn_create_root, svn_fs_x__id_create_root,
   svn_fs_x__id_txn_create, svn_fs_x__id_rev_create, svn_fs_x__id_parse):
   Fix the erroneous FSAP_DATA initialization with an address of a temporary.

Patch by: Evgeny Kotkov

Modified:
    subversion/trunk/subversion/libsvn_fs_fs/id.c
    subversion/trunk/subversion/libsvn_fs_x/id.c

Modified: subversion/trunk/subversion/libsvn_fs_fs/id.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/id.c?rev=1549770&r1=1549769&r2=1549770&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/id.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/id.c Tue Dec 10 06:55:19 2013
@@ -359,7 +359,7 @@ svn_fs_fs__id_txn_create_root(const svn_
   id->private_id.rev_item.revision = SVN_INVALID_REVNUM;
 
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
 
   return (svn_fs_id_t *)id;
 }
@@ -374,7 +374,7 @@ svn_fs_id_t *svn_fs_fs__id_create_root(c
   id->private_id.rev_item.number = SVN_FS_FS__ITEM_INDEX_ROOT_NODE;
 
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
 
   return (svn_fs_id_t *)id;
 }
@@ -393,7 +393,7 @@ svn_fs_fs__id_txn_create(const svn_fs_fs
   id->private_id.rev_item.revision = SVN_INVALID_REVNUM;
 
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
 
   return (svn_fs_id_t *)id;
 }
@@ -413,7 +413,7 @@ svn_fs_fs__id_rev_create(const svn_fs_fs
   id->private_id.rev_item = *rev_item;
 
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
 
   return (svn_fs_id_t *)id;
 }
@@ -447,7 +447,7 @@ svn_fs_fs__id_parse(const char *data,
   /* Alloc a new svn_fs_id_t structure. */
   id = apr_pcalloc(pool, sizeof(*id));
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
 
   /* Now, we basically just need to "split" this data on `.'
      characters.  We will use svn_cstring_tokenize, which will put

Modified: subversion/trunk/subversion/libsvn_fs_x/id.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/id.c?rev=1549770&r1=1549769&r2=1549770&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/id.c (original)
+++ subversion/trunk/subversion/libsvn_fs_x/id.c Tue Dec 10 06:55:19 2013
@@ -357,7 +357,7 @@ svn_fs_x__id_txn_create_root(const svn_f
   id->rev_item.revision = SVN_INVALID_REVNUM;
 
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
   id->pool = pool;
 
   return (svn_fs_id_t *)id;
@@ -373,7 +373,7 @@ svn_fs_id_t *svn_fs_x__id_create_root(co
   id->rev_item.number = SVN_FS_X__ITEM_INDEX_ROOT_NODE;
 
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
   id->pool = pool;
 
   return (svn_fs_id_t *)id;
@@ -393,7 +393,7 @@ svn_fs_x__id_txn_create(const svn_fs_x__
   id->rev_item.revision = SVN_INVALID_REVNUM;
 
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
   id->pool = pool;
 
   return (svn_fs_id_t *)id;
@@ -414,7 +414,7 @@ svn_fs_x__id_rev_create(const svn_fs_x__
   id->rev_item = *rev_item;
 
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
   id->pool = pool;
 
   return (svn_fs_id_t *)id;
@@ -449,7 +449,7 @@ svn_fs_x__id_parse(const char *data,
   /* Alloc a new svn_fs_id_t structure. */
   id = apr_pcalloc(pool, sizeof(*id));
   id->generic_id.vtable = &id_vtable;
-  id->generic_id.fsap_data = &id;
+  id->generic_id.fsap_data = id;
   id->pool = pool;
 
   /* Now, we basically just need to "split" this data on `.'


Reply via email to