@@ -460,41 +460,76 @@ static php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper,
460
460
strip_header (user_headers , t , "content-type:" );
461
461
}
462
462
463
- if ((s = strstr (t , "user-agent:" )) &&
464
- (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
465
- * (s - 1 ) == '\t' || * (s - 1 ) == ' ' )) {
466
- have_header |= HTTP_HEADER_USER_AGENT ;
463
+ s = t ;
464
+ while ((s = strstr (s , "user-agent:" ))) {
465
+ if (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
466
+ * (s - 1 ) == '\t' || * (s - 1 ) == ' ' ) {
467
+ have_header |= HTTP_HEADER_USER_AGENT ;
468
+ break ;
469
+ }
470
+ s ++ ;
467
471
}
468
- if ((s = strstr (t , "host:" )) &&
469
- (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
470
- * (s - 1 ) == '\t' || * (s - 1 ) == ' ' )) {
471
- have_header |= HTTP_HEADER_HOST ;
472
+
473
+ s = t ;
474
+ while ((s = strstr (s , "host:" ))) {
475
+ if (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
476
+ * (s - 1 ) == '\t' || * (s - 1 ) == ' ' ) {
477
+ have_header |= HTTP_HEADER_HOST ;
478
+ break ;
479
+ }
480
+ s ++ ;
472
481
}
473
- if ((s = strstr (t , "from:" )) &&
474
- (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
475
- * (s - 1 ) == '\t' || * (s - 1 ) == ' ' )) {
476
- have_header |= HTTP_HEADER_FROM ;
482
+
483
+ s = t ;
484
+ while ((s = strstr (s , "from:" ))) {
485
+ if (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
486
+ * (s - 1 ) == '\t' || * (s - 1 ) == ' ' ) {
487
+ have_header |= HTTP_HEADER_FROM ;
488
+ break ;
477
489
}
478
- if ((s = strstr (t , "authorization:" )) &&
479
- (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
480
- * (s - 1 ) == '\t' || * (s - 1 ) == ' ' )) {
481
- have_header |= HTTP_HEADER_AUTH ;
490
+ s ++ ;
482
491
}
483
- if ((s = strstr (t , "content-length:" )) &&
484
- (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
485
- * (s - 1 ) == '\t' || * (s - 1 ) == ' ' )) {
486
- have_header |= HTTP_HEADER_CONTENT_LENGTH ;
492
+
493
+ s = t ;
494
+ while ((s = strstr (s , "authorization:" ))) {
495
+ if (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
496
+ * (s - 1 ) == '\t' || * (s - 1 ) == ' ' ) {
497
+ have_header |= HTTP_HEADER_AUTH ;
498
+ break ;
499
+ }
500
+ s ++ ;
487
501
}
488
- if ((s = strstr (t , "content-type:" )) &&
489
- (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
490
- * (s - 1 ) == '\t' || * (s - 1 ) == ' ' )) {
491
- have_header |= HTTP_HEADER_TYPE ;
502
+
503
+ s = t ;
504
+ while ((s = strstr (s , "content-length:" ))) {
505
+ if (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
506
+ * (s - 1 ) == '\t' || * (s - 1 ) == ' ' ) {
507
+ have_header |= HTTP_HEADER_CONTENT_LENGTH ;
508
+ break ;
509
+ }
510
+ s ++ ;
492
511
}
493
- if ((s = strstr (t , "connection:" )) &&
494
- (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
495
- * (s - 1 ) == '\t' || * (s - 1 ) == ' ' )) {
496
- have_header |= HTTP_HEADER_CONNECTION ;
512
+
513
+ s = t ;
514
+ while ((s = strstr (s , "content-type:" ))) {
515
+ if (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
516
+ * (s - 1 ) == '\t' || * (s - 1 ) == ' ' ) {
517
+ have_header |= HTTP_HEADER_TYPE ;
518
+ break ;
519
+ }
520
+ s ++ ;
497
521
}
522
+
523
+ s = t ;
524
+ while ((s = strstr (s , "connection:" ))) {
525
+ if (s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
526
+ * (s - 1 ) == '\t' || * (s - 1 ) == ' ' ) {
527
+ have_header |= HTTP_HEADER_CONNECTION ;
528
+ break ;
529
+ }
530
+ s ++ ;
531
+ }
532
+
498
533
/* remove Proxy-Authorization header */
499
534
if (use_proxy && use_ssl && (s = strstr (t , "proxy-authorization:" )) &&
500
535
(s == t || * (s - 1 ) == '\r' || * (s - 1 ) == '\n' ||
0 commit comments