summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorne' Cornelius <nobbie@php.net>2003-02-27 09:00:52 +0000
committerCorne' Cornelius <nobbie@php.net>2003-02-27 09:00:52 +0000
commit92600eeb7695cfd156f9bdbe6be854fb3ab45767 (patch)
tree090de75697cc84eb532b275c0ddac514935be489
parenta731bd9f448f8b69381267acd1ba4f094c07b195 (diff)
downloadphp-git-92600eeb7695cfd156f9bdbe6be854fb3ab45767.tar.gz
- MFH: Segfault in ifx_errormsg()
-rw-r--r--ext/informix/ifx.ec9
1 files changed, 4 insertions, 5 deletions
diff --git a/ext/informix/ifx.ec b/ext/informix/ifx.ec
index e9b6bee65b..00fe0b6c3c 100644
--- a/ext/informix/ifx.ec
+++ b/ext/informix/ifx.ec
@@ -1652,13 +1652,12 @@ PHP_FUNCTION(ifx_errormsg)
maxmsglen = 255;
msglen = maxmsglen; /* Some bug fix, rgetlmsg doesnt always set the value */
- ifx_errmsg = (char *)malloc(maxmsglen + 1);
+ ifx_errmsg = (char *)emalloc(maxmsglen + 1);
if (ifx_errorcode != 0) {
rgetlmsg(ifx_errorcode, ifx_errmsg, maxmsglen, &msglen);
if (msglen > maxmsglen) {
- maxmsglen = msglen + 1;
- free(ifx_errmsg);
- ifx_errmsg = (char *)malloc(maxmsglen + 1);
+ maxmsglen = msglen;
+ ifx_errmsg = (char *)erealloc(ifx_errmsg, maxmsglen + 1);
rgetlmsg(ifx_errorcode, ifx_errmsg, maxmsglen, &msglen);
}
} else {
@@ -1667,7 +1666,7 @@ PHP_FUNCTION(ifx_errormsg)
returnmsg = (char *) emalloc(strlen(ifx_errmsg) + 128);
sprintf(returnmsg, ifx_errmsg, sqlca.sqlerrm);
- free(ifx_errmsg);
+ efree(ifx_errmsg);
RETURN_STRING(returnmsg,0);
}
/* }}} */