]> granicus.if.org Git - php/commitdiff
- avoid sprintf
authorMarcus Boerger <helly@php.net>
Sat, 24 Feb 2007 16:25:58 +0000 (16:25 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 24 Feb 2007 16:25:58 +0000 (16:25 +0000)
59 files changed:
Zend/zend.c
ext/bcmath/libbcmath/src/output.c
ext/bcmath/libbcmath/src/rt.c
ext/com_dotnet/com_wrapper.c
ext/dbase/dbf_head.c
ext/dbase/dbf_misc.c
ext/exif/exif.c
ext/fbsql/php_fbsql.c
ext/ftp/ftp.c
ext/gd/libgd/gdtest.c
ext/gd/libgd/webpng.c
ext/imap/php_imap.c
ext/interbase/ibase_blobs.c
ext/interbase/ibase_query.c
ext/interbase/ibase_service.c
ext/interbase/interbase.c
ext/mbstring/mbstring.c
ext/mbstring/oniguruma/regposerr.c
ext/msql/php_msql.c
ext/mssql/php_mssql.c
ext/mysql/php_mysql.c
ext/mysqli/mysqli.c
ext/mysqli/mysqli_api.c
ext/mysqli/mysqli_prop.c
ext/mysqli/php_mysqli.h
ext/oci8/oci8.c
ext/odbc/php_odbc.c
ext/openssl/openssl.c
ext/pcre/pcrelib/pcregrep.c
ext/pcre/pcrelib/pcreposix.c
ext/pdo_firebird/firebird_statement.c
ext/pdo_odbc/odbc_driver.c
ext/pgsql/pgsql.c
ext/pspell/pspell.c
ext/session/mod_mm.c
ext/session/session.c
ext/skeleton/skeleton.c
ext/soap/php_encoding.c
ext/soap/php_http.c
ext/soap/soap.c
ext/standard/dns.c
ext/standard/head.c
ext/standard/image.c
ext/standard/pack.c
ext/standard/proc_open.c
ext/standard/scanf.c
ext/standard/string.c
ext/standard/type.c
ext/sybase_ct/php_sybase_ct.c
ext/wddx/wddx.c
ext/zip/lib/zip_close.c
ext/zip/lib/zip_error_strerror.c
main/fopen_wrappers.c
main/php_ini.c
main/rfc1867.c
sapi/nsapi/nsapi.c
sapi/tux/php_tux.c
win32/registry.c
win32/sendmail.c

index 029dfba69bfaf74952358b7027caa5f1fc3da07a..5dbd7e0cc8a4e4e75babd07b0d47069709b8c20a 100644 (file)
@@ -1697,8 +1697,7 @@ ZEND_API char *zend_make_compiled_string_description(char *name TSRMLS_DC)
                cur_lineno = 0;
        }
 
-       compiled_string_description = emalloc(sizeof(COMPILED_STRING_DESCRIPTION_FORMAT)+strlen(name)+strlen(cur_filename)+MAX_LENGTH_OF_LONG);
-       sprintf(compiled_string_description, COMPILED_STRING_DESCRIPTION_FORMAT, cur_filename, cur_lineno, name);
+       zend_spprintf(&compiled_string_description, 0, COMPILED_STRING_DESCRIPTION_FORMAT, cur_filename, cur_lineno, name);
        return compiled_string_description;
 }
 
index ab49b0e3661372eef0cb771cad7ef5aae2d8469d..ad4e3754677b576dbbce260c556e1d323fe323d4 100644 (file)
@@ -71,7 +71,7 @@ bc_out_long (val, size, space, out_char)
   int len, ix;
 
   if (space) (*out_char) (' ');
