joes        2004/06/25 20:25:10

  Modified:    glue/perl/xsbuilder/Apache/Cookie Cookie_pm
               glue/perl/xsbuilder/Apache/Request Request_pm
               glue/perl/xsbuilder/Apache/Upload Upload_pm
  Log:
  All APR::Table set-type methods (add(), merge(), etc) are unsafe
  in our Apache::*::Table subclasses  These methods need to be
  overridden to prevent segfaults within our C code, which treats
  apr_table entries as being "promotable" to apreq_value_t,
  apreq_param_t or apreq_cookie_t structs.
  
  Revision  Changes    Path
  1.15      +9 -1      httpd-apreq-2/glue/perl/xsbuilder/Apache/Cookie/Cookie_pm
  
  Index: Cookie_pm
  ===================================================================
  RCS file: 
/home/cvs/httpd-apreq-2/glue/perl/xsbuilder/Apache/Cookie/Cookie_pm,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Cookie_pm 19 Jun 2004 15:38:18 -0000      1.14
  +++ Cookie_pm 26 Jun 2004 03:25:10 -0000      1.15
  @@ -6,7 +6,15 @@
   push our(@ISA), __PACKAGE__ -> env;
   
   package Apache::Cookie::Table;
  -push our(@ISA), 'APR::Table';
  +push our(@ISA), "APR::Table";
  +BEGIN {
  +    my @BAD_METHODS = qw/add compress make merge overlap set STORE/;
  +    for (@BAD_METHODS) {
  +        no strict;
  +        next unless my $meth = APR::Table->can($_);
  +        *{$_} = sub {die __PACKAGE__ ."::",  "$_: unsafe operation"};
  +    }
  +}
   
   package Apache::Cookie;
   
  
  
  
  1.11      +9 -1      
httpd-apreq-2/glue/perl/xsbuilder/Apache/Request/Request_pm
  
  Index: Request_pm
  ===================================================================
  RCS file: 
/home/cvs/httpd-apreq-2/glue/perl/xsbuilder/Apache/Request/Request_pm,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Request_pm        14 Jun 2004 02:02:23 -0000      1.10
  +++ Request_pm        26 Jun 2004 03:25:10 -0000      1.11
  @@ -3,7 +3,15 @@
   use APR::Brigade;
   
   package Apache::Request::Table;
  -push our(@ISA), 'APR::Table';
  +push our(@ISA), "APR::Table";
  +BEGIN {
  +    my @BAD_METHODS = qw/add compress make merge overlap set STORE/;
  +    for (@BAD_METHODS) {
  +        no strict;
  +        next unless my $meth = APR::Table->can($_);
  +        *{$_} = sub {die __PACKAGE__ ."::",  "$_: unsafe operation"};
  +    }
  +}
   
   package Apache::Request;
   push our(@ISA), __PACKAGE__ -> env;
  
  
  
  1.3       +9 -1      httpd-apreq-2/glue/perl/xsbuilder/Apache/Upload/Upload_pm
  
  Index: Upload_pm
  ===================================================================
  RCS file: 
/home/cvs/httpd-apreq-2/glue/perl/xsbuilder/Apache/Upload/Upload_pm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Upload_pm 19 Jun 2004 15:38:18 -0000      1.2
  +++ Upload_pm 26 Jun 2004 03:25:10 -0000      1.3
  @@ -5,4 +5,12 @@
   use APR::PerlIO;
   
   package Apache::Upload::Table;
  -push our(@ISA), 'APR::Table';
  +push our(@ISA), "APR::Table";
  +BEGIN {
  +    my @BAD_METHODS = qw/add compress make merge overlap set STORE/;
  +    for (@BAD_METHODS) {
  +        no strict;
  +        next unless my $meth = APR::Table->can($_);
  +        *{$_} = sub {die __PACKAGE__ ."::",  "$_: unsafe operation"};
  +    }
  +}
  
  
  

Reply via email to