[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Input validation observations

From: Noorul Islam K M <noorul_at_collab.net>
Date: Fri, 10 Dec 2010 21:12:25 +0530

Julian Foad <julian.foad_at_wandisco.com> writes:

> Noorul Islam K M wrote:
>
>> Attached is the patch for svn/diff-cmd.c. All tests pass.
>
> Hi Noorul. Thanks for mentioning that all tests pass - that's good to
> know.
>
>> + svn_cl__assert_homogeneous_target_type(targets);
>> +
>> /* Check to see if at least one of our paths is a working copy
>> path. */
>> for (i = 0; i < targets->nelts; ++i)
>
> After you have asserted that all the targets are of the same type, there
> is no need for a loop that checks all of them in turn, just to find out
> whether they are paths or URLs, is there?
>

You are absolutely right. Thanks for this pointer. Please find updated
patch attached. All tests pass.

Thanks and Regards
Noorul

Index: subversion/svn/diff-cmd.c
===================================================================
--- subversion/svn/diff-cmd.c (revision 1044373)
+++ subversion/svn/diff-cmd.c (working copy)
@@ -260,7 +260,7 @@
     }
   else
     {
- svn_boolean_t working_copy_present = FALSE, url_present = FALSE;
+ svn_boolean_t working_copy_present = FALSE;
 
       /* The 'svn diff [-r N[:M]] [TARGET[@REV]...]' case matches. */
 
@@ -272,21 +272,10 @@
       old_target = "";
       new_target = "";
 
- /* Check to see if at least one of our paths is a working copy
- path. */
- for (i = 0; i < targets->nelts; ++i)
- {
- const char *path = APR_ARRAY_IDX(targets, i, const char *);
- if (! svn_path_is_url(path))
- working_copy_present = TRUE;
- else
- url_present = TRUE;
- }
+ SVN_ERR(svn_cl__assert_homogeneous_target_type(targets));
 
- if (url_present && working_copy_present)
- return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("Cannot mix repository and working copy "
- "targets"));
+ if (! svn_path_is_url(APR_ARRAY_IDX(targets, 0, const char *)))
+ working_copy_present = TRUE;
 
       if (opt_state->start_revision.kind == svn_opt_revision_unspecified
           && working_copy_present)
Received on 2010-12-10 16:43:20 CET

This is an archived mail posted to the Subversion Dev mailing list.