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