bradmssw                Mon Jun  6 12:43:54 2005 EDT

  Modified files:              (Branch: PHP_5_0)
    /php-src/ext/mcve   mcve.c php_mcve.h 
  Log:
  libmonetra 5.0 sync.
  added m_validateidentifier, which is enabled by default to keep invalid 
pointer addresses from causing PHP to crash
  kept compatability with older versions of libmonetra.
  
http://cvs.php.net/diff.php/php-src/ext/mcve/mcve.c?r1=1.28.2.2&r2=1.28.2.3&ty=u
Index: php-src/ext/mcve/mcve.c
diff -u php-src/ext/mcve/mcve.c:1.28.2.2 php-src/ext/mcve/mcve.c:1.28.2.3
--- php-src/ext/mcve/mcve.c:1.28.2.2    Sun Jan  9 16:05:16 2005
+++ php-src/ext/mcve/mcve.c     Mon Jun  6 12:43:54 2005
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: mcve.c,v 1.28.2.2 2005/01/09 21:05:16 sniper Exp $ */
+/* $Id: mcve.c,v 1.28.2.3 2005/06/06 16:43:54 bradmssw Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -73,6 +73,10 @@
        PHP_FE(m_connect,                       NULL)
        PHP_FE(m_transnew,                      NULL)
        PHP_FE(m_transparam,                    NULL)
+#if LIBMONETRA_VERSION >= 050000
+       PHP_FE(m_transkeyval,                   NULL)
+       PHP_FE(m_validateidentifier,            NULL)
+#endif
        PHP_FE(m_transsend,                     NULL)
        PHP_FE(m_ping,                          NULL)
        PHP_FE(m_responseparam,                 NULL)
@@ -550,7 +554,7 @@
 PHP_MINFO_FUNCTION(mcve)
 {
        php_info_print_table_start();
-       php_info_print_table_row(2, "mcve support", "enabled");
+       php_info_print_table_row(2, "mcve/monetra support", "enabled");
        php_info_print_table_row(2, "version", PHP_MCVE_VERSION);
        php_info_print_table_end();
 }
@@ -589,6 +593,11 @@
 
        MCVE_InitConn(conn);
 
+/* Since the identifiers are pointer addresses, we need to validate it by
+ * checking our linked list in PHP, since we don't want to cause segfaults */
+#if LIBMONETRA_VERSION >= 050000
+       M_ValidateIdentifier(conn, 1);
+#endif
        ZEND_REGISTER_RESOURCE(return_value, conn, le_conn);
 }
 /* }}} */
@@ -890,7 +899,7 @@
 PHP_FUNCTION(m_connectionerror)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg;
 
        if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE)
@@ -903,7 +912,7 @@
        if (retval == NULL) {
                RETVAL_STRING("",1);
        } else {
-               RETVAL_STRING(retval, 1);
+               RETVAL_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -965,8 +974,53 @@
 }
 /* }}} */
 
+#if LIBMONETRA_VERSION >= 050000
+/* {{{ proto int m_validateidentifier(resource conn, int tf)
+   Whether or not to validate the passed identifier on any transaction it is 
passed  to
+*/
+PHP_FUNCTION(m_validateidentifier)
+{
+       MCVE_CONN *conn;
+       int retval;
+       zval **arg1, **arg2;
+       
+       if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == 
FAILURE)
+               WRONG_PARAM_COUNT;
+
+       ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", 
le_conn);
+
+       convert_to_long_ex(arg2);
+       retval = M_ValidateIdentifier(conn, (int)Z_LVAL_PP(arg2));
+       RETURN_LONG(retval);
+}
+/* }}} */
+
+/* {{{ proto int m_transkeyval(resource conn, long identifier, string key, 
string value)
+   Add key/value pair to a transaction.  Replaces deprecated transparam() */
+PHP_FUNCTION(m_transkeyval)
+{
+       MCVE_CONN *conn;
+       int retval;
+       zval **arg1, **arg2, **arg3, **arg4;
+
+       if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &arg1, &arg2, 
&arg3, &arg4) == FAILURE)
+               WRONG_PARAM_COUNT;
+
+       ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", 
le_conn);
+       
+       convert_to_long_ex(arg2);
+       convert_to_string_ex(arg3);
+       convert_to_string_ex(arg4);
+       
+       retval = M_TransKeyVal(conn, (long)Z_LVAL_PP(arg2), Z_STRVAL_PP(arg3), 
Z_STRVAL_PP(arg4));
+
+       RETURN_LONG(retval);
+}
+/* }}} */
+#endif
+
 /* {{{ proto int m_transparam(resource conn, long identifier, int key, ...)
-   Add a parameter to a transaction */
+   Add a parameter to a transaction (deprecated) */
 PHP_FUNCTION(m_transparam)
 {
        MCVE_CONN *conn;
@@ -1076,7 +1130,7 @@
 PHP_FUNCTION(m_responseparam)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg1, **arg2, **arg3;
 
        if (ZEND_NUM_ARGS() != 3 ||
@@ -1093,7 +1147,7 @@
        if (retval == NULL) {
                RETVAL_STRING("",1);
        } else {
-               RETVAL_STRING(retval, 1);
+               RETVAL_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -1103,7 +1157,7 @@
 PHP_FUNCTION(m_getuserparam)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg1, **arg2, **arg3;
 
        if (ZEND_NUM_ARGS() != 3 ||
@@ -1120,7 +1174,7 @@
        if (retval == NULL) {
                RETVAL_STRING("",1);
        } else {
-               RETVAL_STRING(retval, 1);
+               RETVAL_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -1279,7 +1333,7 @@
 PHP_FUNCTION(m_transactionauth)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg1, **arg2;
 
        if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == 
FAILURE)
@@ -1294,7 +1348,7 @@
        if (retval == NULL) {
                RETVAL_STRING("",1);
        } else {
-               RETVAL_STRING(retval, 1);
+               RETVAL_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -1304,7 +1358,7 @@
 PHP_FUNCTION(m_transactiontext)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg1, **arg2;
 
        if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == 
FAILURE)
@@ -1318,7 +1372,7 @@
        if (retval == NULL) {
                RETVAL_STRING("",1);
        } else {
-               RETVAL_STRING(retval, 1);
+               RETVAL_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -1877,7 +1931,7 @@
 PHP_FUNCTION(m_getcell)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg1, **arg2, **arg3, **arg4;
 
        if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &arg1, &arg2, 
&arg3, &arg4) == FAILURE)
@@ -1894,7 +1948,7 @@
        if (retval == NULL) {
                RETURN_STRING("", 1);
        } else {
-               RETURN_STRING(retval, 1);
+               RETURN_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -1904,7 +1958,7 @@
 PHP_FUNCTION(m_getcellbynum)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg1, **arg2, **arg3, **arg4;
 
        if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &arg1, &arg2, 
&arg3, &arg4) == FAILURE)
@@ -1921,7 +1975,7 @@
        if (retval == NULL) {
                RETURN_STRING("", 1);
        } else {
-               RETURN_STRING(retval, 1);
+               RETURN_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -2015,7 +2069,7 @@
 PHP_FUNCTION(m_getcommadelimited)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg1, **arg2;
 
        if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == 
FAILURE)
@@ -2027,7 +2081,7 @@
 
        retval = MCVE_GetCommaDelimited(conn, Z_LVAL_PP(arg2));
 
-       RETURN_STRING(retval, 1);
+       RETURN_STRING(estrdup(retval), 0);
 }
 /* }}} */
 
@@ -2036,7 +2090,7 @@
 PHP_FUNCTION(m_getheader)
 {
        MCVE_CONN *conn;
-       char *retval;
+       const char *retval;
        zval **arg1, **arg2, **arg3;
 
        if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, 
&arg3) == FAILURE)
@@ -2049,7 +2103,7 @@
 
        retval = MCVE_GetHeader(conn, Z_LVAL_PP(arg2), Z_LVAL_PP(arg3));
 
