Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.

Commit ab30ce7

Browse files
grgustafJimmy Huang
authored andcommitted
[net] Call net_addr_ntop with correct arguments (#1815)
Also, replace some magic numbers with constant from Zephyr for maximum number of characters in an IP address string. Signed-off-by: Geoff Gustafson <[email protected]>
1 parent 33112bb commit ab30ce7

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

src/zjs_net.c

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,23 @@ static void zjs_copy_sockaddr(struct sockaddr *dst, struct sockaddr *src,
209209
}
210210
}
211211

212+
static void *zjs_get_inaddr(struct sockaddr *addr)
213+
{
214+
// requires: addr is a pointer to a valid sockaddr_in or sockaddr_in6 struct
215+
// effects: returns a void pointer to the in_addr or in6_addr within
216+
if (addr->sa_family == AF_INET) {
217+
struct sockaddr_in *addr4 = (struct sockaddr_in *)addr;
218+
return &addr4->sin_addr;
219+
}
220+
else if (addr->sa_family == AF_INET6) {
221+
struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)addr;
222+
return &addr6->sin6_addr;
223+
}
224+
else {
225+
ZJS_ASSERT(false, "invalid sockaddr struct");
226+
}
227+
}
228+
212229
static int match_timer(sock_handle_t *sock, struct k_timer *timer)
213230
{
214231
FTRACE("sock = %p, timer = %p\n", sock, timer);
@@ -820,14 +837,15 @@ static void add_socket_connection(jerry_value_t socket,
820837
}
821838

822839
sa_family_t family = net_context_get_family(new);
823-
char remote_ip[64];
824-
net_addr_ntop(family, (const void *)remote, remote_ip, 64);
840+
char remote_ip[INET6_ADDRSTRLEN];
841+
net_addr_ntop(family, zjs_get_inaddr(remote), remote_ip, INET6_ADDRSTRLEN);
825842

826843
zjs_obj_add_string(socket, "remoteAddress", remote_ip);
827844
zjs_obj_add_number(socket, "remotePort", server_h->port);
828845

829-
char local_ip[64];
830-
net_addr_ntop(family, (const void *)&server_h->local, local_ip, 64);
846+
char local_ip[INET6_ADDRSTRLEN];
847+
net_addr_ntop(family, zjs_get_inaddr(&server_h->local), local_ip,
848+
INET6_ADDRSTRLEN);
831849

832850
zjs_obj_add_string(socket, "localAddress", local_ip);
833851
zjs_obj_add_number(socket, "localPort", server_h->port);
@@ -940,15 +958,9 @@ static ZJS_DECL_FUNC(server_address)
940958
sa_family_t family = net_context_get_family(server_h->server_ctx);
941959
char ipstr[INET6_ADDRSTRLEN];
942960

943-
if (family == AF_INET6) {
944-
zjs_obj_add_string(info, "family", "IPv6");
945-
struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server_h->local;
946-
net_addr_ntop(family, &addr6->sin6_addr, ipstr, INET6_ADDRSTRLEN);
947-
} else {
948-
zjs_obj_add_string(info, "family", "IPv4");
949-
struct sockaddr_in *addr = (struct sockaddr_in *)&server_h->local;
950-
net_addr_ntop(family, &addr->sin_addr, ipstr, INET6_ADDRSTRLEN);
951-
}
961+
zjs_obj_add_string(info, "family", family == AF_INET6 ? "IPv6" : "IPv4");
962+
net_addr_ntop(family, zjs_get_inaddr(&server_h->local), ipstr,
963+
INET6_ADDRSTRLEN);
952964

953965
zjs_obj_add_string(info, "address", ipstr);
954966
return info;
@@ -1384,7 +1396,7 @@ static ZJS_DECL_FUNC(net_is_ip)
13841396
if (!jerry_value_is_string(argv[0]) || argc < 1) {
13851397
return jerry_create_number(0);
13861398
}
1387-
jerry_size_t size = 64;
1399+
jerry_size_t size = INET6_ADDRSTRLEN;
13881400
char ip[size];
13891401
zjs_copy_jstring(argv[0], ip, &size);
13901402
if (!size) {

0 commit comments

Comments
 (0)