]> granicus.if.org Git - php/commitdiff
Fix some segfaults in some of the pg_lo_* functions.
authorJay Smith <jay@php.net>
Thu, 17 Apr 2003 16:54:43 +0000 (16:54 +0000)
committerJay Smith <jay@php.net>
Thu, 17 Apr 2003 16:54:43 +0000 (16:54 +0000)
ext/pgsql/pgsql.c

index f6ca59d75f5e9c4b0a2219405bca838a85888608..7105e5440d702c175fa499911988647a7644c837 100644 (file)
@@ -1776,6 +1776,10 @@ PHP_FUNCTION(pg_lo_unlink)
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Requires 1 or 2 arguments.");
                RETURN_FALSE;
        }
+
+       if (pgsql_link == NULL) {
+               RETURN_FALSE;
+       }
        
        ZEND_FETCH_RESOURCE2(pgsql, PGconn *, &pgsql_link, id, "PostgreSQL link", le_link, le_plink);
 
@@ -1845,6 +1849,10 @@ PHP_FUNCTION(pg_lo_open)
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Requires 1 or 2 arguments.");
                RETURN_FALSE;
        }
+
+       if (pgsql_link == NULL) {
+               RETURN_FALSE;
+       }
        
        ZEND_FETCH_RESOURCE2(pgsql, PGconn *, &pgsql_link, id, "PostgreSQL link", le_link, le_plink);
        
@@ -2073,6 +2081,10 @@ PHP_FUNCTION(pg_lo_import)
        else {
                WRONG_PARAM_COUNT;
        }
+
+       if (pgsql_link == NULL) {
+               RETURN_FALSE;
+       }
        
        if (PG(safe_mode) &&(!php_checkuid(file_in, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
                RETURN_FALSE;
@@ -2135,7 +2147,7 @@ PHP_FUNCTION(pg_lo_export)
                CHECK_DEFAULT_LINK(id);
        }
        else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, argc TSRMLS_CC,
-                                                                "ss", &pgsql_link, &oid_string, &oid_strlen, &file_out, &name_len) == SUCCESS) {
+                                                                "ss", &oid_string, &oid_strlen, &file_out, &name_len) == SUCCESS) {
                oid = (Oid)strtoul(oid_string, &end_ptr, 10);
                if ((oid_string+oid_strlen) != end_ptr) {
                        /* wrong integer format */
@@ -2167,6 +2179,10 @@ PHP_FUNCTION(pg_lo_export)
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Requires 2 or 3 arguments.");
                RETURN_FALSE;
        }
+
+       if (pgsql_link == NULL) {
+               RETURN_FALSE;
+       }
        
        if (PG(safe_mode) &&(!php_checkuid(file_out, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
                RETURN_FALSE;
@@ -2204,7 +2220,7 @@ PHP_FUNCTION(pg_lo_seek)
 
        ZEND_FETCH_RESOURCE(pgsql, pgLofp *, &pgsql_id, -1, "PostgreSQL large object", le_lofp);
 
-       if (lo_lseek((PGconn *)pgsql->conn, pgsql->lofd, offset, whence ) > -1) {
+       if (lo_lseek((PGconn *)pgsql->conn, pgsql->lofd, offset, whence) > -1) {
                RETURN_TRUE;
        } else {
                RETURN_FALSE;