pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/mail/php-imap Patch around imap_header() dying with SI...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/84a00cb08a27
branches:  trunk
changeset: 539395:84a00cb08a27
user:      sborrill <sborrill%pkgsrc.org@localhost>
date:      Tue Mar 04 17:13:49 2008 +0000

description:
Patch around imap_header() dying with SIGABRT if recipient lists are too
long. Patch appended to PHP bug 42862, so the fix may be incorporated in
later PHP releases and thus this patch can be reverted.

http://bugs.php.net/bug.php?id=42862

Bump PKGREVISION of php-imap

diffstat:

 lang/php5/patches/patch-ak |  150 +++++++++++++++++++++++++++++++++++++++++++-
 mail/php-imap/Makefile     |    4 +-
 2 files changed, 147 insertions(+), 7 deletions(-)

diffs (182 lines):

diff -r 33588256d5eb -r 84a00cb08a27 lang/php5/patches/patch-ak
--- a/lang/php5/patches/patch-ak        Tue Mar 04 16:38:11 2008 +0000
+++ b/lang/php5/patches/patch-ak        Tue Mar 04 17:13:49 2008 +0000
@@ -1,8 +1,16 @@
-$NetBSD: patch-ak,v 1.3 2006/11/06 22:06:35 jdolecek Exp $
+$NetBSD: patch-ak,v 1.4 2008/03/04 17:13:49 sborrill Exp $
 
