~ubuntu-branches/debian/sid/subversion/sid

« back to all changes in this revision

Viewing changes to subversion/tests/libsvn_subr/dirent_uri-test.c

  • Committer: Package Import Robot
  • Author(s): James McCoy
  • Date: 2015-08-07 21:32:47 UTC
  • mfrom: (0.2.15) (4.1.7 experimental)
  • Revision ID: package-import@ubuntu.com-20150807213247-ozyewtmgsr6tkewl
Tags: 1.9.0-1
* Upload to unstable
* New upstream release.
  + Security fixes
    - CVE-2015-3184: Mixed anonymous/authenticated path-based authz with
      httpd 2.4
    - CVE-2015-3187: svn_repos_trace_node_locations() reveals paths hidden
      by authz
* Add >= 2.7 requirement for python-all-dev Build-Depends, needed to run
  tests.
* Remove Build-Conflicts against ruby-test-unit.  (Closes: #791844)
* Remove patches/apache_module_dependency in favor of expressing the
  dependencies in authz_svn.load/dav_svn.load.
* Build-Depend on apache2-dev (>= 2.4.16) to ensure ap_some_authn_required()
  is available when building mod_authz_svn and Depend on apache2-bin (>=
  2.4.16) for runtime support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
270
270
                                 "\"%s\". expected \"%s\"",
271
271
                                 base, comp, result, expect);
272
272
 
273
 
      result = svn_dirent_join_many(pool, base, comp, NULL);
 
273
      result = svn_dirent_join_many(pool, base, comp, SVN_VA_NULL);
274
274
      if (strcmp(result, expect))
275
275
        return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
276
276
                                 "svn_dirent_join_many(\"%s\", \"%s\") returned "
286
286
                             "expected \"%s\"", \
287
287
                             result, expect);
288
288
 
289
 
  TEST_MANY((pool, "abc", NULL), "abc");
290
 
  TEST_MANY((pool, "/abc", NULL), "/abc");
291
 
  TEST_MANY((pool, "/", NULL), "/");
292
 
 
293
 
  TEST_MANY((pool, "abc", "def", "ghi", NULL), "abc/def/ghi");
294
 
  TEST_MANY((pool, "abc", "/def", "ghi", NULL), "/def/ghi");
295
 
  TEST_MANY((pool, "/abc", "def", "ghi", NULL), "/abc/def/ghi");
296
 
  TEST_MANY((pool, "abc", "def", "/ghi", NULL), "/ghi");
297
 
  TEST_MANY((pool, "/", "def", "/ghi", NULL), "/ghi");
298
 
  TEST_MANY((pool, "/", "/def", "/ghi", NULL), "/ghi");
299
 
 
300
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "def", "ghi", NULL), "def/ghi");
301
 
  TEST_MANY((pool, "abc", SVN_EMPTY_PATH, "ghi", NULL), "abc/ghi");
302
 
  TEST_MANY((pool, "abc", "def", SVN_EMPTY_PATH, NULL), "abc/def");
303
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "def", SVN_EMPTY_PATH, NULL), "def");
304
 
  TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "ghi", NULL), "ghi");
305
 
  TEST_MANY((pool, "abc", SVN_EMPTY_PATH, SVN_EMPTY_PATH, NULL), "abc");
306
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "def", "/ghi", NULL), "/ghi");
307
 
  TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "/ghi", NULL), "/ghi");
308
 
 
309
 
  TEST_MANY((pool, "/", "def", "ghi", NULL), "/def/ghi");
310
 
  TEST_MANY((pool, "abc", "/", "ghi", NULL), "/ghi");
311
 
  TEST_MANY((pool, "abc", "def", "/", NULL), "/");
312
 
  TEST_MANY((pool, "/", "/", "ghi", NULL), "/ghi");
313
 
  TEST_MANY((pool, "/", "/", "/", NULL), "/");
314
 
  TEST_MANY((pool, "/", SVN_EMPTY_PATH, "ghi", NULL), "/ghi");
315
 
  TEST_MANY((pool, "/", "def", SVN_EMPTY_PATH, NULL), "/def");
316
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "/", "ghi", NULL), "/ghi");
317
 
  TEST_MANY((pool, "/", SVN_EMPTY_PATH, SVN_EMPTY_PATH, NULL), "/");
318
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "/", SVN_EMPTY_PATH, NULL), "/");
319
 
  TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "/", NULL), "/");
 
289
  TEST_MANY((pool, "abc", SVN_VA_NULL), "abc");
 
