Skip to content

Commit 04b9418

Browse files
Meziufincs
authored andcommitted
Use macro expansion for maximum sockaddr storage length rather than hardcoded value
1 parent 30dc651 commit 04b9418

9 files changed

Lines changed: 30 additions & 29 deletions

File tree

libctru/source/services/soc/soc_accept.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
77
{
88
int ret = 0;
9-
int tmp_addrlen = 0x1c;
9+
int tmp_addrlen = ADDR_STORAGE_LEN;
1010
int fd, dev;
1111
u32 *cmdbuf = getThreadCommandBuffer();
12-
u8 tmpaddr[0x1c];
12+
u8 tmpaddr[ADDR_STORAGE_LEN];
1313
u32 saved_threadstorage[2];
1414

1515
sockfd = soc_get_fd(sockfd);
@@ -27,7 +27,7 @@ int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
2727
fd = __alloc_handle(dev);
2828
if(fd < 0) return fd;
2929

30-
memset(tmpaddr, 0, 0x1c);
30+
memset(tmpaddr, 0, ADDR_STORAGE_LEN);
3131

3232
cmdbuf[0] = IPC_MakeHeader(0x4,2,2); // 0x40082
3333
cmdbuf[1] = (u32)sockfd;

libctru/source/services/soc/soc_bind.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
88
int ret = 0;
99
int tmp_addrlen = 0;
1010
u32 *cmdbuf = getThreadCommandBuffer();
11-
u8 tmpaddr[0x1c];
11+
u8 tmpaddr[ADDR_STORAGE_LEN];
1212

1313
sockfd = soc_get_fd(sockfd);
1414
if(sockfd < 0) {
1515
errno = -sockfd;
1616
return -1;
1717
}
1818

19-
memset(tmpaddr, 0, 0x1c);
19+
memset(tmpaddr, 0, ADDR_STORAGE_LEN);
2020

2121
if(addr->sa_family == AF_INET)
2222
tmp_addrlen = 8;
2323
else
24-
tmp_addrlen = 0x1c;
24+
tmp_addrlen = ADDR_STORAGE_LEN;
2525

2626
if(addrlen < tmp_addrlen) {
2727
errno = EINVAL;

libctru/source/services/soc/soc_common.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <3ds/services/soc.h>
1111

1212
#define SYNC_ERROR ENODEV
13+
#define ADDR_STORAGE_LEN sizeof(struct sockaddr_storage)
1314

1415
extern Handle SOCU_handle;
1516
extern Handle socMemhandle;

libctru/source/services/soc/soc_connect.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@ int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
88
int ret = 0;
99
int tmp_addrlen = 0;
1010
u32 *cmdbuf = getThreadCommandBuffer();
11-
u8 tmpaddr[0x1c];
11+
u8 tmpaddr[ADDR_STORAGE_LEN];
1212

1313
sockfd = soc_get_fd(sockfd);
1414
if(sockfd < 0) {
1515
errno = -sockfd;
1616
return -1;
1717
}
1818

19-
memset(tmpaddr, 0, 0x1c);
19+
memset(tmpaddr, 0, ADDR_STORAGE_LEN);
2020

2121
if(addr->sa_family == AF_INET)
2222
tmp_addrlen = 8;
2323
else
24-
tmp_addrlen = 0x1c;
24+
tmp_addrlen = ADDR_STORAGE_LEN;
2525

2626
if(addrlen < tmp_addrlen) {
2727
errno = EINVAL;

libctru/source/services/soc/soc_getnameinfo.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, socklen_
88
int i,tmp_addrlen;
99
u32 *cmdbuf = getThreadCommandBuffer();
1010
u32 saved_threadstorage[4];
11-
u8 tmpaddr[0x1c]; // sockaddr size for the kernel is 0x1C (sockaddr_in6?)
11+
u8 tmpaddr[ADDR_STORAGE_LEN]; // sockaddr size for the kernel is 0x1C (sockaddr_in6?)
1212

1313
if((host == NULL || hostlen == 0) && (serv == NULL || servlen == 0))
1414
{
@@ -18,7 +18,7 @@ int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, socklen_
1818
if(sa->sa_family == AF_INET)
1919
tmp_addrlen = 8;
2020
else
21-
tmp_addrlen = 0x1c;
21+
tmp_addrlen = ADDR_STORAGE_LEN;
2222

2323
if(salen < tmp_addrlen) {
2424
errno = EINVAL;

libctru/source/services/soc/soc_getpeername.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
88
int ret = 0;
99
u32 *cmdbuf = getThreadCommandBuffer();
1010
u32 saved_threadstorage[2];
11-
u8 tmpaddr[0x1c];
11+
u8 tmpaddr[ADDR_STORAGE_LEN];
1212

1313
sockfd = soc_get_fd(sockfd);
1414
if(sockfd < 0) {
@@ -18,14 +18,14 @@ int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
1818

1919
cmdbuf[0] = IPC_MakeHeader(0x18,2,2); // 0x180082
2020
cmdbuf[1] = (u32)sockfd;
21-
cmdbuf[2] = 0x1c;
21+
cmdbuf[2] = ADDR_STORAGE_LEN;
2222
cmdbuf[3] = IPC_Desc_CurProcessId();
2323

2424
u32 * staticbufs = getThreadStaticBuffers();
2525
saved_threadstorage[0] = staticbufs[0];
2626
saved_threadstorage[1] = staticbufs[1];
2727

28-
staticbufs[0] = IPC_Desc_StaticBuffer(0x1c,0);
28+
staticbufs[0] = IPC_Desc_StaticBuffer(ADDR_STORAGE_LEN,0);
2929
staticbufs[1] = (u32)tmpaddr;
3030

3131
ret = svcSendSyncRequest(SOCU_handle);

libctru/source/services/soc/soc_getsockname.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
88
int ret = 0;
99
u32 *cmdbuf = getThreadCommandBuffer();
1010
u32 saved_threadstorage[2];
11-
u8 tmpaddr[0x1c];
11+
u8 tmpaddr[ADDR_STORAGE_LEN];
1212

1313
sockfd = soc_get_fd(sockfd);
1414
if(sockfd < 0) {
@@ -18,14 +18,14 @@ int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
1818

1919
cmdbuf[0] = IPC_MakeHeader(0x17,2,2); // 0x170082
2020
cmdbuf[1] = (u32)sockfd;
21-
cmdbuf[2] = 0x1c;
21+
cmdbuf[2] = ADDR_STORAGE_LEN;
2222
cmdbuf[3] = IPC_Desc_CurProcessId();
2323

2424
u32 * staticbufs = getThreadStaticBuffers();
2525
saved_threadstorage[0] = staticbufs[0];
2626
saved_threadstorage[1] = staticbufs[1];
2727

28-
staticbufs[0] = IPC_Desc_StaticBuffer(0x1c,0);
28+
staticbufs[0] = IPC_Desc_StaticBuffer(ADDR_STORAGE_LEN,0);
2929
staticbufs[1] = (u32)tmpaddr;
3030

3131
ret = svcSendSyncRequest(SOCU_handle);

libctru/source/services/soc/soc_recvfrom.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ ssize_t socuipc_cmd7(int sockfd, void *buf, size_t len, int flags, struct sockad
88
int ret = 0;
99
u32 *cmdbuf = getThreadCommandBuffer();
1010
u32 tmp_addrlen = 0;
11-
u8 tmpaddr[0x1c];
11+
u8 tmpaddr[ADDR_STORAGE_LEN];
1212
u32 saved_threadstorage[2];
1313

14-
memset(tmpaddr, 0, 0x1c);
14+
memset(tmpaddr, 0, ADDR_STORAGE_LEN);
1515

1616
if(src_addr)
17-
tmp_addrlen = 0x1c;
17+
tmp_addrlen = ADDR_STORAGE_LEN;
1818

1919
cmdbuf[0] = IPC_MakeHeader(0x7,4,4); // 0x70104
2020
cmdbuf[1] = (u32)sockfd;
@@ -66,13 +66,13 @@ ssize_t socuipc_cmd8(int sockfd, void *buf, size_t len, int flags, struct sockad
6666
int ret = 0;
6767
u32 *cmdbuf = getThreadCommandBuffer();
6868
u32 tmp_addrlen = 0;
69-
u8 tmpaddr[0x1c];
69+
u8 tmpaddr[ADDR_STORAGE_LEN];
7070
u32 saved_threadstorage[4];
7171

7272
if(src_addr)
73-
tmp_addrlen = 0x1c;
73+
tmp_addrlen = ADDR_STORAGE_LEN;
7474

75-
memset(tmpaddr, 0, 0x1c);
75+
memset(tmpaddr, 0, ADDR_STORAGE_LEN);
7676

7777
cmdbuf[0] = 0x00080102;
7878
cmdbuf[1] = (u32)sockfd;

libctru/source/services/soc/soc_sendto.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ ssize_t socuipc_cmd9(int sockfd, const void *buf, size_t len, int flags, const s
88
int ret = 0;
99
u32 *cmdbuf = getThreadCommandBuffer();
1010
u32 tmp_addrlen = 0;
11-
u8 tmpaddr[0x1c];
11+
u8 tmpaddr[ADDR_STORAGE_LEN];
1212

13-
memset(tmpaddr, 0, 0x1c);
13+
memset(tmpaddr, 0, ADDR_STORAGE_LEN);
1414

1515
if(dest_addr) {
1616
if(dest_addr->sa_family == AF_INET)
1717
tmp_addrlen = 8;
1818
else
19-
tmp_addrlen = 0x1c;
19+
tmp_addrlen = ADDR_STORAGE_LEN;
2020

2121
if(addrlen < tmp_addrlen) {
2222
errno = EINVAL;
@@ -62,15 +62,15 @@ ssize_t socuipc_cmda(int sockfd, const void *buf, size_t len, int flags, const s
6262
int ret = 0;
6363
u32 *cmdbuf = getThreadCommandBuffer();
6464
u32 tmp_addrlen = 0;
65-
u8 tmpaddr[0x1c];
65+
u8 tmpaddr[ADDR_STORAGE_LEN];
6666

67-
memset(tmpaddr, 0, 0x1c);
67+
memset(tmpaddr, 0, ADDR_STORAGE_LEN);
6868

6969
if(dest_addr) {
7070
if(dest_addr->sa_family == AF_INET)
7171
tmp_addrlen = 8;
7272
else
73-
tmp_addrlen = 0x1c;
73+
tmp_addrlen = ADDR_STORAGE_LEN;
7474

7575
if(addrlen < tmp_addrlen) {
7676
errno = EINVAL;

0 commit comments

Comments
 (0)