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 `.'