@@ -1102,7 +1102,11 @@ open_unix_domain_client_socket (const char *path, int dgram, libcrun_error_t *er
1102
1102
path = name_buf ;
1103
1103
}
1104
1104
1105
- strcpy (addr .sun_path , path );
1105
+ size_t path_len = strlen (path );
1106
+ if (path_len >= sizeof (addr .sun_path ))
1107
+ return crun_make_error (err , ENAMETOOLONG , "socket path too long: `%s`" , path );
1108
+
1109
+ memcpy (addr .sun_path , path , path_len + 1 );
1106
1110
addr .sun_family = AF_UNIX ;
1107
1111
ret = connect (fd , (struct sockaddr * ) & addr , sizeof (addr ));
1108
1112
if (UNLIKELY (ret < 0 ))
@@ -1129,7 +1133,12 @@ open_unix_domain_socket (const char *path, int dgram, libcrun_error_t *err)
1129
1133
get_proc_self_fd_path (name_buf , fd );
1130
1134
path = name_buf ;
1131
1135
}
1132
- strcpy (addr .sun_path , path );
1136
+
1137
+ size_t path_len = strlen (path );
1138
+ if (path_len >= sizeof (addr .sun_path ))
1139
+ return crun_make_error (err , ENAMETOOLONG , "socket path too long: `%s`" , path );
1140
+
1141
+ memcpy (addr .sun_path , path , path_len + 1 );
1133
1142
addr .sun_family = AF_UNIX ;
1134
1143
ret = bind (fd , (struct sockaddr * ) & addr , sizeof (addr ));
1135
1144
if (UNLIKELY (ret < 0 ))
0 commit comments