perl-modperl-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s...@apache.org
Subject cvs commit: modperl-2.0 Changes
Date Sat, 14 Feb 2004 01:38:05 GMT
stas        2004/02/13 17:38:05

  Modified:    src/modules/perl modperl_config.c
               .        Changes
  Log:
  Fix the corruption of the httpd process argv[0], caused by $0
  manipulating
  
  Revision  Changes    Path
  1.76      +13 -2     modperl-2.0/src/modules/perl/modperl_config.c
  
  Index: modperl_config.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -u -r1.75 -r1.76
  --- modperl_config.c	12 Feb 2004 02:05:28 -0000	1.75
  +++ modperl_config.c	14 Feb 2004 01:38:05 -0000	1.76
  @@ -178,8 +178,19 @@
   #ifdef MP_USE_GTOP
       scfg->gtop = modperl_gtop_new(p);
   #endif        
  -    
  -    modperl_config_srv_argv_push((char *)ap_server_argv0);
  +
  +    /* must copy ap_server_argv0, because otherwise any read/write of
  +     * $0 corrupts process' argv[0] (visible with 'ps -ef' on most
  +     * unices). This is due to the logic of calculating PL_origalen in
  +     * perl_parse, which is later used in set_mg.c:Perl_magic_set() to
  +     * truncate the argv[0] setting. remember that argv[0] passed to
  +     * perl_parse() != process's real argv[0].
  +     *
  +     * as a copying side-effect, changing $0 now doesn't affect the
  +     * way the process is seen from the outside.
  +     */
  +    modperl_config_srv_argv_push(apr_pstrmemdup(p, ap_server_argv0,
  +                                                strlen(ap_server_argv0)));
   
       MP_TRACE_d(MP_FUNC, "new scfg: 0x%lx\n", (unsigned long)scfg);
   
  
  
  
  1.330     +3 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.329
  retrieving revision 1.330
  diff -u -u -r1.329 -r1.330
  --- Changes	13 Feb 2004 22:32:23 -0000	1.329
  +++ Changes	14 Feb 2004 01:38:05 -0000	1.330
  @@ -12,6 +12,9 @@
   
   =item 1.99_13-dev
   
  +Fix the corruption of the httpd process argv[0], caused by $0
  +manipulating [Stas]
  +
   ModPerl::MethodLookup::lookup_method now handles sub-classed objects
   [Stas]
   
  
  
  

Mime
View raw message