-  sprintf (digits, "%ld", val);
+  snprintf(digits, sizeof(digits), "%ld", val);
   len = strlen (digits);
   while (size > len)
     {
index 2479104fe45406a0c832d06e46d0d88e03823846..5a98b68f7ecdf0642823a5288fb7a6b9651b1504 100644 (file)
@@ -45,7 +45,7 @@ void bc_rt_warn (char *mesg ,...)
   char error_mesg [255];
 
   va_start (args, mesg);
-  vsprintf (error_mesg, mesg, args);
+  vsnprintf (error_mesg, sizeof(error_mesg), mesg, args);
   va_end (args);
 
   fprintf (stderr, "bc math warning: %s\n", error_mesg);
@@ -58,7 +58,7 @@ void bc_rt_error (char *mesg ,...)
   char error_mesg [255];
 
   va_start (args, mesg);
-  vsprintf (error_mesg, mesg, args);
+  vsnprintf (error_mesg, sizeof(error_mesg), mesg, args);
   va_end (args);
 
   fprintf (stderr, "bc math error: %s\n", error_mesg);
index 4cc81aa04b115a85b251e1da0aee3c204e248f2a..b698affa22027aa4bc91b74dea07d0c74fc54d9a 100644 (file)
@@ -74,7 +74,7 @@ static inline void trace(char *fmt, ...)
        va_list ap;
        char buf[4096];
 
-       sprintf(buf, "T=%08x ", GetCurrentThreadId());
+       snprintf(buf, sizeof(buf), "T=%08x ", GetCurrentThreadId());
        OutputDebugString(buf);
        
        va_start(ap, fmt);
@@ -474,7 +474,7 @@ static void generate_dispids(php_dispatchex *disp TSRMLS_DC)
                                &namelen, &pid, 0, &pos))) {
                        char namebuf[32];
                        if (keytype == HASH_KEY_IS_LONG) {
-                               sprintf(namebuf, "%d", pid);
+                               snprintf(namebuf, sizeof(namebuf), "%d", pid);
                                name = namebuf;
                                namelen = strlen(namebuf)+1;
                        }
@@ -506,7 +506,7 @@ static void generate_dispids(php_dispatchex *disp TSRMLS_DC)
 
                        char namebuf[32];
                        if (keytype == HASH_KEY_IS_LONG) {
-                               sprintf(namebuf, "%d", pid);
+                               snprintf(namebuf, sizeof(namebuf), "%d", pid);
                                name = namebuf;
                                namelen = strlen(namebuf) + 1;
                        }
index 42935c2ea4541c8cd5e18227230f8d50f96d7ded..9c9363dfbbe31ebe3754d88cebde5a4005516a60 100644 (file)
@@ -215,7 +215,7 @@ void put_dbf_info(dbhead_t *dbh)
        int             fcnt;
 
        if ((cp = db_cur_date(NULL))) {
-               strncpy(dbh->db_date, cp, 8);
+               strlcpy(dbh->db_date, cp, 8);
                free(cp);
        }
        put_dbf_head(dbh);
@@ -232,16 +232,16 @@ char *get_dbf_f_fmt(dbfield_t *dbf)
        /* build the field format for printf */
        switch (dbf->db_type) {
           case 'C':
-               sprintf(format, "%%-%ds", dbf->db_flen);
+               snprintf(format, sizeof(format), "%%-%ds", dbf->db_flen);
                break;
           case 'N':
           case 'L':
           case 'D':
           case 'F':
-               sprintf(format, "%%%ds", dbf->db_flen);
+               snprintf(format, sizeof(format), "%%%ds", dbf->db_flen);
                break;
           case 'M':
-               strcpy(format, "%s");
+               strlcpy(format, "%s", sizeof(format));
                break;
           default:
                return NULL;
index ad17bd4e3fb1bf1796231a3f0f79a525b4207034..d5727839642f098121920f22cb76d6aad2a8c6fc 100644 (file)
@@ -114,12 +114,7 @@ void db_set_date(char *cp, int year, int month, int day)
                month = 0;
        if (day > 31)
                day = 0;
-       sprintf(cp, "%d", year);
-       cp[4] = month / 10 + '0';
-       cp[5] = month % 10 + '0';
-       cp[6] = day / 10 + '0';
-       cp[7] = day % 10 + '0';
-       cp[8] = 0;
+       snprintf(cp, 9, "%04d%02d%02d", year, month, day);
 }
 
 int db_date_year(char *cp)
index 3417b3d2c9f19f68e88d0a96b0266d0954046544..2dbd1f65519ed5ca8a75ef7c49dc607753c3b20d 100644 (file)
@@ -1035,22 +1035,22 @@ static unsigned char* exif_char_dump(unsigned char * addr, int len, int offset)
        static unsigned char tmp[20];
        int c, i, p=0, n = 5+31;
 
-       p += sprintf(buf+p, "\nDump Len: %08X (%d)", len, len);
+       p += snprintf(buf+p, sizeof(buf)-p, "\nDump Len: %08X (%d)", len, len);
        if (len) {
                for(i=0; i<len+15 && p+n<=sizeof(buf); i++) {
                        if (i%16==0) {
-                               p += sprintf(buf+p, "\n%08X: ", i+offset);
+                               p += snprintf(buf+p, sizeof(buf)-p, "\n%08X: ", i+offset);
                        }
                        if (i<len) {
                                c = *addr++;
-                               p += sprintf(buf+p, "%02X ", c);
+                               p += snprintf(buf+p, sizeof(buf)-p, "%02X ", c);
                                tmp[i%16] = c>=32 ? c : '.';
                                tmp[(i%16)+1] = '\0';
                        } else {
-                               p += sprintf(buf+p, "   ");
+                               p += snprintf(buf+p, sizeof(buf)-p, "   ");
                        }
                        if (i%16==15) {
-                               p += sprintf(buf+p, "    %s", tmp);
+                               p += snprintf(buf+p, sizeof(buf)-p, "    %s", tmp);
                                if (i>=len) {
                                        break;
                                }
@@ -1181,44 +1181,44 @@ char * exif_dump_data(int *dump_free, int format, int components, int length, in
                        case TAG_FMT_UNDEFINED:
                        case TAG_FMT_STRING:
                        case TAG_FMT_SBYTE:
-                               dump = erealloc(dump, len + 4);
-                               sprintf(dump + len, "0x%02X", *value_ptr);
+                               dump = erealloc(dump, len + 4 + 1);
+                               snprintf(dump + len, 4 + 1, "0x%02X", *value_ptr);
                                len += 4;
                                value_ptr++;
                                break;
                        case TAG_FMT_USHORT:
                        case TAG_FMT_SSHORT:
-                               dump = erealloc(dump, len + 6);
-                               sprintf(dump + len, "0x%04X", php_ifd_get16s(value_ptr, motorola_intel));
+                               dump = erealloc(dump, len + 6 + 1);
+                               snprintf(dump + len, 6 + 1, "0x%04X", php_ifd_get16s(value_ptr, motorola_intel));
                                len += 6;
                                value_ptr += 2;
                                break;
                        case TAG_FMT_ULONG:
                        case TAG_FMT_SLONG:
-                               dump = erealloc(dump, len + 6);
-                               sprintf(dump + len, "0x%04X", php_ifd_get32s(value_ptr, motorola_intel));
+                               dump = erealloc(dump, len + 6 + 1);
+                               snprintf(dump + len, 6 + 1, "0x%04X", php_ifd_get32s(value_ptr, motorola_intel));
                                len += 6;
                                value_ptr += 4;
                                break;
                        case TAG_FMT_URATIONAL:
                        case TAG_FMT_SRATIONAL:
-                               dump = erealloc(dump, len + 13);
-                               sprintf(dump + len, "0x%04X/0x%04X", php_ifd_get32s(value_ptr, motorola_intel), php_ifd_get32s(value_ptr+4, motorola_intel));
+                               dump = erealloc(dump, len + 13 + 1);
+                               snprintf(dump + len, 13 + 1, "0x%04X/0x%04X", php_ifd_get32s(value_ptr, motorola_intel), php_ifd_get32s(value_ptr+4, motorola_intel));
                                len += 13;
                                value_ptr += 8;
                                break;
                }
                if (components > 0) {
-                       dump = erealloc(dump, len + 2);
-                       sprintf(dump + len, ", ");
+                       dump = erealloc(dump, len + 2 + 1);
+                       snprintf(dump + len, 2 + 1, ", ");
                        len += 2;                       
                        components--;
                } else{
                        break;
                }
        }
-       dump = erealloc(dump, len + 2);
-       sprintf(dump + len, "}");
+       dump = erealloc(dump, len + 1 + 1);
+       snprintf(dump + len, 1 + 1, "}");
        return dump;
 }
 /* }}} */
@@ -1448,18 +1448,18 @@ static tag_table_type exif_get_tag_table(int section)
 */
 static char *exif_get_sectionlist(int sectionlist TSRMLS_DC)
 {
-       int i, len=0;
+       int i, len, ml = 0;
        char *sections;
 
        for(i=0; i<SECTION_COUNT; i++) {
-               len += strlen(exif_get_sectionname(i))+2;
+               ml += strlen(exif_get_sectionname(i))+2;
        }
-       sections = safe_emalloc(len, 1, 1);
+       sections = safe_emalloc(ml, 1, 1);
        sections[0] = '\0';
        len = 0;
        for(i=0; i<SECTION_COUNT; i++) {
                if (sectionlist&(1<<i)) {
-                       sprintf(sections+len, "%s, ", exif_get_sectionname(i));
+                       snprintf(sections+len, ml-len, "%s, ", exif_get_sectionname(i));
                        len = strlen(sections);
                }
        }
@@ -3891,8 +3891,7 @@ PHP_FUNCTION(exif_read_data)
 
        if(ac >= 2) {
                convert_to_string_ex(p_sections_needed);
-               sections_str = safe_emalloc(strlen(Z_STRVAL_PP(p_sections_needed)), 1, 3);
-               sprintf(sections_str, ",%s,", Z_STRVAL_PP(p_sections_needed));
+               spprintf(&sections_str, 0, ",%s,", Z_STRVAL_PP(p_sections_needed));
                /* sections_str DOES start with , and SPACES are NOT allowed in names */
                s = sections_str;
                while(*++s) {
index c712b2873a2d48ce1827b86097a089f4db154222..b4902311ad7e2817ba745e2d2b4d8f6a64e361c9 100644 (file)
@@ -851,7 +851,7 @@ PHP_MINFO_FUNCTION(fbsql)
        php_info_print_table_row(2, "Active Links", buf);
 
 /*
-       sprintf(buf, "%ld", FB_SQL_G(resultCount));
+       snprintf(buf, sizeof(buf), "%ld", FB_SQL_G(resultCount));
        php_info_print_table_row(2, "Active Results", buf);
 */
 
@@ -2944,7 +2944,7 @@ void phpfbColumnAsString(PHPFBResult* result, int column, void* data , int* leng
                                        for (i = 0; i < nBits / 8; i++)
                                        {
                                                char c[4];
-                                               sprintf(c, "%02x", ptr->bytes[i]);
+                                               snprintf(c, sizeof(c), "%02x", ptr->bytes[i]);
                                                r[i*2+2] = c[0];
                                                r[i*2+3] = c[1];
                                        }
index fddebab2d1a6cf4657339b25bdf3813d6e449714..b2166f1becb3c4c574388cff4b91495d2e0c9641 100644 (file)
@@ -586,11 +586,7 @@ ftp_chmod(ftpbuf_t *ftp, const int mode, const char *filename, const int filenam
                return 0;
        }
 
-       if (!(buffer = emalloc(32 + filename_len + 1))) {
-               return 0;
-       }
-
-       sprintf(buffer, "CHMOD %o %s", mode, filename);
+       spprintf(&buffer, 0, "CHMOD %o %s", mode, filename);
 
        if (!ftp_putcmd(ftp, "SITE", buffer)) {
                efree(buffer);
@@ -810,7 +806,7 @@ ftp_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, ftptype_t type,
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files greater than 2147483647 bytes");
                        goto bail;
                }
-               sprintf(arg, "%u", resumepos);
+               snprintf(arg, sizeof(arg), "%u", resumepos);
                if (!ftp_putcmd(ftp, "REST", arg)) {
                        goto bail;
                }
@@ -907,7 +903,7 @@ ftp_put(ftpbuf_t *ftp, const char *path, php_stream *instream, ftptype_t type, i
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files with a size greater than 2147483647 bytes");
                        goto bail;
                }
-               sprintf(arg, "%u", startpos);
+               snprintf(arg, sizeof(arg), "%u", startpos);
                if (!ftp_putcmd(ftp, "REST", arg)) {
                        goto bail;
                }
@@ -1106,13 +1102,13 @@ ftp_putcmd(ftpbuf_t *ftp, const char *cmd, const char *args)
                if (strlen(cmd) + strlen(args) + 4 > FTP_BUFSIZE) {
                        return 0;
                }
-               size = sprintf(ftp->outbuf, "%s %s\r\n", cmd, args);
+               size = snprintf(ftp->outbuf, sizeof(ftp->outbuf), "%s %s\r\n", cmd, args);
        } else {
                /* "cmd\r\n\0" */
                if (strlen(cmd) + 3 > FTP_BUFSIZE) {
                        return 0;
                }
-               size = sprintf(ftp->outbuf, "%s\r\n", cmd);
+               size = snprintf(ftp->outbuf, sizeof(ftp->outbuf), "%s\r\n", cmd);
        }
 
        data = ftp->outbuf;
@@ -1438,7 +1434,7 @@ ftp_getdata(ftpbuf_t *ftp TSRMLS_DC)
                char eprtarg[INET6_ADDRSTRLEN + sizeof("|x||xxxxx|")];
                char out[INET6_ADDRSTRLEN];
                inet_ntop(AF_INET6, &((struct sockaddr_in6*) sa)->sin6_addr, out, sizeof(out));
-               sprintf(eprtarg, "|2|%s|%hu|", out, ntohs(((struct sockaddr_in6 *) &addr)->sin6_port));
+               snprintf(eprtarg, sizeof(eprtarg), "|2|%s|%hu|", out, ntohs(((struct sockaddr_in6 *) &addr)->sin6_port));
 
                if (!ftp_putcmd(ftp, "EPRT", eprtarg)) {
                        goto bail;
@@ -1456,7 +1452,7 @@ ftp_getdata(ftpbuf_t *ftp TSRMLS_DC)
        /* send the PORT */
        ipbox.ia[0] = ((struct sockaddr_in*) sa)->sin_addr;
        ipbox.s[2] = ((struct sockaddr_in*) &addr)->sin_port;
-       sprintf(arg, "%u,%u,%u,%u,%u,%u", ipbox.c[0], ipbox.c[1], ipbox.c[2], ipbox.c[3], ipbox.c[4], ipbox.c[5]);
+       snprintf(arg, sizeof(arg), "%u,%u,%u,%u,%u,%u", ipbox.c[0], ipbox.c[1], ipbox.c[2], ipbox.c[3], ipbox.c[4], ipbox.c[5]);
 
        if (!ftp_putcmd(ftp, "PORT", arg)) {
                goto bail;
@@ -1713,7 +1709,7 @@ ftp_nb_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, ftptype_t typ
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files greater than 2147483648 bytes");
                        goto bail;
                }
-               sprintf(arg, "%u", resumepos);
+               snprintf(arg, sizeof(arg), "%u", resumepos);
                if (!ftp_putcmd(ftp, "REST", arg)) {
                        goto bail;
                }
@@ -1831,7 +1827,7 @@ ftp_nb_put(ftpbuf_t *ftp, const char *path, php_stream *instream, ftptype_t type
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files with a size greater than 2147483647 bytes");
                        goto bail;
                }
-               sprintf(arg, "%u", startpos);
+               snprintf(arg, sizeof(arg), "%u", startpos);
                if (!ftp_putcmd(ftp, "REST", arg)) {
                        goto bail;
                }
index f4300bb3fd5b2ddb7e7eb077b571a8789b231178..24b750386424d29c0469cb47ff78d34631afd80c 100644 (file)
@@ -56,7 +56,7 @@ main (int argc, char **argv)
   /* */
   /* Send to PNG File then Ptr */
   /* */
-  sprintf (of, "%s.png", argv[1]);
+  snprintf (of, sizeof(of), "%s.png", argv[1]);
   out = fopen (of, "wb");
   gdImagePng (im, out);
   fclose (out);
@@ -88,7 +88,7 @@ main (int argc, char **argv)
   /* */
   /* Send to GD2 File then Ptr */
   /* */
-  sprintf (of, "%s.gd2", argv[1]);
+  snprintf (of, sizeof(of), "%s.gd2", argv[1]);
   out = fopen (of, "wb");
   gdImageGd2 (im, out, 128, 2);
   fclose (out);
@@ -123,7 +123,7 @@ main (int argc, char **argv)
   /* */
   /* Send to GD File then Ptr */
   /* */
-  sprintf (of, "%s.gd", argv[1]);
+  snprintf (of, sizeof(of), "%s.gd", argv[1]);
   out = fopen (of, "wb");
   gdImageGd (im, out);
   fclose (out);
@@ -180,7 +180,7 @@ main (int argc, char **argv)
      ** Test gdImagePngToSink'
      * */
 
-  sprintf (of, "%s.snk", argv[1]);
+  snprintf (of, sizeof(of), "%s.snk", argv[1]);
   out = fopen (of, "wb");
   imgsnk.sink = fwriteWrapper;
   imgsnk.context = out;
index 81a00e749c78ea1606e2eab00f0cc8b840539463..c01dd82f23d505fcdd29db6feed135371be6c7f2 100644 (file)
@@ -252,7 +252,7 @@ usage:
          /* Open a temporary file. */
 
          /* "temp.tmp" is not good temporary filename. */
-         sprintf (outFn, "webpng.tmp%d", getpid ());
+         snprintf (outFn, sizeof(outFn), "webpng.tmp%d", getpid ());
          out = fopen (outFn, "wb");
 
          if (!out)
index 38d6f839b640ba63bcad62231ef269bfde16cb8f..841ef49fcdc248375a10600ad37933dc83331f5f 100644 (file)
@@ -1169,7 +1169,7 @@ PHP_FUNCTION(imap_headers)
                tmp[3] = cache->answered ? 'A' : ' ';
                tmp[4] = cache->deleted ? 'D' : ' ';
                tmp[5] = cache->draft ? 'X' : ' ';
-               sprintf(tmp + 6, "%4ld) ", cache->msgno);
+               snprintf(tmp + 6, sizeof(tmp) - 6, "%4ld) ", cache->msgno);
                mail_date(tmp+11, cache);
                tmp[22] = ' ';
                tmp[23] = '\0';
@@ -1621,13 +1621,13 @@ PHP_FUNCTION(imap_headerinfo)
        add_property_string(return_value, "Deleted", cache->deleted ? "D" : " ", 1);
        add_property_string(return_value, "Draft", cache->draft ? "X" : " ", 1);
        
-       sprintf(dummy, "%4ld", cache->msgno);
+       snprintf(dummy, sizeof(dummy), "%4ld", cache->msgno);
        add_property_string(return_value, "Msgno", dummy, 1);
        
        mail_date(dummy, cache);
        add_property_string(return_value, "MailDate", dummy, 1);
        
-       sprintf(dummy, "%ld", cache->rfc822_size); 
+       snprintf(dummy, sizeof(dummy), "%ld", cache->rfc822_size); 
        add_property_string(return_value, "Size", dummy, 1);
        
        add_property_long(return_value, "udate", mail_longdate(cache));
@@ -3371,7 +3371,8 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *
        char *tsm_errmsg = NULL;
        ADDRESS *addr;
        char *bufferTo = NULL, *bufferCc = NULL, *bufferBcc = NULL, *bufferHeader = NULL;
-       int offset, bufferLen = 0;;
+       int offset, bufferLen = 0;
+       size_t bt_len;
 
        if (headers) {
                bufferLen += strlen(headers);
@@ -3393,7 +3394,9 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *
                strlcat(bufferHeader, to, bufferLen + 1);
                strlcat(bufferHeader, "\r\n", bufferLen + 1);
                tempMailTo = estrdup(to);
-               bufferTo = (char *)emalloc(strlen(to) + 1);
+               bt_len = strlen(to);
+               bufferTo = (char *)safe_emalloc(bt_len, 1, 1);
+               bt_len++;
                offset = 0;
                addr = NULL;
                rfc822_parse_adrlist(&addr, tempMailTo, NULL);
@@ -3401,7 +3404,11 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *
                        if (strcmp(addr->host, ERRHOST) == 0) {
                                PHP_IMAP_BAD_DEST;
                        } else {
-                               offset += sprintf(bufferTo + offset, "%s@%s,", addr->mailbox, addr->host);
+                               bufferTo = safe_erealloc(bufferTo, bt_len, 1, strlen(addr->mailbox));
+                               bt_len += strlen(addr->mailbox);
+                               bufferTo = safe_erealloc(bufferTo, bt_len, 1, strlen(addr->host));
+                               bt_len += strlen(addr->host);
+                               offset += snprintf(bufferTo + offset, bt_len - offset, "%s@%s,", addr->mailbox, addr->host);
                        }
                        addr = addr->next;
                }
@@ -3416,7 +3423,9 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *
                strlcat(bufferHeader, cc, bufferLen + 1);
                strlcat(bufferHeader, "\r\n", bufferLen + 1);
                tempMailTo = estrdup(cc);
-               bufferCc = (char *)emalloc(strlen(cc) + 1);
+               bt_len = strlen(cc);
+               bufferCc = (char *)safe_emalloc(bt_len, 1, 1);
+               bt_len++;
                offset = 0;
                addr = NULL;
                rfc822_parse_adrlist(&addr, tempMailTo, NULL);
@@ -3424,7 +3433,11 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *
                        if (strcmp(addr->host, ERRHOST) == 0) {
                                PHP_IMAP_BAD_DEST;
                        } else {
-                               offset += sprintf(bufferCc + offset, "%s@%s,", addr->mailbox, addr->host);
+                               bufferCc = safe_erealloc(bufferCc, bt_len, 1, strlen(addr->mailbox));
+                               bt_len += strlen(addr->mailbox);
+                               bufferCc = safe_erealloc(bufferCc, bt_len, 1, strlen(addr->host));
+                               bt_len += strlen(addr->host);
+                               offset += snprintf(bufferCc + offset, bt_len - offset, "%s@%s,", addr->mailbox, addr->host);
                        }
                        addr = addr->next;
                }
@@ -3436,7 +3449,9 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *
 
        if (bcc && *bcc) {
                tempMailTo = estrdup(bcc);
-               bufferBcc = (char *)emalloc(strlen(bcc) + 1);
+               bt_len = strlen(bcc);
+               bufferBcc = (char *)safe_emalloc(bt_len, 1, 1);
+               bt_len++;
                offset = 0;
                addr = NULL;
                rfc822_parse_adrlist(&addr, tempMailTo, NULL);
@@ -3444,7 +3459,11 @@ int _php_imap_mail(char *to, char *subject, char *message, char *headers, char *
                        if (strcmp(addr->host, ERRHOST) == 0) {
                                PHP_IMAP_BAD_DEST;
                        } else {
-                               offset += sprintf(bufferBcc + offset, "%s@%s,", addr->mailbox, addr->host);
+                               bufferBcc = safe_erealloc(bufferBcc, bt_len, 1, strlen(addr->mailbox));
+                               bt_len += strlen(addr->mailbox);
+                               bufferBcc = safe_erealloc(bufferBcc, bt_len, 1, strlen(addr->host));
+                               bt_len += strlen(addr->host);
+                               offset += snprintf(bufferBcc + offset, bt_len - offset, "%s@%s,", addr->mailbox, addr->host);
                        }
                        addr = addr->next;
                }
index d622359c9d7f7ae89ccb0a4f7ccd32f60def87a6..4625281a118d1943a14135b8f0a2bea0fe543008 100644 (file)
@@ -74,16 +74,15 @@ int _php_ibase_string_to_quad(char const *id, ISC_QUAD *qd) /* {{{ */
 
 char *_php_ibase_quad_to_string(ISC_QUAD const qd) /* {{{ */
 {
-       char *result = (char *) emalloc(BLOB_ID_LEN+1);
+       char *result;
 
        /* shortcut for most common case */
        if (sizeof(ISC_QUAD) == sizeof(ISC_UINT64)) {
-               sprintf(result, "0x%0*" LL_MASK "x", 16, *(ISC_UINT64*)(void *) &qd);
+               spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16, *(ISC_UINT64*)(void *) &qd);
        } else {
                ISC_UINT64 res = ((ISC_UINT64) qd.gds_quad_high << 0x20) | qd.gds_quad_low;
-               sprintf(result, "0x%0*" LL_MASK "x", 16, res);
+               spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16, res);
        }
-       result[BLOB_ID_LEN] = '\0';
        return result;
 }
 /* }}} */
index 4b32a57eb413888e033efa25a76263c408f8db9b..52ac1abb3bfdf210461b209afdf80c8c9575314f 100644 (file)
@@ -1312,17 +1312,17 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, /* {{{
                        goto _sql_long;
 #else
                        if (scale == 0) {
-                               l = sprintf(string_data, "%" LL_MASK "d", *(ISC_INT64 *) data);
+                               l = snprintf(string_data, sizeof(string_data), "%" LL_MASK "d", *(ISC_INT64 *) data);
                                ZVAL_STRINGL(val,string_data,l,1);
                        } else {
                                ISC_INT64 n = *(ISC_INT64 *) data, f = scales[-scale];
 
                                if (n >= 0) {
-                                       l = sprintf(string_data, "%" LL_MASK "d.%0*" LL_MASK "d", n / f, -scale, n % f);
+                                       l = snprintf(string_data, sizeof(string_data), "%" LL_MASK "d.%0*" LL_MASK "d", n / f, -scale, n % f);
                                } else if (n <= -f) {
-                                       l = sprintf(string_data, "%" LL_MASK "d.%0*" LL_MASK "d", n / f, -scale, -n % f);                               
+                                       l = snprintf(string_data, sizeof(string_data), "%" LL_MASK "d.%0*" LL_MASK "d", n / f, -scale, -n % f);                         
                                 } else {
-                                       l = sprintf(string_data, "-0.%0*" LL_MASK "d", -scale, -n % f);
+                                       l = snprintf(string_data, sizeof(string_data), "-0.%0*" LL_MASK "d", -scale, -n % f);
                                }
                                ZVAL_STRINGL(val,string_data,l,1);
                        }
@@ -1337,11 +1337,11 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, /* {{{
                                long f = (long) scales[-scale];
 
                                if (n >= 0) {
-                                       l = sprintf(string_data, "%ld.%0*ld", n / f, -scale,  n % f);
+                                       l = snprintf(string_data, sizeof(string_data), "%ld.%0*ld", n / f, -scale,  n % f);
                                } else if (n <= -f) {
-                                       l = sprintf(string_data, "%ld.%0*ld", n / f, -scale,  -n % f);
+                                       l = snprintf(string_data, sizeof(string_data), "%ld.%0*ld", n / f, -scale,  -n % f);
                                } else {
-                                       l = sprintf(string_data, "-0.%0*ld", -scale, -n % f);
+                                       l = snprintf(string_data, sizeof(string_data), "-0.%0*ld", -scale, -n % f);
                                }
                                ZVAL_STRINGL(val,string_data,l,1);
                        }
@@ -1381,14 +1381,14 @@ format_date_time:
 #else
                                switch (type & ~1) {
                                        default:
-                                               l = sprintf(string_data, "%02d/%02d/%4d %02d:%02d:%02d", t.tm_mon+1, t.tm_mday, 
+                                               l = snprintf(string_data, sizeof(string_data), "%02d/%02d/%4d %02d:%02d:%02d", t.tm_mon+1, t.tm_mday, 
                                                        t.tm_year + 1900, t.tm_hour, t.tm_min, t.tm_sec);
                                                break;
                                        case SQL_TYPE_DATE:
-                                               l = sprintf(string_data, "%02d/%02d/%4d", t.tm_mon + 1, t.tm_mday, t.tm_year+1900);
+                                               l = snprintf(string_data, sizeof(string_data), "%02d/%02d/%4d", t.tm_mon + 1, t.tm_mday, t.tm_year+1900);
                                                break;
                                        case SQL_TYPE_TIME:
-                                               l = sprintf(string_data, "%02d:%02d:%02d", t.tm_hour, t.tm_min, t.tm_sec);
+                                               l = snprintf(string_data, sizeof(string_data), "%02d:%02d:%02d", t.tm_hour, t.tm_min, t.tm_sec);
                                                break;
                                }
 #endif
@@ -1520,7 +1520,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type)
                                                        Z_ARRVAL_P(return_value),alias,strlen(alias)+1,&p)) {
                                
                                case '\0':
-                                               sprintf(alias = buf, "%s_%02d", base, i++);
+                                               snprintf(alias = buf, sizeof(buf), "%s_%02d", base, i++);
                                        }
                        }
                }
index 4d610aa6ee5747162ad36570007fe40c553562dd..4ddb74e0d65948126eb374745b69e047fb838c7e 100644 (file)
@@ -322,7 +322,7 @@ query_loop:
                                        heap_p = heap_buf + res_size;
                                }
                                result += 2;
-                               sprintf(heap_p, "%s\n", result);
+                               snprintf(heap_p, sizeof(heap_buf_size), "%s\n", result);
                                heap_p += line_len +2;
                                goto query_loop; /* repeat until result is exhausted */
 
index 63d09e0eb3b91e38b5824faadc72d1a27d2a6293..a040cc68457bd6ae415b51f4c6c02742ac54e4db 100644 (file)
@@ -542,7 +542,7 @@ PHP_MINFO_FUNCTION(ibase)
 #endif
 
 #ifdef FB_API_VER
-       sprintf( (s = tmp), "Firebird API version %d", FB_API_VER);
+       snprintf( (s = tmp), sizeof(tmp), "Firebird API version %d", FB_API_VER);
 #elif (SQLDA_CURRENT_VERSION > 1)
        s =  "Interbase 7.0 and up";
 #elif !defined(DSC_null)
@@ -607,7 +607,7 @@ int _php_ibase_attach_db(char **args, int *len, long *largs, isc_db_handle *db T
                buf_len -= dpb_len;
        }
        if (largs[SYNC] && buf_len > 0) {
-               dpb_len = sprintf(dpb, buf_len, "%c\1%c", isc_dpb_force_write, largs[SYNC] == isc_spb_prp_wm_sync ? 1 : 0);
+               dpb_len = snprintf(dpb, buf_len, "%c\1%c", isc_dpb_force_write, largs[SYNC] == isc_spb_prp_wm_sync ? 1 : 0);
                dpb += dpb_len;
                buf_len -= dpb_len;
        }
@@ -1170,7 +1170,7 @@ PHP_FUNCTION(ibase_gen_id)
 
        PHP_IBASE_LINK_TRANS(link, ib_link, trans);
        
-       sprintf(query, "SELECT GEN_ID(%s,%ld) FROM rdb$database", generator, inc);
+       snprintf(query, sizeof(query), "SELECT GEN_ID(%s,%ld) FROM rdb$database", generator, inc);
 
        /* allocate a minimal descriptor area */
        out_sqlda.sqln = out_sqlda.sqld = 1;
@@ -1192,10 +1192,11 @@ PHP_FUNCTION(ibase_gen_id)
        /* don't return the generator value as a string unless it doesn't fit in a long */
 #if SIZEOF_LONG < 8
        if (result < LONG_MIN || result > LONG_MAX) {
-               char res[24];
+               char *res;
+               int l
 
-               sprintf(res, "%" LL_MASK "d", result);
-               RETURN_STRING(res,1);
+               l = spprintf(&res, 0, "%" LL_MASK "d", result);
+               RETURN_STRINGL(res, l, 0);
        }
 #endif
        RETURN_LONG((long)result);
index be95046cb953d3503843050fa3db21c9fd4a4f75..536b5797ba2fddfd3bfa57f39f4088a126f9a0aa 100644 (file)
@@ -1052,7 +1052,7 @@ PHP_MINFO_FUNCTION(mbstring)
        {
                char buf[32];
                php_info_print_table_row(2, "Multibyte (japanese) regex support", "enabled");
-               sprintf(buf, "%d.%d.%d",
+               snprintf(buf, sizeof(buf), "%d.%d.%d",
                        ONIGURUMA_VERSION_MAJOR,ONIGURUMA_VERSION_MINOR,ONIGURUMA_VERSION_TEENY);
                php_info_print_table_row(2, "Multibyte regex (oniguruma) version", buf);
        }
index e54b5c4089e6da3d01b28f5af6a7bbc4c796ccbe..26f89f223f7e68fe53d609ae513e22cd6c9cb59d 100644 (file)
@@ -76,7 +76,7 @@ regerror(int posix_ecode, const regex_t* reg, char* buf, size_t size)
     s = "";
   }
   else {
-    sprintf(tbuf, "undefined error code (%d)", posix_ecode);
+    snprintf(tbuf, sizeof(tbuf), "undefined error code (%d)", posix_ecode);
     s = tbuf;
   }
 
index 6339bcd6d63e1c370df45355af46fd9739bdfd6b..e8d59838f9a1253b3e79fc5b43575619f0c681b9 100644 (file)
@@ -250,9 +250,7 @@ static void php_msql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)
                                }
                                convert_to_string(yyhost);
                                host = Z_STRVAL_P(yyhost);
-                               hashed_details_length = Z_STRLEN_P(yyhost)+4+1;
-                               hashed_details = emalloc(hashed_details_length+1);
-                               sprintf(hashed_details,"msql_%s",Z_STRVAL_P(yyhost)); /* SAFE */
+                               hashed_details_length = spprintf(&hashed_details, 0, "msql_%s",Z_STRVAL_P(yyhost));
                        }
                        break;
                default:
index 6d62af0b1a94b92299c279308e008ffa03f1ad41..95329cd60f607f16e0a830c4dc70b2a091c14a5d 100644 (file)
@@ -373,9 +373,9 @@ PHP_MINFO_FUNCTION(mssql)
        php_info_print_table_start();
        php_info_print_table_header(2, "MSSQL Support", "enabled");
 
-       sprintf(buf, "%ld", MS_SQL_G(num_persistent));
+       snprintf(buf, sizeof(buf), "%ld", MS_SQL_G(num_persistent));
        php_info_print_table_row(2, "Active Persistent Links", buf);
-       sprintf(buf, "%ld", MS_SQL_G(num_links));
+       snprintf(buf, sizeof(buf), "%ld", MS_SQL_G(num_links));
        php_info_print_table_row(2, "Active Links", buf);
 
        php_info_print_table_row(2, "Library version", MSSQL_VERSION);
@@ -391,7 +391,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
        char *hashed_details;
        int hashed_details_length, new_link = 0;
        mssql_link mssql, *mssql_ptr;
-       char buffer[32];
+       char buffer[40];
 
        switch(ZEND_NUM_ARGS()) {
                case 0: /* defaults */
@@ -409,9 +409,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                                convert_to_string_ex(yyhost);
                                host = Z_STRVAL_PP(yyhost);
                                user=passwd=NULL;
-                               hashed_details_length = Z_STRLEN_PP(yyhost)+5+3;
-                               hashed_details = (char *) emalloc(hashed_details_length+1);
-                               sprintf(hashed_details,"mssql_%s__",Z_STRVAL_PP(yyhost));
+                               hashed_details_length = spprintf(&hashed_details, 0, "mssql_%s__", Z_STRVAL_PP(yyhost));
                        }
                        break;
                case 2: {
@@ -425,9 +423,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                                host = Z_STRVAL_PP(yyhost);
                                user = Z_STRVAL_PP(yyuser);
                                passwd=NULL;
-                               hashed_details_length = Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+5+3;
-                               hashed_details = (char *) emalloc(hashed_details_length+1);
-                               sprintf(hashed_details,"mssql_%s_%s_",Z_STRVAL_PP(yyhost),Z_STRVAL_PP(yyuser));
+                               hashed_details_length = spprintf(&hashed_details, 0, "mssql_%s_%s_",Z_STRVAL_PP(yyhost),Z_STRVAL_PP(yyuser));
                        }
                        break;
                case 3: {
@@ -442,9 +438,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                                host = Z_STRVAL_PP(yyhost);
                                user = Z_STRVAL_PP(yyuser);
                                passwd = Z_STRVAL_PP(yypasswd);
-                               hashed_details_length = Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+Z_STRLEN_PP(yypasswd)+5+3;
-                               hashed_details = (char *) emalloc(hashed_details_length+1);
-                               sprintf(hashed_details,"mssql_%s_%s_%s",Z_STRVAL_PP(yyhost),Z_STRVAL_PP(yyuser),Z_STRVAL_PP(yypasswd)); /* SAFE */
+                               hashed_details_length = spprintf(&hashed_details,0,"mssql_%s_%s_%s",Z_STRVAL_PP(yyhost),Z_STRVAL_PP(yyuser),Z_STRVAL_PP(yypasswd));
                        }
                        break;
                case 4: {
@@ -461,9 +455,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                                user = Z_STRVAL_PP(yyuser);
                                passwd = Z_STRVAL_PP(yypasswd);
                                new_link = Z_LVAL_PP(yynew_link);
-                               hashed_details_length = Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+Z_STRLEN_PP(yypasswd)+5+3;
-                               hashed_details = (char *) emalloc(hashed_details_length+1);
-                               sprintf(hashed_details,"mssql_%s_%s_%s",Z_STRVAL_PP(yyhost),Z_STRVAL_PP(yyuser),Z_STRVAL_PP(yypasswd)); /* SAFE */
+                               hashed_details_length = spprintf(&hashed_details,0,"mssql_%s_%s_%s",Z_STRVAL_PP(yyhost),Z_STRVAL_PP(yyuser),Z_STRVAL_PP(yypasswd));
                        }
                        break;
                default:
@@ -554,7 +546,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 
 #ifndef HAVE_FREETDS
                        if (MS_SQL_G(textlimit) != -1) {
-                               sprintf(buffer, "%li", MS_SQL_G(textlimit));
+                               snprintf(buffer, sizeof(buffer), "%li", MS_SQL_G(textlimit));
                                if (DBSETOPT(mssql.link, DBTEXTLIMIT, buffer)==FAIL) {
                                        efree(hashed_details);
                                        dbfreelogin(mssql.login);
@@ -564,7 +556,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                        }
 #endif
                        if (MS_SQL_G(textsize) != -1) {
-                               sprintf(buffer, "SET TEXTSIZE %li", MS_SQL_G(textsize));
+                               snprintf(buffer, sizeof(buffer), "SET TEXTSIZE %li", MS_SQL_G(textsize));
                                dbcmd(mssql.link, buffer);
                                dbsqlexec(mssql.link);
                                dbresults(mssql.link);
@@ -681,7 +673,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 
 #ifndef HAVE_FREETDS
                if (MS_SQL_G(textlimit) != -1) {
-                       sprintf(buffer, "%li", MS_SQL_G(textlimit));
+                       snprintf(buffer, sizeof(buffer), "%li", MS_SQL_G(textlimit));
                        if (DBSETOPT(mssql.link, DBTEXTLIMIT, buffer)==FAIL) {
                                efree(hashed_details);
                                dbfreelogin(mssql.login);
@@ -691,7 +683,7 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                }
 #endif
                if (MS_SQL_G(textsize) != -1) {
-                       sprintf(buffer, "SET TEXTSIZE %li", MS_SQL_G(textsize));
+                       snprintf(buffer, sizeof(buffer), "SET TEXTSIZE %li", MS_SQL_G(textsize));
                        dbcmd(mssql.link, buffer);
                        dbsqlexec(mssql.link);
                        dbresults(mssql.link);
@@ -929,8 +921,7 @@ static void php_mssql_get_column_content_with_type(mssql_link *mssql_ptr,int off
                                        }
                        
                                        res_length = 19;
-                                       res_buf = (unsigned char *) emalloc(res_length+1);
-                                       sprintf(res_buf, "%d-%02d-%02d %02d:%02d:%02d" , dateinfo.year, dateinfo.month, dateinfo.day, dateinfo.hour, dateinfo.minute, dateinfo.second);
+                                       spprintf(&res_buf, 0, "%d-%02d-%02d %02d:%02d:%02d" , dateinfo.year, dateinfo.month, dateinfo.day, dateinfo.hour, dateinfo.minute, dateinfo.second);
                                }
                
                                ZVAL_STRINGL(result, res_buf, res_length, 0);
@@ -999,8 +990,7 @@ static void php_mssql_get_column_content_without_type(mssql_link *mssql_ptr,int
                        }
                        
                        res_length = 19;
-                       res_buf = (unsigned char *) emalloc(res_length+1);
-                       sprintf(res_buf, "%d-%02d-%02d %02d:%02d:%02d" , dateinfo.year, dateinfo.month, dateinfo.day, dateinfo.hour, dateinfo.minute, dateinfo.second);
+                       spprintf(&res_buf, 0, "%d-%02d-%02d %02d:%02d:%02d" , dateinfo.year, dateinfo.month, dateinfo.day, dateinfo.hour, dateinfo.minute, dateinfo.second);
                }
 
                ZVAL_STRINGL(result, res_buf, res_length, 0);
index 6adb72454b7410ef77a56856553b3c660b5ebd23..636e80ef1b6e36c53a29500b9a503eca43995d39 100644 (file)
@@ -441,9 +441,9 @@ PHP_MINFO_FUNCTION(mysql)
 
        php_info_print_table_start();
        php_info_print_table_header(2, "MySQL Support", "enabled");
-       sprintf(buf, "%ld", MySG(num_persistent));
+       snprintf(buf, sizeof(buf), "%ld", MySG(num_persistent));
        php_info_print_table_row(2, "Active Persistent Links", buf);
-       sprintf(buf, "%ld", MySG(num_links));
+       snprintf(buf, sizeof(buf), "%ld", MySG(num_links));
        php_info_print_table_row(2, "Active Links", buf);
        php_info_print_table_row(2, "Client API version", mysql_get_client_info());
 #if !defined (PHP_WIN32) && !defined (NETWARE)
@@ -513,9 +513,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                }
                host_and_port=passwd=NULL;
                user=php_get_current_user();
-               hashed_details_length = strlen(user)+5+3;
-               hashed_details = (char *) emalloc(hashed_details_length+1);
-               sprintf(hashed_details, "mysql__%s_", user);
+               hashed_details_length = spprintf(&hashed_details, 0, "mysql__%s_", user);
                client_flags = CLIENT_INTERACTIVE;
        } else {
                host_and_port = MySG(default_host);
@@ -538,9 +536,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                        client_flags ^= CLIENT_LOCAL_FILES;
                }
 
-               hashed_details_length = sizeof("mysql___")-1 + strlen(SAFE_STRING(host_and_port))+strlen(SAFE_STRING(user))+strlen(SAFE_STRING(passwd));
-               hashed_details = (char *) emalloc(hashed_details_length+1);
-               sprintf(hashed_details, "mysql_%s_%s_%s", SAFE_STRING(host_and_port), SAFE_STRING(user), SAFE_STRING(passwd));
+               hashed_details_length = spprintf(&hashed_details, 0, "mysql_%s_%s_%s", SAFE_STRING(host_and_port), SAFE_STRING(user), SAFE_STRING(passwd));
        }
 
        /* We cannot use mysql_port anymore in windows, need to use
@@ -1137,8 +1133,8 @@ static void php_mysql_do_query_general(char *query, zval **mysql_link, int link_
                if (!strncasecmp("select", query, 6)){
                        MYSQL_ROW       row;
                        
-                       char *newquery = (char *)emalloc(strlen(query) + 10);   
-                       sprintf ((char *)newquery, "EXPLAIN %s", query);
+                       char *newquery;
+                       spprintf(&newquery, 0, "EXPLAIN %s", query);
                        mysql_real_query(&mysql->conn, newquery, strlen(newquery));
                        efree (newquery);
                        if (mysql_errno(&mysql->conn)) {
index bf0c902a6883b126a72db8327f6aad822ff8e137..2656432757f423a33f629509c6cf765c4e93ccd7 100644 (file)
@@ -1058,7 +1058,7 @@ int php_local_infile_init(void **ptr, const char *filename, void *userdata)
        mysql->li_stream = php_stream_open_wrapper_ex((char *)filename, "r", 0, NULL, context);
 
        if (mysql->li_stream == NULL) {
-               sprintf((char *)data->error_msg, "Can't find file '%-.64s'.", filename);
+               snprintf((char *)data->error_msg, sizeof(data->error_msg), "Can't find file '%-.64s'.", filename);
                return 1;
        }
 
index 18afcc5b62c2a3ec07ea29c23d7cff430f580e1f..41ccff187bd3a534e785cb3904695d0e613c49ca 100644 (file)
@@ -751,7 +751,7 @@ PHP_FUNCTION(mysqli_stmt_fetch)
                                                                 * may be negative. Therefor we cannot use MYSQLI_LLU_SPEC and must
                                                                 * use MYSQLI_LL_SPEC.
                                                                 */
