diff options
author | Corne' Cornelius <nobbie@php.net> | 2003-02-27 08:56:15 +0000 |
---|---|---|
committer | Corne' Cornelius <nobbie@php.net> | 2003-02-27 08:56:15 +0000 |
commit | 8a7822cf24ed6f4cce3cd6a09e33e37249180585 (patch) | |
tree | bd7af0522941b0de20d00b5d0a609eaee59a22f8 | |
parent | 4fbdee3c268b3e35830171d6e8fc87419dea45d7 (diff) | |
download | php-git-8a7822cf24ed6f4cce3cd6a09e33e37249180585.tar.gz |
- Fixed possible Segfault in ifx_errormsg() using malloc() instead of emalloc()
-rw-r--r-- | ext/informix/ifx.ec | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/ext/informix/ifx.ec b/ext/informix/ifx.ec index 162806432a..96572d5612 100644 --- a/ext/informix/ifx.ec +++ b/ext/informix/ifx.ec @@ -1650,15 +1650,14 @@ PHP_FUNCTION(ifx_errormsg) break; } - maxmsglen = 255; + maxmsglen = 10; 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); } /* }}} */ |