290
  TEST_MANY((pool, "/abc", SVN_VA_NULL), "/abc");
 
291
  TEST_MANY((pool, "/", SVN_VA_NULL), "/");
 
292
 
 
293
  TEST_MANY((pool, "abc", "def", "ghi", SVN_VA_NULL), "abc/def/ghi");
 
294
  TEST_MANY((pool, "abc", "/def", "ghi", SVN_VA_NULL), "/def/ghi");
 
295
  TEST_MANY((pool, "/abc", "def", "ghi", SVN_VA_NULL), "/abc/def/ghi");
 
296
  TEST_MANY((pool, "abc", "def", "/ghi", SVN_VA_NULL), "/ghi");
 
297
  TEST_MANY((pool, "/", "def", "/ghi", SVN_VA_NULL), "/ghi");
 
298
  TEST_MANY((pool, "/", "/def", "/ghi", SVN_VA_NULL), "/ghi");
 
299
 
 
300
  TEST_MANY((pool, SVN_EMPTY_PATH, "def", "ghi", SVN_VA_NULL), "def/ghi");
 
301
  TEST_MANY((pool, "abc", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "abc/ghi");
 
302
  TEST_MANY((pool, "abc", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "abc/def");
 
303
  TEST_MANY((pool, SVN_EMPTY_PATH, "def", SVN_EMPTY_PATH, SVN_VA_NULL), "def");
 
304
  TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "ghi");
 
305
  TEST_MANY((pool, "abc", SVN_EMPTY_PATH, SVN_EMPTY_PATH, SVN_VA_NULL), "abc");
 
306
  TEST_MANY((pool, SVN_EMPTY_PATH, "def", "/ghi", SVN_VA_NULL), "/ghi");
 
307
  TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "/ghi", SVN_VA_NULL), "/ghi");
 
308
 
 
309
  TEST_MANY((pool, "/", "def", "ghi", SVN_VA_NULL), "/def/ghi");
 
310
  TEST_MANY((pool, "abc", "/", "ghi", SVN_VA_NULL), "/ghi");
 
311
  TEST_MANY((pool, "abc", "def", "/", SVN_VA_NULL), "/");
 
312
  TEST_MANY((pool, "/", "/", "ghi", SVN_VA_NULL), "/ghi");
 
313
  TEST_MANY((pool, "/", "/", "/", SVN_VA_NULL), "/");
 
314
  TEST_MANY((pool, "/", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "/ghi");
 
315
  TEST_MANY((pool, "/", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "/def");
 
316
  TEST_MANY((pool, SVN_EMPTY_PATH, "/", "ghi", SVN_VA_NULL), "/ghi");
 
317
  TEST_MANY((pool, "/", SVN_EMPTY_PATH, SVN_EMPTY_PATH, SVN_VA_NULL), "/");
 
318
  TEST_MANY((pool, SVN_EMPTY_PATH, "/", SVN_EMPTY_PATH, SVN_VA_NULL), "/");
 
319
  TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "/", SVN_VA_NULL), "/");
320
320
 
321
321
#ifdef SVN_USE_DOS_PATHS
322
 
  TEST_MANY((pool, "X:/", "def", "ghi", NULL), "X:/def/ghi");
323
 
  TEST_MANY((pool, "abc", "X:/", "ghi", NULL), "X:/ghi");
324
 
  TEST_MANY((pool, "abc", "def", "X:/", NULL), "X:/");
325
 
  TEST_MANY((pool, "X:/", "X:/", "ghi", NULL), "X:/ghi");
326
 
  TEST_MANY((pool, "X:/", "X:/", "/", NULL), "/");
327
 
  TEST_MANY((pool, "X:/", SVN_EMPTY_PATH, "ghi", NULL), "X:/ghi");
328
 
  TEST_MANY((pool, "X:/", "def", SVN_EMPTY_PATH, NULL), "X:/def");
329
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "X:/", "ghi", NULL), "X:/ghi");
330
 
  TEST_MANY((pool, "X:/", SVN_EMPTY_PATH, SVN_EMPTY_PATH, NULL), "X:/");
331
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "X:/", SVN_EMPTY_PATH, NULL), "X:/");
332
 
  TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "X:/", NULL), "X:/");
333
 
 
334
 
  TEST_MANY((pool, "X:", "def", "ghi", NULL), "X:def/ghi");
335
 
  TEST_MANY((pool, "X:", "X:/", "ghi", NULL), "X:/ghi");