-                                                               sprintf((char *)&tmp, (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval);
+                                                               snprintf(tmp, sizeof(tmp), (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval);
                                                                ZVAL_UTF8_STRING(stmt->result.vars[i], tmp, ZSTR_DUPLICATE);
                                                        } else {
                                                                ZVAL_LONG(stmt->result.vars[i], llval);
index 224c1478cb603b7c61899b5768aad6d52204bc4f..63c5e01f5d7263c4f15448c4b3acd22314446801 100644 (file)
@@ -85,9 +85,9 @@ static int __func(mysqli_object *obj, zval **retval TSRMLS_DC) \
                if (l < LONG_MAX) {\
                        ZVAL_LONG(*retval, l);\
                } else { \
-                       char ret[40]; \
-                       sprintf(ret, MYSQLI_LLU_SPEC, (my_ulonglong)l); \
-                       ZVAL_STRING(*retval, ret, 1); \
+                       char *ret; \
+                       int l = spprintf(&ret, 0, MYSQLI_LLU_SPEC, (my_ulonglong)l); \
+                       ZVAL_STRINGL(*retval, ret, l, 0); \
                } \
        }\
        return SUCCESS;\
@@ -175,9 +175,9 @@ static int link_affected_rows_read(mysqli_object *obj, zval **retval TSRMLS_DC)
                if (rc < LONG_MAX) {
                        ZVAL_LONG(*retval, rc);
                } else {
-                       char ret[40];
-                       sprintf(ret, MYSQLI_LLU_SPEC, (my_ulonglong) rc);
-                       ZVAL_STRING(*retval, ret, 1);
+                       char *ret;
+                       int l = spprintf(&ret, 0, MYSQLI_LLU_SPEC, (my_ulonglong) rc);
+                       ZVAL_STRINGL(*retval, ret, l, 0);
                }
        }
        return SUCCESS;
