Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:46450 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 74956 invoked from network); 16 Dec 2009 17:13:12 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 Dec 2009 17:13:12 -0000 Authentication-Results: pb1.pair.com header.from=jerome@loyet.net; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=jerome@loyet.net; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain loyet.net from 209.85.223.195 cause and error) X-PHP-List-Original-Sender: jerome@loyet.net X-Host-Fingerprint: 209.85.223.195 mail-iw0-f195.google.com Received: from [209.85.223.195] ([209.85.223.195:64307] helo=mail-iw0-f195.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id F9/80-13001-825192B4 for ; Wed, 16 Dec 2009 12:13:12 -0500 Received: by iwn33 with SMTP id 33so834589iwn.29 for ; Wed, 16 Dec 2009 09:13:10 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.25.199 with SMTP id a7mr107912ibc.51.1260983590003; Wed, 16 Dec 2009 09:13:10 -0800 (PST) Date: Wed, 16 Dec 2009 18:13:09 +0100 Message-ID: <3bea96c40912160913j62407981la3bc7f80099afe14@mail.gmail.com> To: php-dev Cc: Antony Dovgal Content-Type: multipart/mixed; boundary=001517741218f32596047adb9e9a Subject: [PATCH] bug when requesting a non existing file From: jerome@loyet.net (=?ISO-8859-1?B?Suly9G1lIExveWV0?=) --001517741218f32596047adb9e9a Content-Type: text/plain; charset=ISO-8859-1 There is a bug in fpm_main.c. After accepting a request, it's initialized and SG(request_info).path_translated must be set. If it's not set (NULL) nothing is done and the php_execute_script is called without having php_fopen_primary_script() called. It causes segfault: 1- call several time a non existant page (/noexistent.php) 2- call several time an existant page (/test.php) 3- call a non existant page (/noexistent.php) --> the child handling this request segfaults The solution is to return a 404 when SG(request_info).path_translated is NULL. By the way, it corrects a non desired feature (bug ?) as well. When calling a non existent value, it returns a 404 with the following message
Warning: Unknown: Filename cannot be empty in Unknown on line 0

Fatal error: Unknown: Failed opening required '' (include_path='.:/usr/local/lib/php') in Unknown on line 0
++ Jerome --001517741218f32596047adb9e9a Content-Type: text/plain; name="php-fpm.bug-path_translated.patch.txt" Content-Disposition: attachment; filename="php-fpm.bug-path_translated.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g3ad20ah0 SW5kZXg6IHNhcGkvZnBtL2ZwbS9mcG1fbWFpbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNhcGkvZnBtL2Zw bS9mcG1fbWFpbi5jCShy6XZpc2lvbiAyOTIyMTIpCisrKyBzYXBpL2ZwbS9mcG0vZnBtX21haW4u YwkoY29waWUgZGUgdHJhdmFpbCkKQEAgLTE3ODMsMjQgKzE3ODMsMzIgQEAKIAkJCQlyZXR1cm4g RkFJTFVSRTsKIAkJCX0KIAotCQkJaWYgKFNHKHJlcXVlc3RfaW5mbykucGF0aF90cmFuc2xhdGVk KSB7Ci0JCQkJaWYgKHBocF9mb3Blbl9wcmltYXJ5X3NjcmlwdCgmZmlsZV9oYW5kbGUgVFNSTUxT X0NDKSA9PSBGQUlMVVJFKSB7Ci0JCQkJCXplbmRfdHJ5IHsKLQkJCQkJCWlmIChlcnJubyA9PSBF QUNDRVMpIHsKLQkJCQkJCQlTRyhzYXBpX2hlYWRlcnMpLmh0dHBfcmVzcG9uc2VfY29kZSA9IDQw MzsKLQkJCQkJCQlQVVRTKCJBY2Nlc3MgZGVuaWVkLlxuIik7Ci0JCQkJCQl9IGVsc2UgewotCQkJ CQkJCVNHKHNhcGlfaGVhZGVycykuaHR0cF9yZXNwb25zZV9jb2RlID0gNDA0OwotCQkJCQkJCVBV VFMoIk5vIGlucHV0IGZpbGUgc3BlY2lmaWVkLlxuIik7Ci0JCQkJCQl9Ci0JCQkJCX0gemVuZF9j YXRjaCB7Ci0JCQkJCX0gemVuZF9lbmRfdHJ5KCk7Ci0JCQkJCS8qIHdlIHdhbnQgdG8gc2VydmUg bW9yZSByZXF1ZXN0cyBpZiB0aGlzIGlzIGZhc3RjZ2kKLQkJCQkJICogc28gY2xlYW51cCBhbmQg Y29udGludWUsIHJlcXVlc3Qgc2h1dGRvd24gaXMKLQkJCQkJICogaGFuZGxlZCBsYXRlciAqLwor CQkJLyogSWYgcGF0aF90cmFuc2xhdGVkIGlzIE5VTEwsIHRlcm1pbmF0ZSBoZXJlIHdpdGggYSA0 MDQgKi8KKwkJCWlmICghU0cocmVxdWVzdF9pbmZvKS5wYXRoX3RyYW5zbGF0ZWQpIHsKKwkJCQl6 ZW5kX3RyeSB7CisJCQkJCVNHKHNhcGlfaGVhZGVycykuaHR0cF9yZXNwb25zZV9jb2RlID0gNDA0 OworCQkJCX0gemVuZF9jYXRjaCB7CisJCQkJfSB6ZW5kX2VuZF90cnkoKTsKKwkJCQlnb3RvIGZh c3RjZ2lfcmVxdWVzdF9kb25lOworCQkJfQogCi0JCQkJCWdvdG8gZmFzdGNnaV9yZXF1ZXN0X2Rv bmU7Ci0JCQkJfQorCQkJLyogcGF0aF90cmFuc2xhdGVkIGV4aXN0cywgd2UgY2FuIGNvbnRpbnVl ICEgKi8KKwkJCWlmIChwaHBfZm9wZW5fcHJpbWFyeV9zY3JpcHQoJmZpbGVfaGFuZGxlIFRTUk1M U19DQykgPT0gRkFJTFVSRSkgeworCQkJCXplbmRfdHJ5IHsKKwkJCQkJaWYgKGVycm5vID09IEVB Q0NFUykgeworCQkJCQkJU0coc2FwaV9oZWFkZXJzKS5odHRwX3Jlc3BvbnNlX2NvZGUgPSA0MDM7 CisJCQkJCQlQVVRTKCJBY2Nlc3MgZGVuaWVkLlxuIik7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlT RyhzYXBpX2hlYWRlcnMpLmh0dHBfcmVzcG9uc2VfY29kZSA9IDQwNDsKKwkJCQkJCVBVVFMoIk5v IGlucHV0IGZpbGUgc3BlY2lmaWVkLlxuIik7CisJCQkJCX0KKwkJCQl9IHplbmRfY2F0Y2ggewor CQkJCX0gemVuZF9lbmRfdHJ5KCk7CisJCQkJLyogd2Ugd2FudCB0byBzZXJ2ZSBtb3JlIHJlcXVl c3RzIGlmIHRoaXMgaXMgZmFzdGNnaQorCQkJCSAqIHNvIGNsZWFudXAgYW5kIGNvbnRpbnVlLCBy ZXF1ZXN0IHNodXRkb3duIGlzCisJCQkJICogaGFuZGxlZCBsYXRlciAqLworCisJCQkJZ290byBm YXN0Y2dpX3JlcXVlc3RfZG9uZTsKIAkJCX0KIAogCQkJZnBtX3JlcXVlc3RfZXhlY3V0aW5nKCk7 Cg== --001517741218f32596047adb9e9a--