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