336
 
  TEST_MANY((pool, "X:", "X:/", "/", NULL), "/");
337
 
  TEST_MANY((pool, "X:", SVN_EMPTY_PATH, "ghi", NULL), "X:ghi");
338
 
  TEST_MANY((pool, "X:", "def", SVN_EMPTY_PATH, NULL), "X:def");
339
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "X:", "ghi", NULL), "X:ghi");
340
 
  TEST_MANY((pool, "//srv/shr", "def", "ghi", NULL), "//srv/shr/def/ghi");
341
 
  TEST_MANY((pool, "//srv/shr/fld", "def", "ghi", NULL), "//srv/shr/fld/def/ghi");
342
 
  TEST_MANY((pool, "//srv/shr/fld", "def", "//srv/shr", NULL), "//srv/shr");
343
 
  TEST_MANY((pool, "//srv/s r/fld", "def", "//srv/s r", NULL), "//srv/s r");
344
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "//srv/shr/fld", "def", "ghi", NULL), "//srv/shr/fld/def/ghi");
345
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "//srv/shr/fld", "def", "//srv/shr", NULL), "//srv/shr");
346
 
 
347
 
  TEST_MANY((pool, "abcd", "/dir", "A:", "file", NULL), "A:file");
348
 
  TEST_MANY((pool, "abcd", "A:", "/dir", "file", NULL), "A:/dir/file");
 
322
  TEST_MANY((pool, "X:/", "def", "ghi", SVN_VA_NULL), "X:/def/ghi");
 
323
  TEST_MANY((pool, "abc", "X:/", "ghi", SVN_VA_NULL), "X:/ghi");
 
324
  TEST_MANY((pool, "abc", "def", "X:/", SVN_VA_NULL), "X:/");
 
325
  TEST_MANY((pool, "X:/", "X:/", "ghi", SVN_VA_NULL), "X:/ghi");
 
326
  TEST_MANY((pool, "X:/", "X:/", "/", SVN_VA_NULL), "/");
 
327
  TEST_MANY((pool, "X:/", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "X:/ghi");
 
328
  TEST_MANY((pool, "X:/", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "X:/def");
 
329
  TEST_MANY((pool, SVN_EMPTY_PATH, "X:/", "ghi", SVN_VA_NULL), "X:/ghi");
 
330
  TEST_MANY((pool, "X:/", SVN_EMPTY_PATH, SVN_EMPTY_PATH, SVN_VA_NULL), "X:/");
 
331
  TEST_MANY((pool, SVN_EMPTY_PATH, "X:/", SVN_EMPTY_PATH, SVN_VA_NULL), "X:/");
 
332
  TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "X:/", SVN_VA_NULL), "X:/");
 
333
 
 
334
  TEST_MANY((pool, "X:", "def", "ghi", SVN_VA_NULL), "X:def/ghi");
 
335
  TEST_MANY((pool, "X:", "X:/", "ghi", SVN_VA_NULL), "X:/ghi");
 
336
  TEST_MANY((pool, "X:", "X:/", "/", SVN_VA_NULL), "/");
 
