Author: stsp
Date: Tue Oct 8 09:16:50 2024
New Revision: 1921181
URL: http://svn.apache.org/viewvc?rev=1921181&view=rev
Log:
Committing the fix for CVE-2024-45720 to trunk.
(detailed log message remains to be filled in here)
Patch by: kotkov, jun66j5
Modified:
subversion/trunk/build.conf
subversion/trunk/subversion/include/private/svn_cmdline_private.h
subversion/trunk/subversion/libsvn_subr/cmdline.c
subversion/trunk/subversion/svn/svn.c
subversion/trunk/subversion/svnadmin/svnadmin.c
subversion/trunk/subversion/svnbench/svnbench.c
subversion/trunk/subversion/svndumpfilter/svndumpfilter.c
subversion/trunk/subversion/svnfsfs/svnfsfs.c
subversion/trunk/subversion/svnlook/svnlook.c
subversion/trunk/subversion/svnmucc/svnmucc.c
subversion/trunk/subversion/svnrdump/svnrdump.c
subversion/trunk/subversion/svnserve/svnserve.c
subversion/trunk/subversion/svnsync/svnsync.c
subversion/trunk/subversion/svnversion/svnversion.c
subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
subversion/trunk/tools/client-side/svnconflict/svnconflict.c
subversion/trunk/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
subversion/trunk/tools/dev/wc-ng/svn-wc-db-tester.c
subversion/trunk/tools/server-side/svnauthz.c
Modified: subversion/trunk/build.conf
URL:
http://svn.apache.org/viewvc/subversion/trunk/build.conf?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/build.conf (original)
+++ subversion/trunk/build.conf Tue Oct 8 09:16:50 2024
@@ -150,7 +150,7 @@ libs = libsvn_client libsvn_wc libsvn_ra
apriconv apr
manpages = subversion/svn/svn.1
install = bin
-msvc-libs = setargv.obj
+msvc-libs = wsetargv.obj
# The subversion repository administration tool
[svnadmin]
@@ -160,7 +160,7 @@ path = subversion/svnadmin
install = bin
manpages = subversion/svnadmin/svnadmin.1
libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr
-msvc-libs = setargv.obj
+msvc-libs = wsetargv.obj
# The subversion repository dump filtering tool
[svndumpfilter]
Modified: subversion/trunk/subversion/include/private/svn_cmdline_private.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_cmdline_private.h?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_cmdline_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_cmdline_private.h Tue Oct
8 09:16:50 2024
@@ -278,6 +278,34 @@ svn_cmdline__stdin_readline(const char *
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+#if defined(WIN32)
+/* Normalizes Windows-specific command line arguments, such as those passed
+ to wmain(), to the environment-specific code page. */
+svn_error_t *
+svn_cmdline__win32_get_cstring_argv(const char **cstring_argv_p[],
+ int argc,
+ const wchar_t *argv[],
+ apr_pool_t *result_pool);
+#endif
+
+/* Default platform-agnostic handler that normalizes command line arguments
+ to the environment-specific code page. */
+svn_error_t *
+svn_cmdline__default_get_cstring_argv(const char **cstring_argv_p[],
+ int argc,
+ const char *argv[],
+ apr_pool_t *result_pool);
+
+#if defined(WIN32) && defined(_MSC_VER)
+typedef wchar_t svn_cmdline__argv_char_t;
+#define SVN_CMDLINE__MAIN wmain
+#define svn_cmdline__get_cstring_argv svn_cmdline__win32_get_cstring_argv
+#else
+typedef char svn_cmdline__argv_char_t;
+#define SVN_CMDLINE__MAIN main
+#define svn_cmdline__get_cstring_argv svn_cmdline__default_get_cstring_argv
+#endif
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/trunk/subversion/libsvn_subr/cmdline.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/cmdline.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/cmdline.c (original)
+++ subversion/trunk/subversion/libsvn_subr/cmdline.c Tue Oct 8 09:16:50 2024
@@ -1898,3 +1898,60 @@ svn_cmdline__cancellation_exit(void)
#endif
}
}
+
+#if defined(WIN32)
+
+svn_error_t *
+svn_cmdline__win32_get_cstring_argv(const char **cstring_argv_p[],
+ int argc,
+ const wchar_t *argv[],
+ apr_pool_t *result_pool)
+{
+ apr_array_header_t *cstring_argv;
+ int i;
+
+ cstring_argv = apr_array_make(result_pool, argc + 1, sizeof(const char *));
+
+ for (i = 0; i < argc; i++)
+ {
+ const wchar_t *arg = argv[i];
+ char *cstring_arg;
+ int rv;
+
+ /* Passing -1 for the string length guarantees that the returned length
+ will account for a terminating null character. */
+ rv = WideCharToMultiByte(CP_ACP, 0, arg, -1, NULL, 0, NULL, NULL);
+ if (rv <= 0)
+ {
+ return svn_error_wrap_apr(apr_get_os_error(),
+ _("Conversion from UTF-16 failed"));
+ }
+
+ cstring_arg = apr_palloc(result_pool, rv);
+ rv = WideCharToMultiByte(CP_ACP, 0, arg, -1, cstring_arg, rv, NULL,
NULL);
+ if (rv <= 0)
+ {
+ return svn_error_wrap_apr(apr_get_os_error(),
+ _("Conversion from UTF-16 failed"));
+ }
+
+ APR_ARRAY_PUSH(cstring_argv, const char *) = cstring_arg;
+ }
+
+ APR_ARRAY_PUSH(cstring_argv, const char *) = NULL;
+
+ *cstring_argv_p = (const char **)cstring_argv->elts;
+ return SVN_NO_ERROR;
+}
+
+#endif
+
+svn_error_t *
+svn_cmdline__default_get_cstring_argv(const char **cstring_argv_p[],
+ int argc,
+ const char *argv[],
+ apr_pool_t *result_pool)
+{
+ *cstring_argv_p = argv;
+ return SVN_NO_ERROR;
+}
Modified: subversion/trunk/subversion/svn/svn.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/svn.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/svn.c (original)
+++ subversion/trunk/subversion/svn/svn.c Tue Oct 8 09:16:50 2024
@@ -2200,7 +2200,10 @@ parse_compatible_version(svn_cl__opt_sta
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
int opt_id;
@@ -2226,12 +2229,15 @@ sub_main(int *exit_code, int argc, const
apr_hash_t *cfg_hash;
svn_membuf_t buf;
svn_boolean_t read_pass_from_stdin = FALSE;
+ const char **argv;
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
#if defined(WIN32) || defined(__CYGWIN__)
/* Set the working copy administrative directory name. */
if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -3444,7 +3450,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnadmin/svnadmin.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnadmin/svnadmin.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnadmin/svnadmin.c (original)
+++ subversion/trunk/subversion/svnadmin/svnadmin.c Tue Oct 8 09:16:50 2024
@@ -3053,7 +3053,10 @@ subcommand_build_repcache(apr_getopt_t *
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
apr_status_t apr_err;
@@ -3065,12 +3068,15 @@ sub_main(int *exit_code, int argc, const
apr_array_header_t *received_opts;
int i;
svn_boolean_t dash_F_arg = FALSE;
+ const char **argv;
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
/* Initialize the FS library. */
SVN_ERR(svn_fs_initialize(pool));
@@ -3450,7 +3456,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnbench/svnbench.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnbench/svnbench.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnbench/svnbench.c (original)
+++ subversion/trunk/subversion/svnbench/svnbench.c Tue Oct 8 09:16:50 2024
@@ -386,7 +386,10 @@ add_search_pattern_group(svn_cl__opt_sta
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
int opt_id;
@@ -405,6 +408,7 @@ sub_main(int *exit_code, int argc, const
ra_progress_baton_t ra_progress_baton = {0};
svn_membuf_t buf;
svn_boolean_t read_pass_from_stdin = FALSE;
+ const char **argv;
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
@@ -414,6 +418,8 @@ sub_main(int *exit_code, int argc, const
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
#if defined(WIN32) || defined(__CYGWIN__)
/* Set the working copy administrative directory name. */
if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -979,7 +985,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svndumpfilter/svndumpfilter.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svndumpfilter/svndumpfilter.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svndumpfilter/svndumpfilter.c (original)
+++ subversion/trunk/subversion/svndumpfilter/svndumpfilter.c Tue Oct 8
09:16:50 2024
@@ -1291,7 +1291,10 @@ subcommand_include(apr_getopt_t *os, voi
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
apr_status_t apr_err;
@@ -1302,10 +1305,13 @@ sub_main(int *exit_code, int argc, const
int opt_id;
apr_array_header_t *received_opts;
int i;
+ const char **argv;
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
/* Initialize the FS library. */
@@ -1564,7 +1570,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnfsfs/svnfsfs.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnfsfs/svnfsfs.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnfsfs/svnfsfs.c (original)
+++ subversion/trunk/subversion/svnfsfs/svnfsfs.c Tue Oct 8 09:16:50 2024
@@ -228,7 +228,10 @@ subcommand__help(apr_getopt_t *os, void
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
apr_status_t apr_err;
@@ -239,12 +242,15 @@ sub_main(int *exit_code, int argc, const
int opt_id;
apr_array_header_t *received_opts;
int i;
+ const char **argv;
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
/* Initialize the FS library. */
SVN_ERR(svn_fs_initialize(pool));
@@ -473,7 +479,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnlook/svnlook.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnlook/svnlook.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnlook/svnlook.c (original)
+++ subversion/trunk/subversion/svnlook/svnlook.c Tue Oct 8 09:16:50 2024
@@ -2466,7 +2466,10 @@ subcommand_uuid(apr_getopt_t *os, void *
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
apr_status_t apr_err;
@@ -2477,12 +2480,15 @@ sub_main(int *exit_code, int argc, const
int opt_id;
apr_array_header_t *received_opts;
int i;
+ const char **argv;
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
/* Initialize the FS library. */
SVN_ERR(svn_fs_initialize(pool));
@@ -2850,7 +2856,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnmucc/svnmucc.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnmucc/svnmucc.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnmucc/svnmucc.c (original)
+++ subversion/trunk/subversion/svnmucc/svnmucc.c Tue Oct 8 09:16:50 2024
@@ -467,7 +467,10 @@ log_message_func(const char **log_msg,
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
apr_array_header_t *actions = apr_array_make(pool, 1,
sizeof(struct action *));
@@ -533,10 +536,13 @@ sub_main(int *exit_code, int argc, const
struct log_message_baton lmb;
int i;
svn_boolean_t read_pass_from_stdin = FALSE;
+ const char **argv;
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
/* Initialize the RA library. */
SVN_ERR(svn_ra_initialize(pool));
@@ -980,7 +986,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnrdump/svnrdump.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/svnrdump.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/svnrdump.c (original)
+++ subversion/trunk/subversion/svnrdump/svnrdump.c Tue Oct 8 09:16:50 2024
@@ -784,7 +784,10 @@ validate_and_resolve_revisions(opt_baton
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err = SVN_NO_ERROR;
const svn_opt_subcommand_desc3_t *subcommand = NULL;
@@ -806,6 +809,9 @@ sub_main(int *exit_code, int argc, const
apr_array_header_t *received_opts;
int i;
svn_boolean_t read_pass_from_stdin = FALSE;
+ const char **argv;
+
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
opt_baton = apr_pcalloc(pool, sizeof(*opt_baton));
opt_baton->start_revision.kind = svn_opt_revision_unspecified;
@@ -1155,7 +1161,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnserve/svnserve.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnserve/svnserve.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnserve/svnserve.c (original)
+++ subversion/trunk/subversion/svnserve/svnserve.c Tue Oct 8 09:16:50 2024
@@ -721,7 +721,10 @@ check_lib_versions(void)
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
enum run_mode run_mode = run_mode_unspecified;
svn_boolean_t foreground = FALSE;
@@ -760,6 +763,8 @@ sub_main(int *exit_code, int argc, const
svn_node_kind_t kind;
apr_size_t min_thread_count = THREADPOOL_MIN_SIZE;
apr_size_t max_thread_count = THREADPOOL_MAX_SIZE;
+ const char **argv;
+
#ifdef SVN_HAVE_SASL
SVN_ERR(cyrus_init(pool));
#endif
@@ -767,6 +772,8 @@ sub_main(int *exit_code, int argc, const
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
/* Initialize the FS library. */
SVN_ERR(svn_fs_initialize(pool));
@@ -1422,7 +1429,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnsync/svnsync.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnsync/svnsync.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnsync/svnsync.c (original)
+++ subversion/trunk/subversion/svnsync/svnsync.c Tue Oct 8 09:16:50 2024
@@ -1963,7 +1963,10 @@ help_cmd(apr_getopt_t *os, void *baton,
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
const svn_opt_subcommand_desc3_t *subcommand = NULL;
apr_array_header_t *received_opts;
@@ -1978,10 +1981,13 @@ sub_main(int *exit_code, int argc, const
apr_array_header_t *config_options = NULL;
const char *source_prop_encoding = NULL;
svn_boolean_t force_interactive = FALSE;
+ const char **argv;
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
SVN_ERR(svn_ra_initialize(pool));
/* Initialize the option baton. */
@@ -2402,7 +2408,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/subversion/svnversion/svnversion.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnversion/svnversion.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/subversion/svnversion/svnversion.c (original)
+++ subversion/trunk/subversion/svnversion/svnversion.c Tue Oct 8 09:16:50 2024
@@ -124,7 +124,10 @@ check_lib_versions(void)
* program. Obviously we don't want to have to run svn when building svn.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
const char *wc_path, *trail_url;
const char *local_abspath;
@@ -146,10 +149,13 @@ sub_main(int *exit_code, int argc, const
N_("no progress (only errors) to stderr")},
{0, 0, 0, 0}
};
+ const char **argv;
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
#if defined(WIN32) || defined(__CYGWIN__)
/* Set the working copy administrative directory name. */
if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -289,7 +295,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified:
subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
---
subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
(original)
+++
subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
Tue Oct 8 09:16:50 2024
@@ -408,7 +408,10 @@ svn_min__check_cancel(void *baton)
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
int opt_id;
@@ -425,12 +428,15 @@ sub_main(int *exit_code, int argc, const
svn_boolean_t force_interactive = FALSE;
apr_hash_t *cfg_hash;
svn_boolean_t read_pass_from_stdin = FALSE;
+ const char **argv;
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
#if defined(WIN32) || defined(__CYGWIN__)
/* Set the working copy administrative directory name. */
if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -946,7 +952,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/tools/client-side/svnconflict/svnconflict.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/client-side/svnconflict/svnconflict.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/tools/client-side/svnconflict/svnconflict.c (original)
+++ subversion/trunk/tools/client-side/svnconflict/svnconflict.c Tue Oct 8
09:16:50 2024
@@ -632,7 +632,10 @@ svnconflict_resolve_tree(apr_getopt_t *o
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
int opt_id;
@@ -647,12 +650,15 @@ sub_main(int *exit_code, int argc, const
svn_config_t *cfg_config;
apr_hash_t *cfg_hash;
svn_boolean_t read_pass_from_stdin = FALSE;
+ const char **argv;
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
#if defined(WIN32) || defined(__CYGWIN__)
/* Set the working copy administrative directory name. */
if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -949,7 +955,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
(original)
+++ subversion/trunk/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c Tue
Oct 8 09:16:50 2024
@@ -302,7 +302,10 @@ check_lib_versions(void)
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
apr_getopt_t *os;
const apr_getopt_option_t options[] =
@@ -313,10 +316,13 @@ sub_main(int *exit_code, int argc, const
{0, 0, 0, 0}
};
apr_array_header_t *remaining_argv;
+ const char **argv;
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
#if defined(WIN32) || defined(__CYGWIN__)
/* Set the working copy administrative directory name. */
if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -383,7 +389,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/tools/dev/wc-ng/svn-wc-db-tester.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/dev/wc-ng/svn-wc-db-tester.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/tools/dev/wc-ng/svn-wc-db-tester.c (original)
+++ subversion/trunk/tools/dev/wc-ng/svn-wc-db-tester.c Tue Oct 8 09:16:50 2024
@@ -156,7 +156,10 @@ check_lib_versions(void)
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
apr_getopt_t *os;
const apr_getopt_option_t options[] =
@@ -167,10 +170,13 @@ sub_main(int *exit_code, int argc, const
{0, 0, 0, 0}
};
apr_array_header_t *remaining_argv;
+ const char **argv;
/* Check library versions */
SVN_ERR(check_lib_versions());
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
#if defined(WIN32) || defined(__CYGWIN__)
/* Set the working copy administrative directory name. */
if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -237,7 +243,7 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
Modified: subversion/trunk/tools/server-side/svnauthz.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/server-side/svnauthz.c?rev=1921181&r1=1921180&r2=1921181&view=diff
==============================================================================
--- subversion/trunk/tools/server-side/svnauthz.c (original)
+++ subversion/trunk/tools/server-side/svnauthz.c Tue Oct 8 09:16:50 2024
@@ -490,7 +490,10 @@ canonicalize_access_file(const char **ca
* return SVN_NO_ERROR.
*/
static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+ int argc,
+ const svn_cmdline__argv_char_t *cmdline_argv[],
+ apr_pool_t *pool)
{
svn_error_t *err;
@@ -499,6 +502,9 @@ sub_main(int *exit_code, int argc, const
apr_getopt_t *os;
apr_array_header_t *received_opts;
int i;
+ const char **argv;
+
+ SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
/* Initialize the FS library. */
SVN_ERR(svn_fs_initialize(pool));
@@ -752,14 +758,14 @@ sub_main(int *exit_code, int argc, const
}
int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
{
apr_pool_t *pool;
int exit_code = EXIT_SUCCESS;
svn_error_t *err;
/* Initialize the app. Send all error messages to 'stderr'. */
- if (svn_cmdline_init(argv[0], stderr) != EXIT_SUCCESS)
+ if (svn_cmdline_init("svnauthz", stderr) != EXIT_SUCCESS)
return EXIT_FAILURE;
pool = svn_pool_create(NULL);