1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
From 2cc4e69cc6d8dbc4b3568ad3dd583324a7c11d64 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@php.net>
Date: Wed, 20 May 2015 08:08:41 +0200
Subject: [PATCH] Fixed Bug #69667 segfault in php_pgsql_meta_data
Incomplete fix for #68741
---
ext/pgsql/pg_insert_002.phpt | 27 +++++++++++++++++++++++++++
ext/pgsql/pgsql.c | 9 +++++++--
2 files changed, 34 insertions(+), 2 deletions(-)
create mode 100644 ext/pgsql/pg_insert_002.phpt
Index: php5-5.3.3.1/ext/pgsql/pg_insert_002.phpt
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ php5-5.3.3.1/ext/pgsql/pg_insert_002.phpt 2015-07-21 13:16:23.000000000 +0200
@@ -0,0 +1,27 @@
+--TEST--
+PostgreSQL pg_select() - basic test using schema
+--SKIPIF--
+<?php include("skipif.inc"); ?>
+--FILE--
+<?php
+
+include('config.inc');
+
+$conn = pg_connect($conn_str);
+
+foreach (array('', '.', '..') as $table) {
+ var_dump(pg_insert($conn, '', array('id' => 1, 'id2' => 1)));
+}
+?>
+Done
+--EXPECTF--
+
+Warning: pg_insert(): The table name must be specified in %s on line %d
+bool(false)
+
+Warning: pg_insert(): The table name must be specified in %s on line %d
+bool(false)
+
+Warning: pg_insert(): The table name must be specified in %s on line %d
+bool(false)
+Done
\ No newline at end of file
Index: php5-5.3.3.1/ext/pgsql/pgsql.c
===================================================================
--- php5-5.3.3.1.orig/ext/pgsql/pgsql.c 2015-07-21 13:16:23.000000000 +0200
+++ php5-5.3.3.1/ext/pgsql/pgsql.c 2015-07-21 13:16:23.000000000 +0200
@@ -4845,7 +4845,11 @@
src = estrdup(table_name);
tmp_name = php_strtok_r(src, ".", &tmp_name2);
-
+ if (!tmp_name) {
+ efree(src);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The table name must be specified");
+ return FAILURE;
+ }
if (!tmp_name2 || !*tmp_name2) {
/* Default schema */
tmp_name2 = tmp_name;
|