-       RETURN_STRING(retval, 1);
+       RETURN_STRING(estrdup(retval), 0);
 }
 /* }}} */
 
@@ -2337,7 +2391,7 @@
    Get a textual representation of the return_code */
 PHP_FUNCTION(m_text_code)
 {
-       char *retval;
+       const char *retval;
        zval **arg;
 
        if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE)
@@ -2350,7 +2404,7 @@
        if (retval == NULL) {
                RETVAL_STRING("",1);
        } else {
-               RETVAL_STRING(retval, 1);
+               RETVAL_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -2359,7 +2413,7 @@
    Get a textual representation of the return_avs */
 PHP_FUNCTION(m_text_avs)
 {
-       char *retval;
+       const char *retval;
        zval **arg;
 
        if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE)
@@ -2372,7 +2426,7 @@
        if (retval == NULL) {
                RETVAL_STRING("",1);
        } else {
-               RETVAL_STRING(retval, 1);
+               RETVAL_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
@@ -2381,7 +2435,7 @@
    Get a textual representation of the return_cv */
 PHP_FUNCTION(m_text_cv)
 {
-       char *retval;
+       const char *retval;
        zval **arg;
 
        if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE)
@@ -2394,7 +2448,7 @@
        if (retval == NULL) {
                RETVAL_STRING("",1);
        } else {
-               RETVAL_STRING(retval, 1);
+               RETVAL_STRING(estrdup(retval), 0);
        }
 }
 /* }}} */
http://cvs.php.net/diff.php/php-src/ext/mcve/php_mcve.h?r1=1.14&r2=1.14.2.1&ty=u
Index: php-src/ext/mcve/php_mcve.h
diff -u php-src/ext/mcve/php_mcve.h:1.14 php-src/ext/mcve/php_mcve.h:1.14.2.1
--- php-src/ext/mcve/php_mcve.h:1.14    Sun May 30 18:41:13 2004
+++ php-src/ext/mcve/php_mcve.h Mon Jun  6 12:43:54 2005
@@ -16,7 +16,7 @@
    |          Chris Faulhaber <[EMAIL PROTECTED]>                            |
    +----------------------------------------------------------------------+
 */
-/* $Id: php_mcve.h,v 1.14 2004/05/30 22:41:13 bradmssw Exp $ */
+/* $Id: php_mcve.h,v 1.14.2.1 2005/06/06 16:43:54 bradmssw Exp $ */
 
 #ifndef _PHP_MCVE_H
 #define _PHP_MCVE_H
@@ -26,7 +26,13 @@
 #define mcve_module_ptr &mcve_module_entry
 #define phpext_mcve_ptr mcve_module_ptr
 
-#define PHP_MCVE_VERSION       "4.0"
+#define PHP_MCVE_VERSION       "5.0"
+
+#include <mcve.h>
+
+#ifndef LIBMONETRA_VERSION
+#define LIBMONETRA_VERSION 040000
+#endif
 
 #define MCVE_CONST (CONST_CS | CONST_PERSISTENT)
 
@@ -55,6 +61,10 @@
 PHP_FUNCTION(m_deletetrans);
 PHP_FUNCTION(m_connect);
 PHP_FUNCTION(m_transnew);
+#if LIBMONETRA_VERSION >= 050000
+PHP_FUNCTION(m_transkeyval);
+PHP_FUNCTION(m_validateidentifier);
+#endif
 PHP_FUNCTION(m_transparam);
 PHP_FUNCTION(m_transsend);
 PHP_FUNCTION(m_ping);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to