Stefan Sperling wrote:
> I'll stay out of the whole SVN_ERR_ASSERT discussion.
> If we boil down the diff as below is this OK?

> Index: subversion/libsvn_fs_fs/fs_fs.c
> ===================================================================
> --- subversion/libsvn_fs_fs/fs_fs.c   (revision 892649)
> +++ subversion/libsvn_fs_fs/fs_fs.c   (working copy)
> @@ -34,6 +34,7 @@
>  #include <apr_lib.h>
>  #include <apr_md5.h>
>  #include <apr_sha1.h>
> +#include <apr_strings.h>
>  #include <apr_thread_mutex.h>
>  
>  #include "svn_pools.h"
> @@ -457,8 +458,7 @@ get_shared_txn(svn_fs_t *fs, const char *txn_id, s
>      }
>  
>    assert(strlen(txn_id) < sizeof(txn->txn_id));
> -  strncpy(txn->txn_id, txn_id, sizeof(txn->txn_id) - 1);
> -  txn->txn_id[sizeof(txn->txn_id) - 1] = '\0';
> +  apr_cpystrn(txn->txn_id, txn_id, sizeof(txn->txn_id));
>    txn->being_written = FALSE;
>  
>    /* Link this transaction into the head of the list.  We will typically
> @@ -6641,14 +6641,12 @@ recover_find_max_ids(svn_fs_t *fs, svn_revnum_t re
>        if (svn_fs_fs__key_compare(node_id, max_node_id) > 0)
>          {
>            assert(strlen(node_id) < MAX_KEY_SIZE);
> -          strncpy(max_node_id, node_id, MAX_KEY_SIZE - 1);
> -          max_node_id[MAX_KEY_SIZE - 1] = '\0';
> +          apr_cpystrn(max_node_id, node_id, MAX_KEY_SIZE);
>          }
>        if (svn_fs_fs__key_compare(copy_id, max_copy_id) > 0)
>          {
>            assert(strlen(copy_id) < MAX_KEY_SIZE);
> -          strncpy(max_copy_id, copy_id, MAX_KEY_SIZE - 1);
> -          max_copy_id[MAX_KEY_SIZE - 1] = '\0';
> +          apr_cpystrn(max_copy_id, copy_id, MAX_KEY_SIZE);
>          }

Looks good, yes.

- Julian


Reply via email to