Skip to content

Commit 3c0e8e4

Browse files
committed
address remaining remarks
1 parent 5e46273 commit 3c0e8e4

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

ext/sockets/sockets.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1462,7 +1462,7 @@ static zend_result php_socket_get_chunk(zend_string *dst, const zend_string *src
14621462
}
14631463

14641464
static zend_result php_socket_afpacket_add_tcp(unsigned char *ipdata, struct sockaddr_ll sll, char *ifrname, zend_string *recv_buf,
1465-
size_t slen, zval *szpayload, zval *zpayload, zval *obj, zval *arg2, zval *arg5, zval *arg6) {
1465+
size_t slen, zval *szpayload, zval *zpayload, zval *obj, zval *arg2, zval *arg5, zval *arg6, size_t headersize) {
14661466
struct tcphdr a;
14671467
ETH_SUB_CHECKLENGTH(a, "TCP");
14681468
struct tcphdr *tcp = &a;
@@ -1471,23 +1471,22 @@ static zend_result php_socket_afpacket_add_tcp(unsigned char *ipdata, struct soc
14711471
zend_update_property_long(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("srcPort"), ntohs(tcp->th_sport));
14721472
zend_update_property_long(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("dstPort"), ntohs(tcp->th_dport));
14731473
zend_update_property_long(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("headerSize"), sizeof(*tcp));
1474-
zend_update_property_stringl(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("rawPacket"), (char *)ipdata, sizeof(*tcp));
1474+
zend_update_property_stringl(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("rawPacket"), (char *)ipdata, headersize);
14751475
zend_update_property(Z_OBJCE_P(zpayload), Z_OBJ_P(zpayload), ZEND_STRL("payload"), szpayload);
14761476
Z_DELREF_P(szpayload);
14771477
return SUCCESS;
14781478
}
14791479

14801480
static zend_result php_socket_afpacket_add_udp(unsigned char *ipdata, struct sockaddr_ll sll, char *ifrname, zend_string *recv_buf,
1481-
size_t slen, zval *szpayload, zval *zpayload, zval *obj, zval *arg2, zval *arg5, zval *arg6) {
1481+
size_t slen, zval *szpayload, zval *zpayload, zval *obj, zval *arg2, zval *arg5, zval *arg6, size_t headersize) {
14821482
struct udphdr a;
14831483
ETH_SUB_CHECKLENGTH(a, "UDP");
14841484
struct udphdr *udp = &a;
14851485
memcpy(udp, ipdata, sizeof(*udp));
1486-
size_t headersize = sizeof(*udp);
14871486
object_init_ex(szpayload, udppacket_ce);
14881487
zend_update_property_long(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("srcPort"), ntohs(udp->uh_sport));
14891488
zend_update_property_long(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("dstPort"), ntohs(udp->uh_dport));
1490-
zend_update_property_long(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("headerSize"), headersize);
1489+
zend_update_property_long(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("headerSize"), sizeof(*udp));
14911490
zend_update_property_stringl(Z_OBJCE_P(szpayload), Z_OBJ_P(szpayload), ZEND_STRL("rawPacket"), (char *)ipdata, headersize);
14921491
zend_update_property(Z_OBJCE_P(zpayload), Z_OBJ_P(zpayload), ZEND_STRL("payload"), szpayload);
14931492
Z_DELREF_P(szpayload);
@@ -1775,7 +1774,7 @@ PHP_FUNCTION(socket_recvfrom)
17751774
size_t tlayer = ip->ihl * 4;
17761775
size_t totalip = ntohs(ip->tot_len);
17771776

1778-
if (tlayer < sizeof(*ip) || totalip < tlayer || totalip < slen) {
1777+
if (php_socket_get_chunk(dst_buf, recv_buf, tlayer, totalip)) {
17791778
ZVAL_NULL(&zpayload);
17801779
zend_update_property(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("payload"), &zpayload);
17811780
zend_update_property_stringl(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawPacket"), ZSTR_VAL(recv_buf), ZSTR_LEN(recv_buf));
@@ -1809,7 +1808,7 @@ PHP_FUNCTION(socket_recvfrom)
18091808
RETURN_THROWS();
18101809
}
18111810
unsigned char *ipdata = (unsigned char *)ZSTR_VAL(dst_buf);
1812-
if (php_socket_afpacket_add_tcp(ipdata, sll, ifrname, recv_buf, slen, &szpayload, &zpayload, &obj, arg2, arg5, arg6) == FAILURE) {
1811+
if (php_socket_afpacket_add_tcp(ipdata, sll, ifrname, recv_buf, slen, &szpayload, &zpayload, &obj, arg2, arg5, arg6, ZSTR_LEN(dst_buf)) == FAILURE) {
18131812
zend_string_release(dst_buf);
18141813
zend_string_efree(recv_buf);
18151814
RETURN_THROWS();
@@ -1824,7 +1823,7 @@ PHP_FUNCTION(socket_recvfrom)
18241823
RETURN_THROWS();
18251824
}
18261825
unsigned char *ipdata = (unsigned char *)ZSTR_VAL(dst_buf);
1827-
if (php_socket_afpacket_add_udp(ipdata, sll, ifrname, recv_buf, slen, &szpayload, &zpayload, &obj, arg2, arg5, arg6) == FAILURE) {
1826+
if (php_socket_afpacket_add_udp(ipdata, sll, ifrname, recv_buf, slen, &szpayload, &zpayload, &obj, arg2, arg5, arg6, ZSTR_LEN(dst_buf)) == FAILURE) {
18281827
zend_string_release(dst_buf);
18291828
zend_string_efree(recv_buf);
18301829
RETURN_THROWS();
@@ -1895,7 +1894,7 @@ PHP_FUNCTION(socket_recvfrom)
18951894
RETURN_THROWS();
18961895
}
18971896
unsigned char *ipdata = (unsigned char *)ZSTR_VAL(dst_buf);
1898-
if (php_socket_afpacket_add_tcp(ipdata, sll, ifrname, recv_buf, slen, &szpayload, &zpayload, &obj, arg2, arg5, arg6) == FAILURE) {
1897+
if (php_socket_afpacket_add_tcp(ipdata, sll, ifrname, recv_buf, slen, &szpayload, &zpayload, &obj, arg2, arg5, arg6, ZSTR_LEN(dst_buf)) == FAILURE) {
18991898
zend_string_release(dst_buf);
19001899
zend_string_efree(recv_buf);
19011900
RETURN_THROWS();
@@ -1910,7 +1909,7 @@ PHP_FUNCTION(socket_recvfrom)
19101909
RETURN_THROWS();
19111910
}
19121911
unsigned char *ipdata = (unsigned char *)ZSTR_VAL(dst_buf);
1913-
if (php_socket_afpacket_add_udp(ipdata, sll, ifrname, recv_buf, slen, &szpayload, &zpayload, &obj, arg2, arg5, arg6) == FAILURE) {
1912+
if (php_socket_afpacket_add_udp(ipdata, sll, ifrname, recv_buf, slen, &szpayload, &zpayload, &obj, arg2, arg5, arg6, ZSTR_LEN(dst_buf)) == FAILURE) {
19141913
zend_string_release(dst_buf);
19151914
zend_string_efree(recv_buf);
19161915
RETURN_THROWS();

0 commit comments

Comments
 (0)