@@ -294,9 +294,9 @@ static int stmt_affected_rows_read(mysqli_object *obj, zval **retval TSRMLS_DC)
                if (rc < LONG_MAX) {
                        ZVAL_LONG(*retval, rc);
                } else {
-                       char ret[40];
-                       sprintf(ret, MYSQLI_LLU_SPEC, (my_ulonglong) rc);
-                       ZVAL_STRING(*retval, ret, 1);
+                       char *ret;
+                       int l = spprintf(&ret, 0, MYSQLI_LLU_SPEC, (my_ulonglong) rc);
+                       ZVAL_STRINGL(*retval, ret, l, 0);
                }
        }
        return SUCCESS;
index 0cf72d0b8444085c554ff7611dc7a107f9e7faf0..d80fc31c42af5a6fa0175820cb474d2eba2554f4 100644 (file)
@@ -257,9 +257,9 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
        if ((__val) < LONG_MAX) {               \
                RETURN_LONG((__val));           \
        } else {                                \
-               char ret[40];                   \
-               sprintf(ret, "%llu", (__val));  \
-               RETURN_STRING(ret,1);           \
+               char *ret;                      \
+               int l = spprintf(&ret, 0, "%llu", (__val));     \
+               RETURN_STRINGL(ret, l, 0);              \
        }                                       \
 }
 
index 2926ba74d852ad1489044b273f43ad8c95891dc8..375511c080af211ee1a454cf99ad7087f06933c7 100644 (file)
@@ -676,9 +676,9 @@ PHP_MINFO_FUNCTION(oci)
        php_info_print_table_row(2, "Version", "1.2.2");
        php_info_print_table_row(2, "Revision", "$Revision$");
 
-       sprintf(buf, "%ld", OCI_G(num_persistent));
+       snprintf(buf, sizeof(buf), "%ld", OCI_G(num_persistent));
        php_info_print_table_row(2, "Active Persistent Connections", buf);
-       sprintf(buf, "%ld", OCI_G(num_links));
+       snprintf(buf, sizeof(buf), "%ld", OCI_G(num_links));
        php_info_print_table_row(2, "Active Connections", buf);
 
 #if !defined(PHP_WIN32) && !defined(HAVE_OCI_INSTANT_CLIENT)
@@ -687,7 +687,7 @@ PHP_MINFO_FUNCTION(oci)
        php_info_print_table_row(2, "Libraries Used", PHP_OCI8_SHARED_LIBADD );
 #else 
 #      if defined(HAVE_OCI_INSTANT_CLIENT) && defined(OCI_MAJOR_VERSION) && defined(OCI_MINOR_VERSION) 
-       sprintf(buf, "%d.%d", OCI_MAJOR_VERSION, OCI_MINOR_VERSION);
+       snprintf(buf, sizeof(buf), "%d.%d", OCI_MAJOR_VERSION, OCI_MINOR_VERSION);
        php_info_print_table_row(2, "Oracle Instant Client Version", buf);
 #      endif
 #endif
index a9d19c8f1884056941b304062ce15f537ac424b0..b242d111da9fdcf62d71f701b5a7df24f6bb8ca5 100644 (file)
@@ -544,9 +544,9 @@ PHP_MINFO_FUNCTION(odbc)
 
        php_info_print_table_start();
        php_info_print_table_header(2, "ODBC Support", "enabled");
-       sprintf(buf, "%ld", ODBCG(num_persistent));
+       snprintf(buf, sizeof(buf), "%ld", ODBCG(num_persistent));
        php_info_print_table_row(2, "Active Persistent Links", buf);
-       sprintf(buf, "%ld", ODBCG(num_links));
+       snprintf(buf, sizeof(buf), "%ld", ODBCG(num_links));
        php_info_print_table_row(2, "Active Links", buf);
        php_info_print_table_row(2, "ODBC library", PHP_ODBC_TYPE);
 #ifndef PHP_WIN32
@@ -588,8 +588,8 @@ void odbc_sql_error(ODBC_SQL_ERROR_PARAMS)
         */
        rc = SQLError(henv, conn, stmt, state, &error, errormsg, sizeof(errormsg)-1, &errormsgsize);
        if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
