OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-src                      Date:   16-Dec-2004 21:24:43
  Branch: OPENPKG_2_1_SOLID                Handle: 2004121620244200

  Modified files:           (Branch: OPENPKG_2_1_SOLID)
    openpkg-src/php         php.patch php.spec

  Log:
    Shit happens: one hunk too much, others missing plus a whole file not
    patched

  Summary:
    Revision    Changes     Path
    1.7.2.3     +151 -14    openpkg-src/php/php.patch
    1.84.2.6    +1  -1      openpkg-src/php/php.spec
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/php/php.patch
  ============================================================================
  $ cvs diff -u -r1.7.2.2 -r1.7.2.3 php.patch
  --- openpkg-src/php/php.patch 16 Dec 2004 16:54:25 -0000      1.7.2.2
  +++ openpkg-src/php/php.patch 16 Dec 2004 20:24:42 -0000      1.7.2.3
  @@ -114,7 +114,7 @@
   
   o CAN-2004-1063:
     safe_mode execution directory bypass.
  -  (ext/standard/link.c)
  +  (ext/standard/link.c, TSRM/tsrm_virtual_cwd.c)
   
   o CAN-2004-1064:
     arbitrary file access through path truncation.
  @@ -272,7 +272,7 @@
                                break;
   Index: ext/standard/var_unserializer.re
   --- ext/standard/var_unserializer.re.orig    2004-03-27 02:17:06 +0100
  -+++ ext/standard/var_unserializer.re 2004-12-16 17:20:05 +0100
  ++++ ext/standard/var_unserializer.re 2004-12-16 21:09:57 +0100
   @@ -62,7 +62,7 @@
    
        if (!var_hash) return !SUCCESS;
  @@ -307,18 +307,35 @@
                                zend_hash_update(ht, Z_STRVAL_P(key), 
Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);
                                break;
    
  -@@ -311,6 +317,8 @@
  -     } else {
  -             str = estrndup(YYCURSOR, len);
  +@@ -398,7 +404,6 @@
  + #ifdef ZEND_ENGINE_2
  +                                     ce = *(zend_class_entry **)ce; /* Bad 
hack, TBF! */
  + #endif      
  +-                                    efree(class_name);
  +                             }
  +                     }
  +             }
  +@@ -406,7 +411,6 @@
  + #ifdef ZEND_ENGINE_2
  +             ce = *(zend_class_entry **)ce; /* Bad hack, TBF! */
  + #endif      
  +-            efree(class_name);
        }
  -+    
  -+    if (*rval == *rval_ref) return 0;
    
  -     YYCURSOR += len + 2;
        *p = YYCURSOR;
  +@@ -414,8 +418,8 @@
  + 
  +     if (incomplete_class) {
  +             php_store_class_name(*rval, class_name, len2 TSRMLS_CC);
  +-            efree(class_name);
  +     }
  ++    efree(class_name);
  + 
  +     return object_common2(UNSERIALIZE_PASSTHRU, elements);
  + }
   Index: ext/standard/var_unserializer.c
   --- ext/standard/var_unserializer.c.orig     2004-07-13 16:53:12 +0200
  -+++ ext/standard/var_unserializer.c  2004-12-16 17:20:05 +0100
  ++++ ext/standard/var_unserializer.c  2004-12-16 21:10:16 +0100
   @@ -63,7 +63,7 @@
    
        if (!var_hash) return !SUCCESS;
  @@ -353,15 +370,32 @@
                                zend_hash_update(ht, Z_STRVAL_P(key), 
Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);
                                break;
    
  -@@ -566,6 +572,8 @@
  -             str = estrndup(YYCURSOR, len);
  +@@ -435,7 +441,6 @@
  + #ifdef ZEND_ENGINE_2
  +                                     ce = *(zend_class_entry **)ce; /* Bad 
hack, TBF! */
  + #endif      
  +-                                    efree(class_name);
  +                             }
  +                     }
  +             }
  +@@ -443,7 +448,6 @@
  + #ifdef ZEND_ENGINE_2
  +             ce = *(zend_class_entry **)ce; /* Bad hack, TBF! */
  + #endif      
  +-            efree(class_name);
        }
    
  -+    if (*rval == *rval_ref) return 0;
  -+
  -     YYCURSOR += len + 2;
        *p = YYCURSOR;
  +@@ -451,8 +455,8 @@
  + 
  +     if (incomplete_class) {
  +             php_store_class_name(*rval, class_name, len2 TSRMLS_CC);
  +-            efree(class_name);
  +     }
  ++    efree(class_name);
    
  +     return object_common2(UNSERIALIZE_PASSTHRU, elements);
  + }
   Index: main/php.h
   --- main/php.h.orig  2003-09-25 01:22:32 +0200
   +++ main/php.h       2004-12-16 17:20:05 +0100
  @@ -489,3 +523,106 @@
                        if (s && s > filename) {
                                safe_php_register_variable(lbuf, s+1, NULL, 0 
TSRMLS_CC);
                        } else {
  +Index: TSRM/tsrm_virtual_cwd.c
  +--- TSRM/tsrm_virtual_cwd.c.orig     2003-07-28 20:35:34 +0200
  ++++ TSRM/tsrm_virtual_cwd.c  2004-12-16 21:15:08 +0100
  +@@ -301,15 +301,22 @@
  + 
  +     if (path_length == 0) 
  +             return (0);
  ++    if (path_length >= MAXPATHLEN)
  ++            return (1);
  + 
  + #if !defined(TSRM_WIN32) && !defined(NETWARE)
  +     /* cwd_length can be 0 when getcwd() fails.
  +      * This can happen under solaris when a dir does not have read 
permissions
  +      * but *does* have execute permissions */
  +     if (IS_ABSOLUTE_PATH(path, path_length) || (state->cwd_length < 1)) {
  +-            if (use_realpath && realpath(path, resolved_path)) {
  +-                    path = resolved_path;
  +-                    path_length = strlen(path);
  ++            if (use_realpath) {
  ++                    if (realpath(path, resolved_path)) {
  ++                            path = resolved_path;
  ++                            path_length = strlen(path);
  ++                    } else {
  ++                            /* disable for now
  ++                            return 1; */
  ++                    }
  +             }
  +     } else { /* Concat current directory with relative path and then run 
realpath() on it */
  +             char *tmp;
  +@@ -325,9 +332,19 @@
  +             memcpy(ptr, path, path_length);
  +             ptr += path_length;
  +             *ptr = '\0';
  +-            if (use_realpath && realpath(tmp, resolved_path)) {
  +-                    path = resolved_path;
  +-                    path_length = strlen(path);
  ++            if (strlen(tmp) >= MAXPATHLEN) {
  ++                    free(tmp);
  ++                    return 1;
  ++            }
  ++            if (use_realpath) {
  ++                    if (realpath(tmp, resolved_path)) {
  ++                            path = resolved_path;
  ++                            path_length = strlen(path);
  ++                    } else {
  ++                            /* disable for now
  ++                            free(tmp);
  ++                            return 1; */
  ++                    }
  +             }
  +             free(tmp);
  +     }
  +@@ -818,13 +835,24 @@
  + CWD_API FILE *virtual_popen(const char *command, const char *type TSRMLS_DC)
  + {
  +     int command_length;
  ++    int dir_length, extra = 0;
  +     char *command_line;
  +-    char *ptr;
  ++    char *ptr, *dir;
  +     FILE *retval;
  + 
  +     command_length = strlen(command);
  + 
  +-    ptr = command_line = (char *) malloc(command_length + sizeof("cd  ; ") 
+ CWDG(cwd).cwd_length+1);
  ++    dir_length = CWDG(cwd).cwd_length;
  ++    dir = CWDG(cwd).cwd;
  ++    while (dir_length > 0) {
  ++            if (*dir == '\'') extra+=3;
  ++            dir++;
  ++            dir_length--;
  ++    }
  ++    dir_length = CWDG(cwd).cwd_length;
  ++    dir = CWDG(cwd).cwd;
  ++
  ++    ptr = command_line = (char *) malloc(command_length + sizeof("cd '' ; 
") + dir_length +1+1);
  +     if (!command_line) {
  +             return NULL;
  +     }
  +@@ -834,8 +862,21 @@
  +     if (CWDG(cwd).cwd_length == 0) {
  +             *ptr++ = DEFAULT_SLASH;
  +     } else {
  +-            memcpy(ptr, CWDG(cwd).cwd, CWDG(cwd).cwd_length);
  +-            ptr += CWDG(cwd).cwd_length;
  ++            *ptr++ = '\'';
  ++            while (dir_length > 0) {
  ++                    switch (*dir) {
  ++                    case '\'':
  ++                            *ptr++ = '\'';
  ++                            *ptr++ = '\\';
  ++                            *ptr++ = '\'';
  ++                            /* fall-through */
  ++                    default:
  ++                            *ptr++ = *dir;
  ++                    }
  ++                    dir++;
  ++                    dir_length--;
  ++            }
  ++            *ptr++ = '\'';
  +     }
  +     
  +     *ptr++ = ' ';
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/php/php.spec
  ============================================================================
  $ cvs diff -u -r1.84.2.5 -r1.84.2.6 php.spec
  --- openpkg-src/php/php.spec  16 Dec 2004 16:54:25 -0000      1.84.2.5
  +++ openpkg-src/php/php.spec  16 Dec 2004 20:24:42 -0000      1.84.2.6
  @@ -38,7 +38,7 @@
   Group:        Language
   License:      PHP
   Version:      %{V_php}
  -Release:      2.1.3
  +Release:      2.1.4
   
   #   package options
   %option       with_bc                   no
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [EMAIL PROTECTED]

Reply via email to