iliaa Sun Feb 18 18:08:22 2007 UTC
Modified files: (Branch: PHP_5_2)
/php-src/sapi/cgi cgi_main.c
Log:
Eliminate strcat() usage
Fixed handling of argv[] for GET
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.267.2.15.2.23&r2=1.267.2.15.2.24&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.23
php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.24
--- php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.23 Fri Feb 16 11:30:03 2007
+++ php-src/sapi/cgi/cgi_main.c Sun Feb 18 18:08:22 2007
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: cgi_main.c,v 1.267.2.15.2.23 2007/02/16 11:30:03 dmitry Exp $ */
+/* $Id: cgi_main.c,v 1.267.2.15.2.24 2007/02/18 18:08:22 iliaa Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -858,11 +858,11 @@
env_script_name = pt +
l;
/* PATH_TRANSATED =
DOCUMENT_ROOT + PATH_INFO */
- path_translated_len = l
+ strlen(env_path_info) + 2;
- path_translated = (char
*) emalloc(path_translated_len);
- *path_translated = 0;
-
strncat(path_translated, env_document_root, l);
- strcat(path_translated,
env_path_info);
+ path_translated_len = l
+ strlen(env_path_info);
+ path_translated = (char
*) emalloc(path_translated_len + 1);
+ memcpy(path_translated,
env_document_root, l);
+ memcpy(path_translated
+ l, env_path_info, (path_translated_len - l));
+
path_translated[path_translated_len] = '\0';
if
(orig_path_translated) {
_sapi_cgibin_putenv("ORIG_PATH_TRANSLATED", orig_path_translated TSRMLS_CC);
}
@@ -873,13 +873,13 @@
) {
/* PATH_TRANSATED =
PATH_TRANSATED - SCRIPT_NAME + PATH_INFO */
int ptlen = strlen(pt)
- strlen(env_script_name);
- int path_translated_len
= ptlen + strlen(env_path_info) + 2;
+ int path_translated_len
= ptlen + strlen(env_path_info);
char *path_translated =
NULL;
- path_translated = (char
*) emalloc(path_translated_len);
- *path_translated = 0;
-
strncat(path_translated, pt, ptlen);
- strcat(path_translated,
env_path_info);
+ path_translated = (char
*) emalloc(path_translated_len + 1);
+ memcpy(path_translated,
pt, ptlen);
+ memcpy(path_translated
+ ptlen, env_path_info, path_translated_len - ptlen);
+
path_translated[path_translated_len] = '\0';
if
(orig_path_translated) {
_sapi_cgibin_putenv("ORIG_PATH_TRANSLATED", orig_path_translated TSRMLS_CC);
}
@@ -1626,17 +1626,22 @@
test.php v1=test "v2=hello world!"
*/
if (!SG(request_info).query_string && argc >
php_optind) {
+ int slen = strlen(PG(arg_separator).input);
len = 0;
for (i = php_optind; i < argc; i++) {
- len += strlen(argv[i]) + 1;
+ if (i < (argc - 1)) {
+ len += strlen(argv[i]) + slen;
+ } else {
+ len += strlen(argv[i]);
+ }
}
- s = malloc(len + 1);
+ s = malloc(++len + 1);
*s = '\0'; /* we are
pretending it came from the environment */
- for (i = php_optind, len = 0; i < argc; i++) {
- strcat(s, argv[i]);
+ for (i = php_optind; i < argc; i++) {
+ strlcat(s, argv[i], len);
if (i < (argc - 1)) {
- strcat(s,
PG(arg_separator).input);
+ strlcat(s,
PG(arg_separator).input, len);
}
}
SG(request_info).query_string = s;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php