-               sprintf(state, "HY000");
-               sprintf(errormsg, "Failed to fetch error message");
+               snprintf(state, sizeof(state), "HY000");
+               snprintf(errormsg, sizeof(errormsg), "Failed to fetch error message");
        }
        if (conn_resource) {
                memcpy(conn_resource->laststate, state, sizeof(state));
@@ -1155,7 +1155,7 @@ PHP_FUNCTION(odbc_cursor)
                                                result->stmt, state, &error, errormsg,
                                                sizeof(errormsg)-1, &errormsgsize);
                        if (!strncmp(state,"S1015",5)) {
-                               sprintf(cursorname,"php_curs_%d", (int)result->stmt);
+                               snprintf(cursorname, max_len+1, "php_curs_%d", (int)result->stmt);
                                if (SQLSetCursorName(result->stmt,cursorname,SQL_NTS) != SQL_SUCCESS) {
                                        odbc_sql_error(result->conn_ptr, result->stmt, "SQLSetCursorName");
                                        RETVAL_FALSE;
@@ -2148,8 +2148,7 @@ int odbc_sqlconnect(odbc_connection **conn, char *db, char *uid, char *pwd, int
                if (strstr((char*)db, ";")) {
                        direct = 1;
                        if (uid && !strstr ((char*)db, "uid") && !strstr((char*)db, "UID")) {
-                               ldb = (char*) emalloc(strlen(db) + strlen(uid) + strlen(pwd) + 12);
-                               sprintf(ldb, "%s;UID=%s;PWD=%s", db, uid, pwd);
+                               spprintf(&ldb, 0, "%s;UID=%s;PWD=%s", db, uid, pwd);
                        } else {
                                ldb_len = strlen(db)+1;
                                ldb = (char*) emalloc(ldb_len);
index b5fdc348cc749cdf16b38fbb62fd186b586ca942..15b76371bdab6d10c6a08eaaa54a7980ae7dd061 100644 (file)
@@ -302,7 +302,7 @@ static time_t asn1_time_to_time_t(ASN1_UTCTIME * timestr TSRMLS_DC) /* {{{ */
 /*
        This is how the time string is formatted:
 
-   sprintf(p,"%02d%02d%02d%02d%02d%02dZ",ts->tm_year%100,
+   snprintf(p, sizeof(p), "%02d%02d%02d%02d%02d%02dZ",ts->tm_year%100,
       ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec);
 */
 
index 0e57e56514c553f1a1bd01d1246ab48448cf5e0f..4db73485d697106ba0299575aa4dc53f87665256 100644 (file)
@@ -1188,8 +1188,7 @@ if ((sep = isdirectory(pathname)) != 0)
     while ((nextfile = readdirectory(dir)) != NULL)
       {
       int frc, blen;
-      sprintf(buffer, "%.512s%c%.128s", pathname, sep, nextfile);
-      blen = strlen(buffer);
+      blen = snprintf(buffer, sizeof(buffer), "%.512s%c%.128s", pathname, sep, nextfile);
 
       if (exclude_compiled != NULL &&
           pcre_exec(exclude_compiled, NULL, buffer, blen, 0, 0, NULL, 0) >= 0)
@@ -1281,7 +1280,7 @@ for (op = optionlist; op->one_char != 0; op++)
   {
   int n;
   char s[4];
-  if (op->one_char > 0) sprintf(s, "-%c,", op->one_char); else strcpy(s, "   ");
+  if (op->one_char > 0) snprintf(s, sizeof(s), "-%c,", op->one_char); else strcpy(s, "   ");
   printf("  %s --%s%n", s, op->long_name, &n);
   n = 30 - n;
   if (n < 1) n = 1;
@@ -1355,7 +1354,7 @@ ordin(int n)
 {
 static char buffer[8];
 char *p = buffer;
-sprintf(p, "%d", n);
+snprintf(p, sizeof(buffer), "%d", n);
 while (*p != 0) p++;
 switch (n%10)
   {
@@ -1401,7 +1400,7 @@ if (pattern_count >= MAX_PATTERN_COUNT)
   return FALSE;
   }
 
-sprintf(buffer, "%s%.*s%s", prefix[process_options], MBUFTHIRD, pattern,
+snprintf(buffer, sizeof(buffer), "%s%.*s%s", prefix[process_options], MBUFTHIRD, pattern,
   suffix[process_options]);
 pattern_list[pattern_count] =
   pcre_compile(buffer, options, &error, &errptr, pcretables);
@@ -1463,7 +1462,7 @@ if ((process_options & PO_FIXED_STRINGS) != 0)
     char *p = end_of_line(pattern, eop, &ellength);
     if (ellength == 0)
       return compile_single_pattern(pattern, options, filename, count);
-    sprintf(buffer, "%.*s", p - pattern - ellength, pattern);
+    snprintf(buffer, sizeof(buffer), "%.*s", p - pattern - ellength, pattern);
     pattern = p;
     if (!compile_single_pattern(buffer, options, filename, count))
       return FALSE;
@@ -1579,8 +1578,8 @@ for (i = 1; i < argc; i++)
         char buff1[24];
         char buff2[24];
         int baselen = opbra - op->long_name;
-        sprintf(buff1, "%.*s", baselen, op->long_name);
-        sprintf(buff2, "%s%.*s", buff1, strlen(op->long_name) - baselen - 2,
+        snprintf(buff1, sizeof(buff1), "%.*s", baselen, op->long_name);
+        snprintf(buff2, sizeof(buff2), "%s%.*s", buff1, strlen(op->long_name) - baselen - 2,
           opbra + 1);
         if (strcmp(arg, buff1) == 0 || strcmp(arg, buff2) == 0)
           break;
@@ -1935,7 +1934,7 @@ for (j = 0; j < pattern_count; j++)
   if (error != NULL)
     {
     char s[16];
-    if (pattern_count == 1) s[0] = 0; else sprintf(s, " number %d", j);
+    if (pattern_count == 1) s[0] = 0; else snprintf(s, sizeof(s), " number %d", j);
     fprintf(stderr, "pcregrep: Error while studying regex%s: %s\n", s, error);
     return 2;
     }
index 31c7a31ab3e616c099d880e8a8c29cd8a58af243..3cee2aa33fac5d43f258ee70ccbdd5052c5b1ebd 100644 (file)
@@ -158,7 +158,7 @@ addlength = (preg != NULL && (int)preg->re_erroffset != -1)?
 if (errbuf_size > 0)
   {
   if (addlength > 0 && errbuf_size >= length + addlength)
-    sprintf(errbuf, "%s%s%-6d", message, addmessage, (int)preg->re_erroffset);
+    snprintf(errbuf, errbuf_size, "%s%s%-6d", message, addmessage, (int)preg->re_erroffset);
   else
     {
     strncpy(errbuf, message, errbuf_size - 1);
index d6ae8d17d6fd66a855d5f92212066db2dcf1d85b..6c9cb9bbe5815c70c7e694177e45937bb59129ec 100644 (file)
@@ -211,6 +211,8 @@ static void set_param_type(enum pdo_param_type *param_type, XSQLVAR const *var)
 #define FETCH_BUF(buf,type,len,lenvar) ((buf) = (buf) ? (buf) : \
        emalloc((len) ? (len * sizeof(type)) : ((*(unsigned long*)lenvar) = sizeof(type))))
 
+#define CHAR_BUF_LEN 24
+
 /* fetch a blob into a fetch buffer */
 static int firebird_fetch_blob(pdo_stmt_t *stmt, int colno, char **ptr, /* {{{ */
        unsigned long *len, ISC_QUAD *blob_id TSRMLS_DC)
@@ -322,16 +324,16 @@ static int firebird_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr,  /* {{
                                        n = *(ISC_INT64*)var->sqldata;
                        }
                                
-                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, 24, NULL);
+                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);
                        
                        if (n >= 0) {
-                               *len = sprintf(*ptr, "%" LL_MASK "d.%0*" LL_MASK "d", 
+                               *len = snprintf(*ptr, CHAR_BUF_LEN, "%" LL_MASK "d.%0*" LL_MASK "d", 
                                        n / f, -var->sqlscale, n % f);
                        } else if (n < -f) {
-                               *len = sprintf(*ptr, "%" LL_MASK "d.%0*" LL_MASK "d",
+                               *len = snprintf(*ptr, CHAR_BUF_LEN, "%" LL_MASK "d.%0*" LL_MASK "d",
                                        n / f, -var->sqlscale, -n % f);                         
                         } else {
-                               *len = sprintf(*ptr, "-0.%0*" LL_MASK "d", -var->sqlscale, -n % f);
+                               *len = snprintf(*ptr, CHAR_BUF_LEN, "-0.%0*" LL_MASK "d", -var->sqlscale, -n % f);
                        }
                } else {
                        switch (var->sqltype & ~1) {
@@ -353,24 +355,24 @@ static int firebird_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr,  /* {{
                                        break;
 /* --- cut here --- */
                                case SQL_SHORT:
-                                   *ptr = FETCH_BUF(S->fetch_buf[colno], char, 24, NULL);
-                                       *len = sprintf(*ptr, "%d", *(short*)var->sqldata);
+                                   *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);
+                                       *len = snprintf(*ptr, CHAR_BUF_LEN"%d", *(short*)var->sqldata);
                                        break;
                                case SQL_LONG:
-                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, 24, NULL);
-                                       *len = sprintf(*ptr, "%ld", *(ISC_LONG*)var->sqldata);
+                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);
+                                       *len = snprintf(*ptr, CHAR_BUF_LEN"%ld", *(ISC_LONG*)var->sqldata);
                                        break;
                                case SQL_INT64:
-                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, 24, NULL);
-                                       *len = sprintf(*ptr, "%" LL_MASK "d", *(ISC_INT64*)var->sqldata);
+                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);
+                                       *len = snprintf(*ptr, CHAR_BUF_LEN"%" LL_MASK "d", *(ISC_INT64*)var->sqldata);
                                        break;
                                case SQL_FLOAT:
-                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, 24, NULL);
-                                       *len = sprintf(*ptr, "%f", *(float*)var->sqldata);
+                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);
+                                       *len = snprintf(*ptr, CHAR_BUF_LEN"%f", *(float*)var->sqldata);
                                        break;
                                case SQL_DOUBLE:
-                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, 24, NULL);
-                                       *len = sprintf(*ptr, "%f" , *(double*)var->sqldata);
+                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);
+                                       *len = snprintf(*ptr, CHAR_BUF_LEN"%f" , *(double*)var->sqldata);
                                        break;
 /* --- cut here --- */
 #if abies_0
@@ -391,8 +393,8 @@ static int firebird_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr,  /* {{
 #if SIZEOF_LONG == 8
                                        *ptr = var->sqldata;
 #else
-                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, 20, NULL);
-                                       *len = sprintf(*ptr, "%" LL_MASK "d", *(ISC_INT64*)var->sqldata);
+                                       *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);
+                                       *len = snprintf(*ptr, CHAR_BUF_LEN, "%" LL_MASK "d", *(ISC_INT64*)var->sqldata);
 #endif
                                        break;
                                case SQL_FLOAT:
index 937854305935a5259a52c3fd3d21ce24421bcf04..9f6cc62fc46ae1d8e33d257b6c58df45d27f7632 100755 (executable)
@@ -387,8 +387,8 @@ static int pdo_odbc_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_D
                /* Force UID and PWD to be set in the DSN */
                if (dbh->username && *dbh->username && !strstr(dbh->data_source, "uid")
                                && !strstr(dbh->data_source, "UID")) {
-                       char *dsn = pemalloc(strlen(dbh->data_source) + strlen(dbh->username) + strlen(dbh->password) + sizeof(";UID=;PWD="), dbh->is_persistent);
-                       sprintf(dsn, "%s;UID=%s;PWD=%s", dbh->data_source, dbh->username, dbh->password);
+                       char *dsn;
+                       spprintf(&dsn, 0, "%s;UID=%s;PWD=%s", dbh->data_source, dbh->username, dbh->password);
                        pefree((char*)dbh->data_source, dbh->is_persistent);
                        dbh->data_source = dsn;
                }
index 4b1da706135efd0a6e6cc72b608012bbd1c20d10..9ea09addffb099fd4f992eab90ca514acbd7763b 100644 (file)
@@ -599,9 +599,9 @@ PHP_MINFO_FUNCTION(pgsql)
        php_info_print_table_row(2, "SSL support", "disabled");
 #endif
 #endif /* HAVE_PG_CONFIG_H */  
-       sprintf(buf, "%ld", PGG(num_persistent));
+       snprintf(buf, sizeof(buf), "%ld", PGG(num_persistent));
        php_info_print_table_row(2, "Active Persistent Links", buf);
-       sprintf(buf, "%ld", PGG(num_links));
+       snprintf(buf, sizeof(buf), "%ld", PGG(num_links));
        php_info_print_table_row(2, "Active Links", buf);
        php_info_print_table_end();
 
index b123012817c6259844bf40e14c9950ad3f40acb9..95ba28c0573a27eb267324b9783064d8e5cc94c1 100644 (file)
@@ -778,7 +778,7 @@ static PHP_FUNCTION(pspell_config_ignore)
        convert_to_long_ex(pignore);
        ignore = Z_LVAL_PP(pignore);
 
-       sprintf(ignore_str, "%ld", ignore);
+       snprintf(ignore_str, sizeof(ignore_str), "%ld", ignore);
 
        pspell_config_replace(config, "ignore", ignore_str);
        RETURN_TRUE;
index c307bf7b9ccd67d0f542355b72c02ed617cfe664..2ba98a2027d3f8fc4d4e73bafdde65088af56929 100644 (file)
@@ -269,7 +269,7 @@ PHP_MINIT_FUNCTION(ps_mm)
                return FAILURE;
        }
 
-       if (!sprintf(euid,"%d", geteuid())) {
+       if (!snprintf(euid, sizeof(euid), "%d", geteuid())) {
                return FAILURE;
        }
                
index 19d9ecf72d6e3241c1c22a87f721cb042ed7067e..922835fd33c479878c1a99638129e3664337c11b 100644 (file)
@@ -287,10 +287,8 @@ PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS)
                remote_addr = Z_STRVAL_PP(token);
        }
 
