]> granicus.if.org Git - php/commitdiff
Fixed bug #76205 (PHP-FPM sporadic crash when running Infinitewp)
authorDmitry Stogov <dmitry@zend.com>
Thu, 3 May 2018 09:10:33 +0000 (12:10 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 3 May 2018 09:10:33 +0000 (12:10 +0300)
NEWS
ext/opcache/zend_file_cache.c

diff --git a/NEWS b/NEWS
index 02a936700874d5d458ae2de9f8273cda149540d2..bdcc11b75b34570c6e53cc90dec1c6f9a34f3cd4 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,7 @@ PHP                                                                        NEWS
     (mgorny)
 
 - Opcache:
+  . Fixed bug #76205 (PHP-FPM sporadic crash when running Infinitewp). (Dmitry)
   . Fixed bug #76275 (Assertion failure in file cache when unserializing empty
     try_catch_array). (Nikita)
   . Fixed bug #76281 (Opcache causes incorrect "undefined variable" errors).
index 23f2f9d0cb6d53dfbc12fdedafd33f6bccfee7f4..c66e5aeeca78e2c39cca19d9b4b59cf7e2709978 100644 (file)
@@ -526,14 +526,13 @@ static void zend_file_cache_serialize_prop_info(zval                     *zv,
                prop = Z_PTR_P(zv);
                UNSERIALIZE_PTR(prop);
 
-               if (prop->ce && !IS_SERIALIZED(prop->ce)) {
+               ZEND_ASSERT(prop->ce != NULL && prop->name != NULL);
+               if (!IS_SERIALIZED(prop->ce)) {
                        SERIALIZE_PTR(prop->ce);
-               }
-               if (prop->name && !IS_SERIALIZED(prop->name)) {
                        SERIALIZE_STR(prop->name);
-               }
-               if (prop->doc_comment && !IS_SERIALIZED(prop->doc_comment)) {
-                       SERIALIZE_STR(prop->doc_comment);
+                       if (prop->doc_comment) {
+                               SERIALIZE_STR(prop->doc_comment);
+                       }
                }
        }
 }
@@ -550,12 +549,15 @@ static void zend_file_cache_serialize_class_constant(zval                     *z
                c = Z_PTR_P(zv);
                UNSERIALIZE_PTR(c);
 
-               zend_file_cache_serialize_zval(&c->value, script, info, buf);
-               if (c->ce && !IS_SERIALIZED(c->ce)) {
+               ZEND_ASSERT(c->ce != NULL);
+               if (!IS_SERIALIZED(c->ce)) {
                        SERIALIZE_PTR(c->ce);
-               }
-               if (c->doc_comment && !IS_SERIALIZED(c->doc_comment)) {
-                       SERIALIZE_STR(c->doc_comment);
+
+                       zend_file_cache_serialize_zval(&c->value, script, info, buf);
+
+                       if (c->doc_comment) {
+                               SERIALIZE_STR(c->doc_comment);
+                       }
                }
        }
 }
@@ -1144,14 +1146,13 @@ static void zend_file_cache_unserialize_prop_info(zval                    *zv,
                UNSERIALIZE_PTR(Z_PTR_P(zv));
                prop = Z_PTR_P(zv);
 
-               if (prop->ce && !IS_UNSERIALIZED(prop->ce)) {
+               ZEND_ASSERT(prop->ce != NULL && prop->name != NULL);
+               if (!IS_UNSERIALIZED(prop->ce)) {
                        UNSERIALIZE_PTR(prop->ce);
-               }
-               if (prop->name && !IS_UNSERIALIZED(prop->name)) {
                        UNSERIALIZE_STR(prop->name);
-               }
-               if (prop->doc_comment && !IS_UNSERIALIZED(prop->doc_comment)) {
-                       UNSERIALIZE_STR(prop->doc_comment);
+                       if (prop->doc_comment) {
+                               UNSERIALIZE_STR(prop->doc_comment);
+                       }
                }
        }
 }
@@ -1166,12 +1167,15 @@ static void zend_file_cache_unserialize_class_constant(zval                    *
                UNSERIALIZE_PTR(Z_PTR_P(zv));
                c = Z_PTR_P(zv);
 
-               zend_file_cache_unserialize_zval(&c->value, script, buf);
-               if (c->ce && !IS_UNSERIALIZED(c->ce)) {
+               ZEND_ASSERT(c->ce != NULL);
+               if (!IS_UNSERIALIZED(c->ce)) {
                        UNSERIALIZE_PTR(c->ce);
-               }
-               if (c->doc_comment && !IS_UNSERIALIZED(c->doc_comment)) {
-                       UNSERIALIZE_STR(c->doc_comment);
+
+                       zend_file_cache_unserialize_zval(&c->value, script, buf);
+
+                       if (c->doc_comment) {
+                               UNSERIALIZE_STR(c->doc_comment);
+                       }
                }
        }
 }