Hello community, here is the log from the commit of package inn checked in at Fri Jul 11 22:30:33 CEST 2008. -------- --- inn/inn.changes 2008-06-19 12:48:11.000000000 +0200 +++ inn/inn.changes 2008-07-10 17:14:59.782851000 +0200 @@ -1,0 +2,5 @@ +Thu Jul 10 17:01:48 CEST 2008 - mls@suse.de + +- fix segfault in perl_call_argv [bnc#405186] + +------------------------------------------------------------------- New: ---- inn-perl-call-argv.dif ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ inn.spec ++++++ --- /var/tmp/diff_new_pack.A24722/_old 2008-07-11 22:26:09.000000000 +0200 +++ /var/tmp/diff_new_pack.A24722/_new 2008-07-11 22:26:09.000000000 +0200 @@ -21,7 +21,7 @@ PreReq: perl %fillup_prereq %insserv_prereq permissions AutoReqProv: on Version: 2.4.2 -Release: 166 +Release: 170 %define PatchVersion -%{version} Source: inn%{PatchVersion}.tar.bz2 Source1: doc-inn.tar.bz2 @@ -29,6 +29,7 @@ Source3: inn-emptydb.tar.gz Source4: inn.reg Patch: inn-%{version}.dif +Patch1: inn-perl-call-argv.dif # BuildRoot: %{_tmppath}/%{name}-%{version}-build # @@ -86,7 +87,7 @@ %setup -n inn%{PatchVersion} %setup -n inn%{PatchVersion} -D -T -a 1 %setup -n inn%{PatchVersion} -D -T -a 3 -%patch -P 0 +%patch -P 0 -P 1 cp -a $RPM_SOURCE_DIR/pubring.pgp . %build @@ -291,6 +292,8 @@ %doc %{_mandir}/*/[ri]news.* %changelog +* Thu Jul 10 2008 mls@suse.de +- fix segfault in perl_call_argv [bnc#405186] * Thu Jun 19 2008 werner@suse.de - Add missing Provides to the init script * Wed May 30 2007 mls@suse.de ++++++ inn-perl-call-argv.dif ++++++ --- ./innd/perl.c.orig 2008-07-10 14:57:22.000000000 +0000 +++ ./innd/perl.c 2008-07-10 14:57:45.000000000 +0000 @@ -246,10 +246,12 @@ PLstats(void) else { char *stats = NULL; char *result; + char *argv[1]; ENTER; SAVETMPS; - perl_call_argv("filter_stats", G_EVAL | G_NOARGS, NULL); + argv[0] = NULL; + perl_call_argv("filter_stats", G_EVAL | G_NOARGS, argv); SPAGAIN; result = POPp; if (result != NULL && *result) --- ./lib/perl.c.orig 2008-07-10 14:54:29.000000000 +0000 +++ ./lib/perl.c 2008-07-10 14:56:52.000000000 +0000 @@ -69,9 +69,11 @@ PerlFilter(bool value) if (!value) { /* Execute an end function, if one is defined. */ if (perl_get_cv("filter_end", false) != NULL) { + char *argv[1] ; ENTER; SAVETMPS; - perl_call_argv("filter_end", G_EVAL | G_DISCARD | G_NOARGS, NULL); + argv[0] = NULL; + perl_call_argv("filter_end", G_EVAL | G_DISCARD | G_NOARGS, argv); if (SvTRUE(ERRSV)) { syslog (L_ERROR, "SERVER perl function filter_end died: %s", SvPV(ERRSV, PL_na)); @@ -172,11 +174,9 @@ int PERLreadfilter(char *filterfile, con ENTER ; SAVETMPS ; - argv[0] = filterfile ; - argv[1] = NULL ; - if (perl_get_cv("filter_before_reload", false) != NULL) { - perl_call_argv("filter_before_reload",G_EVAL|G_DISCARD|G_NOARGS,NULL); + argv[0] = NULL; + perl_call_argv("filter_before_reload",G_EVAL|G_DISCARD|G_NOARGS,argv); if (SvTRUE(ERRSV)) /* check $@ */ { syslog (L_ERROR,"SERVER perl function filter_before_reload died: %s", SvPV(ERRSV, PL_na)) ; @@ -185,6 +185,9 @@ int PERLreadfilter(char *filterfile, con } } + argv[0] = filterfile ; + argv[1] = NULL ; + PerlSilence(); perl_call_argv ("_load_", 0, argv) ; PerlUnSilence(); @@ -210,7 +213,8 @@ int PERLreadfilter(char *filterfile, con } if (perl_get_cv("filter_after_reload", false) != NULL) { - perl_call_argv("filter_after_reload", G_EVAL|G_DISCARD|G_NOARGS, NULL); + argv[0] = NULL ; + perl_call_argv("filter_after_reload", G_EVAL|G_DISCARD|G_NOARGS, argv); if (SvTRUE(ERRSV)) /* check $@ */ { syslog (L_ERROR,"SERVER perl function filter_after_reload died: %s", SvPV(ERRSV, PL_na)) ; --- ./nnrpd/perl.c.orig 2008-07-10 14:57:58.000000000 +0000 +++ ./nnrpd/perl.c 2008-07-10 14:58:32.000000000 +0000 @@ -63,6 +63,7 @@ char *HandleHeaders(char *article) HE *scan; SV *modswitch; int OtherSize; + char *argv[1]; if(!PerlLoaded) { loadPerl(); @@ -112,7 +113,8 @@ char *HandleHeaders(char *article) sv_setpv(body, article); /* Call the filtering function */ - rc = perl_call_argv("filter_post", G_EVAL|G_SCALAR, NULL); + argv[0] = NULL; + rc = perl_call_argv("filter_post", G_EVAL|G_SCALAR, argv); SPAGAIN; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org