]> granicus.if.org Git - php/commitdiff
- Fixed possible Segfault in ifx_errormsg() using malloc() instead of emalloc()
authorCorne' Cornelius <nobbie@php.net>
Thu, 27 Feb 2003 08:56:15 +0000 (08:56 +0000)
committerCorne' Cornelius <nobbie@php.net>
Thu, 27 Feb 2003 08:56:15 +0000 (08:56 +0000)
ext/informix/ifx.ec

index 162806432a3fbf60bc8fefd77e47a8b2faa70159..96572d561216ba2f1845ff233d4377f96d4276b4 100644 (file)
@@ -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); 
 }
 /* }}} */