socket: fix invalid unix paths being used

This commit is contained in:
Matheus
2026-04-06 21:42:00 -03:00
parent 2ebd08e949
commit 8535a207b7
2 changed files with 9 additions and 3 deletions
+4 -2
View File
@@ -127,9 +127,11 @@ typedef struct {
typedef unsigned socklen_t;
#define ABISOCKADDR_UN_MAX 108
typedef struct {
unsigned short type;
char addr[14];
char addr[ABISOCKADDR_UN_MAX];
} abisockaddr_t;
typedef struct {
@@ -140,7 +142,7 @@ typedef struct {
typedef struct {
uint16_t sun_family;
char sun_path[108];
char sun_path[ABISOCKADDR_UN_MAX];
} __attribute__((packed)) unaddr_t;
typedef struct {
+5 -1
View File
@@ -151,7 +151,11 @@ static inline int sock_convertaddress(sockaddr_t *sockaddr, abisockaddr_t *abiso
break;
case AF_LOCAL:
unaddr_t *unaddr = (unaddr_t *)abisockaddr;
strcpy(sockaddr->path, unaddr->sun_path);
size_t length = strnlen(unaddr->sun_path, ABISOCKADDR_UN_MAX);
if (length == ABISOCKADDR_UN_MAX)
return EINVAL;
memcpy(sockaddr->path, unaddr->sun_path, length + 1);
break;
default:
return EINVAL;