337
  TEST_MANY((pool, "X:", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "X:ghi");
 
338
  TEST_MANY((pool, "X:", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "X:def");
 
339
  TEST_MANY((pool, SVN_EMPTY_PATH, "X:", "ghi", SVN_VA_NULL), "X:ghi");
 
340
  TEST_MANY((pool, "//srv/shr", "def", "ghi", SVN_VA_NULL), "//srv/shr/def/ghi");
 
341
  TEST_MANY((pool, "//srv/shr/fld", "def", "ghi", SVN_VA_NULL), "//srv/shr/fld/def/ghi");
 
342
  TEST_MANY((pool, "//srv/shr/fld", "def", "//srv/shr", SVN_VA_NULL), "//srv/shr");
 
343
  TEST_MANY((pool, "//srv/s r/fld", "def", "//srv/s r", SVN_VA_NULL), "//srv/s r");
 
344
  TEST_MANY((pool, SVN_EMPTY_PATH, "//srv/shr/fld", "def", "ghi", SVN_VA_NULL), "//srv/shr/fld/def/ghi");
 
345
  TEST_MANY((pool, SVN_EMPTY_PATH, "//srv/shr/fld", "def", "//srv/shr", SVN_VA_NULL), "//srv/shr");
 
346
 
 
347
  TEST_MANY((pool, "abcd", "/dir", "A:", "file", SVN_VA_NULL), "A:file");
 
348
  TEST_MANY((pool, "abcd", "A:", "/dir", "file", SVN_VA_NULL), "A:/dir/file");
349
349
 
350
350
#else /* !SVN_USE_DOS_PATHS */
351
 
  TEST_MANY((pool, "X:", "def", "ghi", NULL), "X:/def/ghi");
352
 
  TEST_MANY((pool, "X:", SVN_EMPTY_PATH, "ghi", NULL), "X:/ghi");
353
 
  TEST_MANY((pool, "X:", "def", SVN_EMPTY_PATH, NULL), "X:/def");
354
 
  TEST_MANY((pool, SVN_EMPTY_PATH, "X:", "ghi", NULL), "X:/ghi");
 
351
  TEST_MANY((pool, "X:", "def", "ghi", SVN_VA_NULL), "X:/def/ghi");
 
352
  TEST_MANY((pool, "X:", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "X:/ghi");
 
353
  TEST_MANY((pool, "X:", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "X:/def");
 
354
  TEST_MANY((pool, SVN_EMPTY_PATH, "X:", "ghi", SVN_VA_NULL), "X:/ghi");
355
355
#endif /* SVN_USE_DOS_PATHS */
356
356
 
357
357
  /* ### probably need quite a few more tests... */
809
809
    { "http://hst/foo/../bar","http://hst/foo/../bar" },
810
810
    { "http://hst/",          "http://hst" },
811
811
    { "http:///",             "http://" },
 
812
    { "http:///example.com/", "http:///example.com" },
 
813
    { "http:////example.com/", "http:///example.com" },
 
814
    { "http://///////example.com/", "http:///example.com" },
812
815
    { "https://",             "https://" },
813
816
    { "file:///",             "file://" },
814
817
    { "file://",              "file://" },
1109
1112
  static const testcase_is_canonical_t tests[] = {
1110
1113
    { "",                      TRUE },
1111
1114
    { ".",                     FALSE },
 
1115
    { "..",                    TRUE },
1112
1116
    { "/",                     FALSE },
1113
1117
    { "/.",                    FALSE },
1114
1118
    { "./",                    FALSE },
1937
1941
 
1938
1942
      expect_abs = expect;
1939
1943
      if (*expect == '%')
1940
 
        expect_abs = apr_pstrcat(pool, curdir, expect + 1, (char *)NULL);
 
1944
        expect_abs = apr_pstrcat(pool, curdir, expect + 1, SVN_VA_NULL);
1941
1945
#ifdef SVN_USE_DOS_PATHS
1942
1946
      if (*expect == '@')
1943
 
        expect_abs = apr_pstrcat(pool, curdironc, expect + 1, NULL);
 
1947
        expect_abs = apr_pstrcat(pool, curdironc, expect + 1, SVN_VA_NULL);
1944
1948
 
1945
1949
      if (*expect == '$')
1946
 
        expect_abs = apr_pstrcat(pool, curdrive, expect + 1, NULL);
 
1950
        expect_abs = apr_pstrcat(pool, curdrive, expect + 1, SVN_VA_NULL);
1947
1951
 
1948
1952
      /* Remove double '/' when CWD was the root dir (E.g. C:/) */
1949
1953
      expect_abs = svn_dirent_canonicalize(expect_abs, pool);
1987
1991
 
1988
1992
  for (hi = apr_hash_first(pool, dirents); hi; hi = apr_hash_next(hi))
1989
1993
    {
1990
 
      const char *dir = svn__apr_hash_index_key(hi);
1991
 
      svn_io_dirent2_t *de = svn__apr_hash_index_val(hi);
 
1994
      const char *dir = apr_hash_this_key(hi);
 
1995
      svn_io_dirent2_t *de = apr_hash_this_val(hi);
1992
1996
 
1993
1997
      if (de->kind == svn_node_dir &&
1994
1998
          strcmp(dir, current_dir_on_C))
2857
2861
 
2858
2862
/* The test table.  */
2859
2863
 
2860
 
struct svn_test_descriptor_t test_funcs[] =
 
2864
static int max_threads = 1;
 
2865
 
 
2866
static struct svn_test_descriptor_t test_funcs[] =
2861
2867
  {
2862
2868
    SVN_TEST_NULL,
2863
2869
    SVN_TEST_PASS2(test_dirent_is_root,
2958
2964
                    "test match with RFC 6125 s. 6.4.3 Rule 3"),
2959
2965
    SVN_TEST_NULL
2960
2966
  };
 
2967
 
 
2968
SVN_TEST_MAIN