-       buf = emalloc(PS_ID_INITIAL_SIZE);
-
        /* maximum 15+19+19+10 bytes */ 
-       sprintf(buf, "%.15s%ld%ld%0.8F", remote_addr ? remote_addr : "", 
+       spprintf(&buf, 0, "%.15s%ld%ld%0.8F", remote_addr ? remote_addr : "", 
                        tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
 
        switch (PS(hash_func)) {
@@ -936,7 +934,7 @@ static inline void strcpy_gmt(char *ubuf, time_t *when)
        
        php_gmtime_r(when, &tm);
        
-       n = sprintf(buf, "%s, %02d %s %d %02d:%02d:%02d GMT", /* SAFE */
+       n = snprintf(buf, sizeof(buf), "%s, %02d %s %d %02d:%02d:%02d GMT", /* SAFE */
                                week_days[tm.tm_wday], tm.tm_mday, 
                                month_names[tm.tm_mon], tm.tm_year + 1900, 
                                tm.tm_hour, tm.tm_min, 
@@ -977,7 +975,7 @@ CACHE_LIMITER_FUNC(public)
        strcpy_gmt(buf + sizeof(EXPIRES) - 1, &now);
        ADD_HEADER(buf);
        
-       sprintf(buf, "Cache-Control: public, max-age=%ld", PS(cache_expire) * 60); /* SAFE */
+       snprintf(buf, sizeof(buf) , "Cache-Control: public, max-age=%ld", PS(cache_expire) * 60); /* SAFE */
        ADD_HEADER(buf);
        
        last_modified(TSRMLS_C);
@@ -987,7 +985,7 @@ CACHE_LIMITER_FUNC(private_no_expire)
 {
        char buf[MAX_STR + 1];
        
-       sprintf(buf, "Cache-Control: private, max-age=%ld, pre-check=%ld", PS(cache_expire) * 60, PS(cache_expire) * 60); /* SAFE */
+       snprintf(buf, sizeof(buf), "Cache-Control: private, max-age=%ld, pre-check=%ld", PS(cache_expire) * 60, PS(cache_expire) * 60); /* SAFE */
        ADD_HEADER(buf);
 
        last_modified(TSRMLS_C);
index ae07e5373f6b6ac640be805e5a077c21dca7d40d..08868874e84f8d2927c66ae1e0c8f6945b158e4f 100644 (file)
@@ -138,14 +138,14 @@ PHP_FUNCTION(confirm_extname_compiled)
 {
        char *arg = NULL;
        int arg_len, len;
-       char string[256];
+       char *strg;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
                return;
        }
 
-       len = sprintf(string, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "extname", arg);
-       RETURN_STRINGL(string, len, 1);
+       len = spprintf(&strg, 0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "extname", arg);
+       RETURN_STRINGL(strg, len, 0);
 }
 /* }}} */
 /* The previous line is meant for vim and emacs, so it can correctly fold and 
index 133875e80ff7c87bf8aa63c49143d909d3dd96ca..c062696468b5b47bbbb3b03b484ebb01fa5449df 100644 (file)
@@ -904,7 +904,7 @@ static xmlNodePtr to_xml_long(encodeTypePtr type, zval *data, int style, xmlNode
        if (Z_TYPE_P(data) == IS_DOUBLE) {
                char s[256];
 
-               sprintf(s, "%0.0f",floor(Z_DVAL_P(data)));
+               snprintf(s, sizeof(s), "%0.0f",floor(Z_DVAL_P(data)));
                xmlNodeSetContent(ret, BAD_CAST(s));
        } else {
                zval tmp = *data;
@@ -2660,12 +2660,12 @@ static xmlNodePtr to_xml_datetime_ex(encodeTypePtr type, zval *data, char *forma
 
                /* Time zone support */
 #ifdef HAVE_TM_GMTOFF
-               sprintf(tzbuf, "%c%02d:%02d", (ta->tm_gmtoff < 0) ? '-' : '+', abs(ta->tm_gmtoff / 3600), abs( (ta->tm_gmtoff % 3600) / 60 ));
+               snprintf(tzbuf, sizeof(tzbuf), "%c%02d:%02d", (ta->tm_gmtoff < 0) ? '-' : '+', abs(ta->tm_gmtoff / 3600), abs( (ta->tm_gmtoff % 3600) / 60 ));
 #else
 # ifdef __CYGWIN__
-               sprintf(tzbuf, "%c%02d:%02d", ((ta->tm_isdst ? _timezone - 3600:_timezone)>0)?'-':'+', abs((ta->tm_isdst ? _timezone - 3600 : _timezone) / 3600), abs(((ta->tm_isdst ? _timezone - 3600 : _timezone) % 3600) / 60));
+               snprintf(tzbuf, sizeof(tzbuf), "%c%02d:%02d", ((ta->tm_isdst ? _timezone - 3600:_timezone)>0)?'-':'+', abs((ta->tm_isdst ? _timezone - 3600 : _timezone) / 3600), abs(((ta->tm_isdst ? _timezone - 3600 : _timezone) % 3600) / 60));
 # else
-               sprintf(tzbuf, "%c%02d:%02d", ((ta->tm_isdst ? timezone - 3600:timezone)>0)?'-':'+', abs((ta->tm_isdst ? timezone - 3600 : timezone) / 3600), abs(((ta->tm_isdst ? timezone - 3600 : timezone) % 3600) / 60));
+               snprintf(tzbuf, sizeof(tzbuf), "%c%02d:%02d", ((ta->tm_isdst ? timezone - 3600:timezone)>0)?'-':'+', abs((ta->tm_isdst ? timezone - 3600 : timezone) / 3600), abs(((ta->tm_isdst ? timezone - 3600 : timezone) % 3600) / 60));
 # endif
 #endif
                if (strcmp(tzbuf,"+00:00") == 0) {
index afa0a27283ba78d920b182bc6a7456ca2104a12c..160a2042899ca249d3d795f51f58cf1ba991a07a 100644 (file)
@@ -468,7 +468,7 @@ try_again:
                                        unsigned int ctx;
 
                                        PHP_MD5Init(&md5ctx);
-                                       sprintf(cnonce, "%d", php_rand_r(&ctx));
+                                       snprintf(cnonce, sizeof(cnonce), "%d", php_rand_r(&ctx));
                                        PHP_MD5Update(&md5ctx, (unsigned char*)cnonce, strlen(cnonce));
                                        PHP_MD5Final(hash, &md5ctx);
                                        make_digest(cnonce, hash);
index 88bb04ef085a1b76e456f646488ad0dd51c09927..09332e0d5f7bcb87471b298b7c0f26dc7db74994 100644 (file)
@@ -464,8 +464,7 @@ static void php_soap_prepare_globals()
                if (defaultEncoding[i].details.type_str) {
                        if (defaultEncoding[i].details.ns != NULL) {
                                char *ns_type;
-                               ns_type = emalloc(strlen(defaultEncoding[i].details.ns) + strlen(defaultEncoding[i].details.type_str) + 2);
-                               sprintf(ns_type, "%s:%s", defaultEncoding[i].details.ns, defaultEncoding[i].details.type_str);
+                               spprintf(&ns_type, 0, "%s:%s", defaultEncoding[i].details.ns, defaultEncoding[i].details.type_str);
                                zend_hash_add(&defEnc, ns_type, strlen(ns_type) + 1, &enc, sizeof(encodePtr), NULL);
                                efree(ns_type);
                        } else {
index 6bb921231649958ec21acddea8913c17f712982d..60cba0539fb86fbc7173ea77fbd6b998590db13b 100644 (file)
@@ -409,7 +409,7 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int
        switch (type) {
                case DNS_T_A:
                        add_ascii_assoc_string(*subarray, "type", "A", 1);
-                       sprintf(name, "%d.%d.%d.%d", cp[0], cp[1], cp[2], cp[3]);
+                       snprintf(name, sizeof(name), "%d.%d.%d.%d", cp[0], cp[1], cp[2], cp[3]);
                        add_ascii_assoc_rt_string(*subarray, "ip", name, ZSTR_DUPLICATE);
                        cp += dlen;
                        break;
index 26894de1b11d9f0ef6c04044904ff5c17f6555e7..7099df673f0154a365c6a4b26daca3cd51682828 100644 (file)
@@ -94,8 +94,6 @@ PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, t
        if (domain) {
                len += domain_len;
        }
-       cookie = emalloc(len + 100);
-
        if (value && value_len == 0) {
                /* 
                 * MSIE doesn't delete a cookie when you set it to a null value
@@ -104,10 +102,10 @@ PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, t
                 */
                time_t t = time(NULL) - 31536001;
                dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0 TSRMLS_CC);
-               sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);
+               spprintf(&cookie, 0, "Set-Cookie: %s=deleted; expires=%s", name, dt);
                efree(dt);
        } else {
-               sprintf(cookie, "Set-Cookie: %s=%s", name, value ? encoded_value : "");
+               spprintf(&cookie, 0, "Set-Cookie: %s=%s", name, value ? encoded_value : "");
                if (expires > 0) {
                        strcat(cookie, "; expires=");
                        dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, expires, 0 TSRMLS_CC);
index 2b061bd2604288ad6a68efeff59154df2d10abf0..a422d33f6182c06db8f5f32bf7b20afa63d0bd42 100644 (file)
@@ -454,7 +454,7 @@ static int php_read_APP(php_stream * stream, unsigned int marker, zval *info TSR
                return 0;
        }
 
-       sprintf(markername, "APP%d", marker - M_APP0);
+       snprintf(markername, sizeof(markername), "APP%d", marker - M_APP0);
 
        if (zend_ascii_hash_find(Z_ARRVAL_P(info), markername, strlen(markername)+1, (void **) &tmp) == FAILURE) {
                /* XXX we onyl catch the 1st tag of it's kind! */
index fb25c822033c922ba5ed13ac1c3a01873d3a64a2..f1ee94e231e766db182b6964e2b8f240ae8b4c5b 100644 (file)
@@ -622,10 +622,10 @@ PHP_FUNCTION(unpack)
 
                        if (arg != 1 || namelen == 0) {
                                /* Need to add element number to name */
-                               sprintf(n, "%.*s%d", namelen, name, i + 1);
+                               snprintf(n, sizeof(n), "%.*s%d", namelen, name, i + 1);
                        } else {
                                /* Truncate name to next format code or end of string */
-                               sprintf(n, "%.*s", namelen, name);
+                               snprintf(n, sizeof(n), "%.*s", namelen, name);
                        }
 
                        if (size != 0 && size != -1 && INT_MAX - size + 1 < inputpos) {
index 5614b1710a1a703515f1b3830f3c57d1edc5815f..9e8e1a3f6217201308c5e29e1f9dc40a7fbb090b 100644 (file)
@@ -740,8 +740,7 @@ PHP_FUNCTION(proc_open)
        if (bypass_shell) {
                newprocok = CreateProcess(NULL, command, &security, &security, TRUE, NORMAL_PRIORITY_CLASS, env.envp, cwd, &si, &pi);
        } else {
-               command_with_cmd = emalloc(command_len + sizeof(COMSPEC_9X) + 1 + sizeof(" /c "));
-               sprintf(command_with_cmd, "%s /c %s", GetVersion() < 0x80000000 ? COMSPEC_NT : COMSPEC_9X, command);
+               spprintf(&command_with_cmd, 0, "%s /c %s", GetVersion() < 0x80000000 ? COMSPEC_NT : COMSPEC_9X, command);
 
                newprocok = CreateProcess(NULL, command_with_cmd, &security, &security, TRUE, NORMAL_PRIORITY_CLASS, env.envp, cwd, &si, &pi);
 
index 093b8878f39cdc5751d0d9877ec50d3d0d3ffe5b..c80239cf712ead9e74ca9d8bd1993164a6e33de5 100644 (file)
@@ -1562,7 +1562,7 @@ PHPAPI int php_sscanf_internal(   char *string, char *format,
                                        *end = '\0';
                                        value = (int) (*fn)(buf, NULL, base);
                                        if ((flags & SCAN_UNSIGNED) && (value < 0)) {
-                                               sprintf(buf, "%u", value); /* INTL: ISO digit */
+                                               snprintf(buf, sizeof(buf), "%u", value); /* INTL: ISO digit */
                                                if (numVars && objIndex >= argCount) {
                                                        break;
                                                } else if (numVars) {
index e9276fc03629d4735d60c3fb5b55881cd3a765b2..b4398818ea399b8900afd600616e5d5fd66a0528 100644 (file)
@@ -4641,7 +4641,7 @@ char *php_strerror(int errnum)
                return(sys_errlist[errnum]);
        }
 
-       (void) sprintf(BG(str_ebuf), "Unknown error: %d", errnum);
+       (void) snprintf(BG(str_ebuf), sizeof(php_basic_globals.str_ebuf), "Unknown error: %d", errnum);
        return(BG(str_ebuf));
 }
 /* }}} */
index a10841e697fcfeda87cbcca3220aff503ca18bbe..77307ae2ccb79878217b48c0d6c5d66fddfd0a10 100644 (file)
@@ -68,8 +68,7 @@ PHP_FUNCTION(gettype)
                   int res_len;
 
                   res_len = sizeof("object of type ")-1 + Z_OBJCE_P(arg)->name_length;
-                  result = (char *) emalloc(res_len+1);
-                  sprintf(result, "object of type %s", Z_OBJCE_P(arg)->name);
+                  spprintf(&result, 0, "object of type %s", Z_OBJCE_P(arg)->name);
                   RETVAL_STRINGL(result, res_len, 0);
                   }
                 */
index ca65eb9533ad7245809fdfe5284574c5f3584c8c..b90f594ef0454c7f88932eb337fe80afe8ab4cfa 100644 (file)
@@ -1006,8 +1006,7 @@ PHP_FUNCTION(sybase_select_db)
        ZEND_FETCH_RESOURCE2(sybase_ptr, sybase_link *, sybase_link_index, id, "Sybase-Link", le_link, le_plink);
 
        convert_to_string_ex(db);
-       cmdbuf = (char *) emalloc(sizeof("use ")+Z_STRLEN_PP(db)+1);
-       sprintf(cmdbuf, "use %s", Z_STRVAL_PP(db)); /* SAFE */
+       spprintf(&cmdbuf, 0, "use %s", Z_STRVAL_PP(db)); /* SAFE */
 
        if (exec_cmd(sybase_ptr, cmdbuf)==FAILURE) {
                efree(cmdbuf);
@@ -2121,16 +2120,16 @@ PHP_MINFO_FUNCTION(sybase)
 
        php_info_print_table_start();
        php_info_print_table_header(2, "Sybase_CT Support", "enabled" );
-       sprintf(buf, "%ld", SybCtG(num_persistent));
+       snprintf(buf, sizeof(buf), "%ld", SybCtG(num_persistent));
        php_info_print_table_row(2, "Active Persistent Links", buf);
-       sprintf(buf, "%ld", SybCtG(num_links));
+       snprintf(buf, sizeof(buf), "%ld", SybCtG(num_links));
        php_info_print_table_row(2, "Active Links", buf);
-       sprintf(buf, "%ld", SybCtG(min_server_severity));
+       snprintf(buf, sizeof(buf), "%ld", SybCtG(min_server_severity));
        php_info_print_table_row(2, "Min server severity", buf);
-       sprintf(buf, "%ld", SybCtG(min_client_severity));
+       snprintf(buf, sizeof(buf), "%ld", SybCtG(min_client_severity));
        php_info_print_table_row(2, "Min client severity", buf);        
        php_info_print_table_row(2, "Application Name", SybCtG(appname));
-       sprintf(buf, "%ld", SybCtG(deadlock_retry_count));
+       snprintf(buf, sizeof(buf), "%ld", SybCtG(deadlock_retry_count));
        php_info_print_table_row(2, "Deadlock retry count", buf);
        php_info_print_table_end();
 
index 1dc21e0ca9ef287767cb4818457dd3b630a37f4d..1432f02442b55f15ef7553a0b0e21a1b6f06ee07 100644 (file)
@@ -285,7 +285,7 @@ PS_SERIALIZER_DECODE_FUNC(wddx)
 
                        switch (hash_type) {
                                case HASH_KEY_IS_LONG:
-                                       key_length = sprintf(tmp, "%ld", idx) + 1;
+                                       key_length = snprintf(tmp, sizeof(tmp), "%ld", idx) + 1;
                                        key = tmp;
                                        /* fallthru */
                                case HASH_KEY_IS_STRING:
@@ -410,7 +410,7 @@ static void php_wddx_serialize_boolean(wddx_packet *packet, zval *var)
 {
        char tmp_buf[WDDX_BUF_LEN];
 
-       sprintf(tmp_buf, WDDX_BOOLEAN, Z_LVAL_P(var) ? "true" : "false");
+       snprintf(tmp_buf, sizeof(tmp_buf), WDDX_BOOLEAN, Z_LVAL_P(var) ? "true" : "false");
        php_wddx_add_chunk(packet, tmp_buf);
 }
 /* }}} */
@@ -502,7 +502,7 @@ static void php_wddx_serialize_object(wddx_packet *packet, zval *obj)
                                zend_unmangle_property_name(key, key_len-1, &class_name, &prop_name);
                                php_wddx_serialize_var(packet, *ent, prop_name, strlen(prop_name)+1 TSRMLS_CC);
                        } else {
-                               key_len = sprintf(tmp_buf, "%ld", idx);
+                               key_len = snprintf(tmp_buf, sizeof(tmp_buf), "%ld", idx);
                                php_wddx_serialize_var(packet, *ent, tmp_buf, key_len TSRMLS_CC);
                        }
                }
@@ -557,7 +557,7 @@ static void php_wddx_serialize_array(wddx_packet *packet, zval *arr)
        if (is_struct) {
                php_wddx_add_chunk_static(packet, WDDX_STRUCT_S);
        } else {
-               sprintf(tmp_buf, WDDX_ARRAY_S, zend_hash_num_elements(target_hash));
+               snprintf(tmp_buf, sizeof(tmp_buf), WDDX_ARRAY_S, zend_hash_num_elements(target_hash));
                php_wddx_add_chunk(packet, tmp_buf);
        }
 
@@ -573,7 +573,7 @@ static void php_wddx_serialize_array(wddx_packet *packet, zval *arr)
                        if (ent_type == HASH_KEY_IS_STRING) {
                                php_wddx_serialize_var(packet, *ent, key, key_len TSRMLS_CC);
                        } else {
-                               key_len = sprintf(tmp_buf, "%ld", idx);
+                               key_len = snprintf(tmp_buf, sizeof(tmp_buf), "%ld", idx);
                                php_wddx_serialize_var(packet, *ent, tmp_buf, key_len TSRMLS_CC);
                        }
                } else
@@ -725,7 +725,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X
                        if (!strcmp(atts[i], EL_CHAR_CODE) && atts[++i] && atts[i][0]) {
                                char tmp_buf[2];
 
-                               sprintf(tmp_buf, "%c", (char)strtol(atts[i], NULL, 16));
+                               snprintf(tmp_buf, sizeof(tmp_buf), "%c", (char)strtol(atts[i], NULL, 16));
                                php_wddx_process_data(user_data, tmp_buf, strlen(tmp_buf));
                                break;
                        }
index d88737ef6b7e56d5bc076402231b02b2cbd77ffa..78a9ae0c9d94ec9613edf96b032d9fee94eecf31 100644 (file)
@@ -535,7 +535,7 @@ _zip_create_temp_output(struct zip *za, FILE **outp)
        return NULL;
     }
 
-    sprintf(temp, "%s.XXXXXX", za->zn);
+    snprintf(temp, sizeof(temp), "%s.XXXXXX", za->zn);
 
     if ((tfd=mkstemp(temp)) == -1) {
        _zip_error_set(&za->error, ZIP_ER_TMPOPEN, errno);
index 3df056805e06b0f09abfecf0b8ddef3c7689bf08..8e4ea377fb1ad826c634ad9cb51b608e2f63f5fd 100644 (file)
@@ -54,7 +54,7 @@ _zip_error_strerror(struct zip_error *err)
     _zip_error_fini(err);
 
     if (err->zip_err < 0 || err->zip_err >= _zip_nerr_str) {
-       sprintf(buf, "Unknown error %d", err->zip_err);
+       snprintf(buf, sizeof(buf), "Unknown error %d", err->zip_err);
        zs = NULL;
        ss = buf;
     }
@@ -78,11 +78,11 @@ _zip_error_strerror(struct zip_error *err)
     if (ss == NULL)
        return zs;
     else {
-       if ((s=(char *)malloc(strlen(ss)
-                             + (zs ? strlen(zs)+2 : 0) + 1)) == NULL)
+    int l = strlen(ss) + (zs ? strlen(zs)+2 : 0) + 1;
+       if ((s=(char *)malloc(l)) == NULL)
            return _zip_err_str[ZIP_ER_MEMORY];
        
-       sprintf(s, "%s%s%s",
+       snprintf(s, l, "%s%s%s",
                (zs ? zs : ""),
                (zs ? ": " : ""),
                ss);
index d6d175c51832c3a6285af09003ec0d974e407292..93020f78d386693cf8ef5203a21981abe7d0077e 100644 (file)
@@ -305,13 +305,10 @@ PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle TSRMLS_DC)
                        pw = getpwnam(user);
 #endif
                        if (pw && pw->pw_dir) {
-                               filename = emalloc(strlen(PG(user_dir)) + strlen(path_info) + strlen(pw->pw_dir) + 4);
-                               if (filename) {
-                                       sprintf(filename, "%s%c%s%c%s", pw->pw_dir, PHP_DIR_SEPARATOR,
+                               spprintf(&filename, 0, "%s%c%s%c%s", pw->pw_dir, PHP_DIR_SEPARATOR,
                                                                PG(user_dir), PHP_DIR_SEPARATOR, s+1); /* Safe */
-                                       STR_FREE(SG(request_info).path_translated);
-                                       SG(request_info).path_translated = filename;
-                               }
+                               STR_FREE(SG(request_info).path_translated);
+                               SG(request_info).path_translated = filename;
                        }
 #if defined(ZTS) && defined(HAVE_GETPWNAM_R) && defined(_SC_GETPW_R_SIZE_MAX)
                        efree(pwbuf);
index b7ae8a87ac684a89e8a1f69cdba1c1aa51c1da69..00774a688305b972c9dc79a85988faf88ddd250c 100644 (file)
@@ -438,8 +438,8 @@ int php_init_config(TSRMLS_D)
                /* Search php-%sapi-module-name%.ini file in search path */
                if (!fh.handle.fp) {
                        const char *fmt = "php-%s.ini";
-                       char *ini_fname = emalloc(strlen(fmt) + strlen(sapi_module.name));
-                       sprintf(ini_fname, fmt, sapi_module.name);
+                       char *ini_fname;
+                       spprintf(&ini_fname, 0, fmt, sapi_module.name);
                        fh.handle.fp = php_fopen_with_path(ini_fname, "r", php_ini_search_path, &php_ini_opened_path TSRMLS_CC);
                        efree(ini_fname);
                        if (fh.handle.fp) {
index f41b697e09bea3645b08a3fb2f6b8412cba9ae54..e9e866c10f9729629245bd9d7195e1ad7b94262e 100644 (file)
@@ -475,12 +475,9 @@ static multipart_buffer *multipart_buffer_new(char *boundary, int boundary_len)
        self->buffer = (char *) ecalloc(1, minsize + 1);
        self->bufsize = minsize;
 
-       self->boundary = (char *) ecalloc(1, boundary_len + 3); 
-       sprintf(self->boundary, "--%s", boundary);
+       spprintf(&self->boundary, 0, "--%s", boundary);
        
-       self->boundary_next = (char *) ecalloc(1, boundary_len + 4);
-       sprintf(self->boundary_next, "\n--%s", boundary);
-       self->boundary_next_len = boundary_len + 3;
+       self->boundary_next_len = spprintf(&self->boundary_next, 0, "\n--%s", boundary);
 
        self->buf_begin = self->buffer;
        self->bytes_in_buffer = 0;
@@ -1015,6 +1012,7 @@ static SAPI_POST_HANDLER_FUNC(rfc1867_post_handler_unicode)
        U_STRING_DECL(filename_key, "filename", 8);
        U_STRING_DECL(maxfilesize_key, "MAX_FILE_SIZE", 13);
        static zend_bool did_string_init = FALSE;
+       int llen = 0;
 
        if (SG(request_info).content_length > SG(post_max_size)) {
                sapi_module.sapi_error(E_WARNING, "POST Content-Length of %ld bytes exceeds the limit of %ld bytes", SG(request_info).content_length, SG(post_max_size));
@@ -1322,14 +1320,15 @@ var_done:
                        if (lbuf) {
                                efree(lbuf);
                        }
-                       lbuf = eumalloc(u_strlen(param) + MAX_SIZE_OF_INDEX + 1);
+                       llen = u_strlen(param) + MAX_SIZE_OF_INDEX + 1;
+                       lbuf = eumalloc(llen);
 
                        if (is_arr_upload) {
                                if (abuf) efree(abuf);
                                abuf = eustrndup(param, u_strlen(param)-array_len);
-                               u_sprintf(lbuf, "%S_name[%S]", abuf, array_index);
+                               u_snprintf(lbuf, llen, "%S_name[%S]", abuf, array_index);
                        } else {
-                               u_sprintf(lbuf, "%S_name", param);
+                               u_snprintf(lbuf, llen, "%S_name", param);
                        }
 
                        /* The \ check should technically be needed for win32 systems only where
@@ -1353,9 +1352,9 @@ var_done:
 
                        /* Add $foo[name] */
                        if (is_arr_upload) {
-                               u_sprintf(lbuf, "%S[name][%S]", abuf, array_index);
+                               u_snprintf(lbuf, llen, "%S[name][%S]", abuf, array_index);
                        } else {
-                               u_sprintf(lbuf, "%S[name]", param);
+                               u_snprintf(lbuf, llen, "%S[name]", param);
                        }
                        if (s && s > filename) {
                                register_u_http_post_files_variable(lbuf, s+1, u_strlen(s+1), http_post_files, 0 TSRMLS_CC);
@@ -1383,9 +1382,9 @@ var_done:
 
                        /* Add $foo_type */
                        if (is_arr_upload) {
-                               u_sprintf(lbuf, "%S_type[%S]", abuf, array_index);
+                               u_snprintf(lbuf, llen, "%S_type[%S]", abuf, array_index);
                        } else {
-                               u_sprintf(lbuf, "%S_type", param);
+                               u_snprintf(lbuf, llen, "%S_type", param);
                        }
                        if (!is_anonymous) {
                                safe_u_php_register_variable(lbuf, ucd, ucd_len, NULL, 0 TSRMLS_CC);
@@ -1393,9 +1392,9 @@ var_done:
 
                        /* Add $foo[type] */
                        if (is_arr_upload) {
-                               u_sprintf(lbuf, "%S[type][%S]", abuf, array_index);
+                               u_snprintf(lbuf, llen, "%S[type][%S]", abuf, array_index);
                        } else {
-                               u_sprintf(lbuf, "%S[type]", param);
+                               u_snprintf(lbuf, llen, "%S[type]", param);
                        }
                        register_u_http_post_files_variable(lbuf, ucd, ucd_len, http_post_files, 0 TSRMLS_CC);
 
@@ -1417,9 +1416,9 @@ var_done:
 
                        /* Add $foo[tmp_name] */
                        if (is_arr_upload) {
-                               u_sprintf(lbuf, "%S[tmp_name][%S]", abuf, array_index);
+                               u_snprintf(lbuf, llen, "%S[tmp_name][%S]", abuf, array_index);
                        } else {
-                               u_sprintf(lbuf, "%S[tmp_name]", param);
+                               u_snprintf(lbuf, llen, "%S[tmp_name]", param);
                        }
                        add_u_protected_variable(lbuf TSRMLS_CC);
                        register_u_http_post_files_variable(lbuf, temp_filename, u_strlen(temp_filename), http_post_files, 1 TSRMLS_CC);
@@ -1440,17 +1439,17 @@ var_done:
                                }       
 
                                if (is_arr_upload) {
-                                       u_sprintf(lbuf, "%S[error][%S]", abuf, array_index);
+                                       u_snprintf(lbuf, llen, "%S[error][%S]", abuf, array_index);
                                } else {
-                                       u_sprintf(lbuf, "%S[error]", param);
+                                       u_snprintf(lbuf, llen, "%S[error]", param);
                                }
                                register_u_http_post_files_variable_ex(lbuf, &error_type, http_post_files, 0 TSRMLS_CC);
 
                                /* Add $foo_size */
                                if (is_arr_upload) {
-                                       u_sprintf(lbuf, "%S_size[%S]", abuf, array_index);
+                                       u_snprintf(lbuf, llen, "%S_size[%S]", abuf, array_index);
                                } else {
-                                       u_sprintf(lbuf, "%S_size", param);
+                                       u_snprintf(lbuf, llen, "%S_size", param);
                                }
                                if (!is_anonymous) {
                                        safe_u_php_register_variable_ex(lbuf, &file_size, NULL, 0 TSRMLS_CC);
@@ -1458,9 +1457,9 @@ var_done:
 
                                /* Add $foo[size] */
                                if (is_arr_upload) {
-                                       u_sprintf(lbuf, "%S[size][%S]", abuf, array_index);
+                                       u_snprintf(lbuf, llen, "%S[size][%S]", abuf, array_index);
                                } else {
-                                       u_sprintf(lbuf, "%S[size]", param);
+                                       u_snprintf(lbuf, llen, "%S[size]", param);
                                }
                                register_u_http_post_files_variable_ex(lbuf, &file_size, http_post_files, 0 TSRMLS_CC);
                        }
@@ -1487,6 +1486,7 @@ static SAPI_POST_HANDLER_FUNC(rfc1867_post_handler_legacy)
        zval *array_ptr = (zval *) arg;
        int fd=-1;
        zend_llist header;
+       int llen = 0;
 
        if (SG(request_info).content_length > SG(post_max_size)) {
                sapi_module.sapi_error(E_WARNING, "POST Content-Length of %ld bytes exceeds the limit of %ld bytes", SG(request_info).content_length, SG(post_max_size));
@@ -1768,14 +1768,15 @@ static SAPI_POST_HANDLER_FUNC(rfc1867_post_handler_legacy)
                        if (lbuf) {
                                efree(lbuf);
                        }
-                       lbuf = (char *) emalloc(strlen(param) + MAX_SIZE_OF_INDEX + 1);
+                       llen = strlen(param) + MAX_SIZE_OF_INDEX + 1;
+                       lbuf = (char *) emalloc(llen);
 
                        if (is_arr_upload) {
                                if (abuf) efree(abuf);
                                abuf = estrndup(param, strlen(param)-array_len);
-                               sprintf(lbuf, "%s_name[%s]", abuf, array_index);
+                               snprintf(lbuf, llen, "%s_name[%s]", abuf, array_index);
                        } else {
-                               sprintf(lbuf, "%s_name", param);
+                               snprintf(lbuf, llen, "%s_name", param);
                        }
 
 #if HAVE_MBSTRING && !defined(COMPILE_DL_MBSTRING)
@@ -1824,9 +1825,9 @@ filedone:
 
                        /* Add $foo[name] */
                        if (is_arr_upload) {
-                               sprintf(lbuf, "%s[name][%s]", abuf, array_index);
+                               snprintf(lbuf, llen, "%s[name][%s]", abuf, array_index);
                        } else {
-                               sprintf(lbuf, "%s[name]", param);
+                               snprintf(lbuf, llen, "%s[name]", param);
                        }
                        if (s && s > filename) {
                                register_http_post_files_variable(lbuf, s+1, http_post_files, 0 TSRMLS_CC);
@@ -1849,9 +1850,9 @@ filedone:
 
                        /* Add $foo_type */
                        if (is_arr_upload) {
-                               sprintf(lbuf, "%s_type[%s]", abuf, array_index);
+                               snprintf(lbuf, llen, "%s_type[%s]", abuf, array_index);
                        } else {
-                               sprintf(lbuf, "%s_type", param);
+                               snprintf(lbuf, llen, "%s_type", param);
                        }
                        if (!is_anonymous) {
                                safe_php_register_variable(lbuf, cd, strlen(cd), NULL, 0 TSRMLS_CC);
@@ -1859,9 +1860,9 @@ filedone:
 
                        /* Add $foo[type] */
                        if (is_arr_upload) {
-                               sprintf(lbuf, "%s[type][%s]", abuf, array_index);
+                               snprintf(lbuf, llen, "%s[type][%s]", abuf, array_index);
                        } else {
-                               sprintf(lbuf, "%s[type]", param);
+                               snprintf(lbuf, llen, "%s[type]", param);
                        }
                        register_http_post_files_variable(lbuf, cd, http_post_files, 0 TSRMLS_CC);
 
@@ -1881,9 +1882,9 @@ filedone:
 
                        /* Add $foo[tmp_name] */
                        if (is_arr_upload) {
-                               sprintf(lbuf, "%s[tmp_name][%s]", abuf, array_index);
+                               snprintf(lbuf, llen, "%s[tmp_name][%s]", abuf, array_index);
                        } else {
-                               sprintf(lbuf, "%s[tmp_name]", param);
+                               snprintf(lbuf, llen, "%s[tmp_name]", param);
                        }
                        add_protected_variable(lbuf TSRMLS_CC);
                        register_http_post_files_variable(lbuf, temp_filename, http_post_files, 1 TSRMLS_CC);
@@ -1904,17 +1905,17 @@ filedone:
                                }       
 
                                if (is_arr_upload) {
-                                       sprintf(lbuf, "%s[error][%s]", abuf, array_index);
+                                       snprintf(lbuf, llen, "%s[error][%s]", abuf, array_index);
                                } else {
-                                       sprintf(lbuf, "%s[error]", param);
+                                       snprintf(lbuf, llen, "%s[error]", param);
                                }
                                register_http_post_files_variable_ex(lbuf, &error_type, http_post_files, 0 TSRMLS_CC);
 
                                /* Add $foo_size */
                                if (is_arr_upload) {
-                                       sprintf(lbuf, "%s_size[%s]", abuf, array_index);
+                                       snprintf(lbuf, llen, "%s_size[%s]", abuf, array_index);
                                } else {
-                                       sprintf(lbuf, "%s_size", param);
+                                       snprintf(lbuf, llen, "%s_size", param);
                                }
                                if (!is_anonymous) {
                                        safe_php_register_variable_ex(lbuf, &file_size, NULL, 0 TSRMLS_CC);
@@ -1922,9 +1923,9 @@ filedone:
 
                                /* Add $foo[size] */
                                if (is_arr_upload) {
-                                       sprintf(lbuf, "%s[size][%s]", abuf, array_index);
+                                       snprintf(lbuf, llen, "%s[size][%s]", abuf, array_index);
                                } else {
-                                       sprintf(lbuf, "%s[size]", param);
+                                       snprintf(lbuf, llen, "%s[size]", param);
                                }
                                register_http_post_files_variable_ex(lbuf, &file_size, http_post_files, 0 TSRMLS_CC);
                        }
index 893af5d8dbf617782562831dc4144ee5f5fcfd42..12d91f05298e8e0a1ade31fb917df1f3bb48568d 100644 (file)
@@ -638,7 +638,7 @@ static void sapi_nsapi_register_server_variables(zval *track_vars_array TSRMLS_D
                nsapi_free(value);
        }
 
-       sprintf(buf, "%d", conf_getglobals()->Vport);
+       snprintf(buf, sizeof(buf), "%d", conf_getglobals()->Vport);
        php_register_variable("SERVER_PORT", buf, track_vars_array TSRMLS_CC);
        php_register_variable("SERVER_NAME", conf_getglobals()->Vserver_hostname, track_vars_array TSRMLS_CC);
 
@@ -691,7 +691,7 @@ static void sapi_nsapi_register_server_variables(zval *track_vars_array TSRMLS_D
 
        /* special variables in error mode */
        if (rc->http_error) {
-               sprintf(buf, "%d", rc->http_error);
+               snprintf(buf, sizeof(buf), "%d", rc->http_error);
                php_register_variable("ERROR_TYPE", buf, track_vars_array TSRMLS_CC);
        }
 }
index 23ca6ab0ec87b90cf374d8fbccd18d7d7e94ea10..fd11bd8a42dd94c572f8ffb5dbbeb691484c4c25 100644 (file)
@@ -116,7 +116,7 @@ static int sapi_tux_send_headers(sapi_headers_struct *sapi_headers)
        status_line = malloc(30);
        
        /* safe sprintf use */
-       len = sprintf(status_line, "HTTP/1.1 %d NA\r\n", SG(sapi_headers).http_response_code);
+       len = snprintf(status_line, 30, "HTTP/1.1 %d NA\r\n", SG(sapi_headers).http_response_code);
        
        vec[0].iov_base = status_line;
        vec[0].iov_len = len;
@@ -195,7 +195,7 @@ static void sapi_tux_register_variables(zval *track_vars_array TSRMLS_DC)
        sapi_header_line ctr = {0};
        
        ctr.line = buf;
-       ctr.line_len = sprintf(buf, "Server: %s", TUXAPI_version);
+       ctr.line_len = snprintf(buf, sizeof(buf), "Server: %s", TUXAPI_version);
        sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC);
        
        php_register_variable("PHP_SELF", SG(request_info).request_uri, track_vars_array TSRMLS_CC);
@@ -215,7 +215,7 @@ static void sapi_tux_register_variables(zval *track_vars_array TSRMLS_DC)
                ADD_STRING("REMOTE_HOST");
        }
 
-       sprintf(buf, "%d", CGI_SERVER_PORT(TG(req)));
+       snprintf(buf, sizeof(buf), "%d", CGI_SERVER_PORT(TG(req)));
        ADD_STRING("SERVER_PORT");
 
 #if 0
@@ -241,7 +241,7 @@ static void sapi_tux_register_variables(zval *track_vars_array TSRMLS_DC)
 
 #if 0
        if (TG(hc)->contentlength != -1) {
-               sprintf(buf, "%ld", (long) TG(hc)->contentlength);
+               snprintf(buf, sizeof(buf), "%ld", (long) TG(hc)->contentlength);
                ADD_STRING("CONTENT_LENGTH");
        }
 #endif
index e96bf918718e76144dd0e3350e2437c14b718662..752bc381281ee6f37895c16a0ea783967b072d6e 100644 (file)
@@ -217,8 +217,7 @@ void UpdateIniFromRegistry(char *path TSRMLS_DC)
                        while (*cwd == '\\' || *cwd == '/') {
                                cwd++;
                        }
-                       path = (char *) emalloc(2+strlen(cwd)+1+strlen(orig_path)+1);
-                       sprintf(path, "%c\\%s\\%s", drive_letter, cwd, orig_path);
+                       spprintf(&path, 0, "%c\\%s\\%s", drive_letter, cwd, orig_path);
                        efree(orig_path);
                        orig_path = path;
                }
index 7e76a1b1bd89be28f72438c938697e8e5acb3970..60ef962d2bf39f862b2066f6d4beabfce6716111 100644 (file)
@@ -405,7 +405,7 @@ static int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char
                return (BAD_MSG_DESTINATION);
        */
 
-       sprintf(Buffer, "HELO %s\r\n", LocalHost);
+       snprintf(Buffer, sizeof(Buffer), "HELO %s\r\n", LocalHost);
 
        /* in the beggining of the dialog */
        /* attempt reconnect if the first Post fail */
@@ -699,16 +699,13 @@ static int PostHeader(char *RPath, char *Subject, char *mailTo, char *xheaders T
                }
        }
 
-       if (NULL == (header_buffer = ecalloc(1, MAIL_BUFFER_SIZE))) {
-               efree(headers_lc);
-               return OUT_OF_MEMORY;
-       }
+       header_buffer = ecalloc(1, MAIL_BUFFER_SIZE);
 
        if (!xheaders || !strstr(headers_lc, "date:")) {
                time_t tNow = time(NULL);
                char *dt = php_format_date("r", 1, tNow, 1 TSRMLS_CC);
 
-               sprintf(header_buffer, "Date: %s\r\n", dt);
+               snprintf(header_buffer, MAIL_BUFFER_SIZE, "Date: %s\r\n", dt);
                efree(dt);
        }