@@ -1653,10 +1653,11 @@ PHP_FUNCTION(socket_recvfrom)
1653
1653
unsigned short protocol = ntohs (e -> h_proto );
1654
1654
unsigned char * payload = ((unsigned char * )e + sizeof (struct ethhdr ));
1655
1655
1656
- object_init_ex (arg2 , socket_ethinfo_ce );
1657
- zend_update_property_string (Z_OBJCE_P (arg2 ), Z_OBJ_P (arg2 ), ZEND_STRL ("macsrc" ), ether_ntoa ((struct ether_addr * )e -> h_source ));
1658
- zend_update_property_string (Z_OBJCE_P (arg2 ), Z_OBJ_P (arg2 ), ZEND_STRL ("macdst" ), ether_ntoa ((struct ether_addr * )e -> h_dest ));
1659
- zend_update_property_long (Z_OBJCE_P (arg2 ), Z_OBJ_P (arg2 ), ZEND_STRL ("ethprotocol" ), protocol );
1656
+ zval obj ;
1657
+ object_init_ex (& obj , socket_ethinfo_ce );
1658
+ zend_update_property_string (Z_OBJCE (obj ), Z_OBJ (obj ), ZEND_STRL ("macsrc" ), ether_ntoa ((struct ether_addr * )e -> h_source ));
1659
+ zend_update_property_string (Z_OBJCE (obj ), Z_OBJ (obj ), ZEND_STRL ("macdst" ), ether_ntoa ((struct ether_addr * )e -> h_dest ));
1660
+ zend_update_property_long (Z_OBJCE (obj ), Z_OBJ (obj ), ZEND_STRL ("ethprotocol" ), protocol );
1660
1661
array_init (& zpayload );
1661
1662
1662
1663
switch (protocol ) {
@@ -1711,10 +1712,14 @@ PHP_FUNCTION(socket_recvfrom)
1711
1712
RETURN_THROWS ();
1712
1713
}
1713
1714
1714
- zend_update_property (Z_OBJCE_P ( arg2 ), Z_OBJ_P ( arg2 ), ZEND_STRL ("payload" ), & zpayload );
1715
+ zend_update_property (Z_OBJCE ( obj ), Z_OBJ ( obj ), ZEND_STRL ("payload" ), & zpayload );
1715
1716
1717
+ ZEND_TRY_ASSIGN_REF_COPY (arg2 , & obj );
1716
1718
ZEND_TRY_ASSIGN_REF_STRING (arg5 , ifrname );
1717
- ZEND_TRY_ASSIGN_REF_LONG (arg6 , sll .sll_ifindex );
1719
+
1720
+ if (arg6 ) {
1721
+ ZEND_TRY_ASSIGN_REF_LONG (arg6 , sll .sll_ifindex );
1722
+ }
1718
1723
break ;
1719
1724
#endif
1720
1725
default :
0 commit comments