---- ext/imap/php_imap.c.orig   2006-10-05 16:25:41.000000000 +0200
-+++ ext/imap/php_imap.c
-@@ -441,6 +441,11 @@ PHP_MINIT_FUNCTION(imap)
+--- ext/imap/php_imap.c.orig   2007-07-31 01:31:10.000000000 +0100
++++ ext/imap/php_imap.c        2008-03-04 18:14:19.000000000 +0000
+@@ -70,6 +70,7 @@
+ static void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC);
+ static void _php_imap_parse_address(ADDRESS *addresslist, char **fulladdress, zval *paddress TSRMLS_DC);
+ static int _php_imap_address_size(ADDRESS *addresslist);
++static void _php_rfc822_write_address_len (char *dest, ADDRESS *adr, int len);
+ 
+ /* the gets we use */
+ static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DATA *md);
+@@ -452,6 +453,11 @@
  {
        unsigned long sa_all =  SA_MESSAGES | SA_RECENT | SA_UNSEEN | SA_UIDNEXT | SA_UIDVALIDITY;
  
@@ -14,7 +22,7 @@
  #ifndef PHP_WIN32
        mail_link(&unixdriver);         /* link in the unix driver */
        mail_link(&mhdriver);           /* link in the mh driver */
-@@ -456,6 +461,10 @@ PHP_MINIT_FUNCTION(imap)
+@@ -467,6 +473,10 @@
        mail_link(&tenexdriver);        /* link in the tenex driver */
        mail_link(&mtxdriver);          /* link in the mtx driver */
        mail_link(&dummydriver);        /* link in the dummy driver */
@@ -25,3 +33,135 @@
  
  #ifndef PHP_WIN32
        auth_link(&auth_log);           /* link in the log authenticator */
+@@ -1603,18 +1613,21 @@
+       }
+       
+       PHP_IMAP_CHECK_MSGNO(Z_LVAL_PP(msgno));
+-
++      printf("mail_fetchstructure\n");
+       if (mail_fetchstructure(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL)) {
+               cache = mail_elt(imap_le_struct->imap_stream, Z_LVAL_PP(msgno));
+       } else {
+               RETURN_FALSE;
+       }
+       
++      printf("mail_fetchenvelope a\n");
+       en = mail_fetchenvelope(imap_le_struct->imap_stream, Z_LVAL_PP(msgno));
++      printf("mail_fetchenvelope b\n");
+ 
+       /* call a function to parse all the text, so that we can use the
+          same function to parse text from other sources */
+       _php_make_header_object(return_value, en TSRMLS_CC);
++      printf("mail_fetchenvelope c\n");
+       
+       /* now run through properties that are only going to be returned
+          from a server, not text headers */
+@@ -1624,6 +1637,7 @@
+       add_property_string(return_value, "Answered", cache->answered ? "A" : " ", 1);
+       add_property_string(return_value, "Deleted", cache->deleted ? "D" : " ", 1);
+       add_property_string(return_value, "Draft", cache->draft ? "X" : " ", 1);
++      printf("mail_fetchenvelope d\n");
+       
+       snprintf(dummy, sizeof(dummy), "%4ld", cache->msgno);
+       add_property_string(return_value, "Msgno", dummy, 1);
+@@ -1646,6 +1660,7 @@
+               mail_fetchsubject(fulladdress, imap_le_struct->imap_stream, Z_LVAL_PP(msgno), Z_LVAL_PP(subjectlength));
+               add_property_string(return_value, "fetchsubject", fulladdress, 1);
+       }
++      printf("mail_fetchenvelope e\n");
+ }
+ /* }}} */
+ 
+@@ -2105,7 +2120,6 @@
+       zval **mailbox, **host, **personal;
+       ADDRESS *addr;
+       char string[MAILTMPLEN];
+-
+       if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &mailbox, &host, &personal) == FAILURE) {
+               ZEND_WRONG_PARAM_COUNT();
+       }
+@@ -2137,7 +2151,7 @@
+       }
+ 
+       string[0]='\0';
+-      rfc822_write_address(string, addr);
++      _php_rfc822_write_address_len(string, addr, sizeof(string));
+       RETVAL_STRING(string, 1);
+ }
+ /* }}} */
+@@ -2906,13 +2920,13 @@
+                               if (env->from && _php_imap_address_size(env->from) < MAILTMPLEN) {
+                                       env->from->next=NULL;
+                                       address[0] = '\0';
+-                                      rfc822_write_address(address, env->from);
++                                      _php_rfc822_write_address_len(address, env->from, sizeof(address));
+                                       add_property_string(myoverview, "from", address, 1);
+                               }
+                               if (env->to && _php_imap_address_size(env->to) < MAILTMPLEN) {
+                                       env->to->next = NULL;
+                                       address[0] = '\0';
+-                                      rfc822_write_address(address, env->to);
++                                      _php_rfc822_write_address_len(address, env->to, sizeof(address));
+                                       add_property_string(myoverview, "to", address, 1);
+                               }
+                               if (env->date) {
+@@ -3868,6 +3882,7 @@
+               ret += _php_rfc822_len(tmp->mailbox);
+               ret += _php_rfc822_len(tmp->host);
+               num_ent++;
++              printf("%d:%s %s %s %s\n",num_ent,tmp->personal,tmp->adl,tmp->mailbox,tmp->host);
+       } while ((tmp = tmp->next));
+ 
+       /* 
+@@ -3883,6 +3898,33 @@
+ /* }}} */
+ 
+ 
++/* {{{ _php_rfc822_soutr
++ */
++static long _php_rfc822_soutr (void *stream,char *string)
++{
++      return NIL;
++}
++
++/* }}} */
++
++
++/* {{{ _php_rfc822_write_address_len
++ */
++static void _php_rfc822_write_address_len ( char *dest, ADDRESS *adr, int len)
++{
++      RFC822BUFFER buf;
++      buf.beg = dest;
++      buf.cur = buf.beg;
++      buf.end = buf.beg + len - 1;
++      buf.s = NIL;
++      buf.f = _php_rfc822_soutr;
++      rfc822_output_address_list (&buf, adr, 0, NIL);
++      *buf.cur = '\0';
++}
++      
++/* }}} */
++
++
+ /* {{{ _php_imap_parse_address
+  */
+ static void _php_imap_parse_address (ADDRESS *addresslist, char **fulladdress, zval *paddress TSRMLS_DC)
+@@ -3891,13 +3933,15 @@
+       zval *tmpvals;
+       char *tmpstr;
+       int len=0;
+-              
++
++      
+       addresstmp = addresslist;
+ 
+       if ((len = _php_imap_address_size(addresstmp))) {
+               tmpstr = (char *) pemalloc(len + 1, 1);
+               tmpstr[0] = '\0';
+-              rfc822_write_address(tmpstr, addresstmp);
++
++              _php_rfc822_write_address_len(tmpstr, addresstmp, len);
+               *fulladdress = tmpstr;
+       } else {
+               *fulladdress = NULL;
diff -r 33588256d5eb -r 84a00cb08a27 mail/php-imap/Makefile
--- a/mail/php-imap/Makefile    Tue Mar 04 16:38:11 2008 +0000
+++ b/mail/php-imap/Makefile    Tue Mar 04 17:13:49 2008 +0000
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.13 2008/01/18 05:08:28 tnn Exp $
+# $NetBSD: Makefile,v 1.14 2008/03/04 17:13:49 sborrill Exp $
 
 MODNAME=               imap
-PKGREVISION=           2
+PKGREVISION=           3
 CATEGORIES+=           mail
 COMMENT=               PHP extension for IMAP (Internet Mailbox Access Protocol)
 



Home | Main Index | Thread Index | Old Index